oyzzo: Voy a hacer un último intento de convencerte de que no te vayas porque me parece que tu decisión está basada en premisas falsas.
oyzzo escribió:Y ademas de eso, si la gente quiere programar facil y bonito en C++ me parece bien, pero yo no quiero soportar ese estilo de informatica de la ley del minimo esfuerzo. De ahí mi postura radical de no aceptar que se haga una capa superior en C++ a mi codigo.
C++ no se inventó para programar fácil y bonito, sino para programar cosas que hasta ese momento no eran factibles, es decir, C++ (junto con otros lenguajes OO) pretendía resolver la llamada "crisis del software". Esa crisis fue algo de lo que se empezó a hablar a principios de los 90. En aquella época se comercializaron procesadores mucho más rápidos y con soporte para multiusuario y multitarea simulada (80386, 80486, sólo por mencionar a Intel). Sin embargo la inmensa mayoría del software no aprovechaba los enormes recursos que ofrecía el hardware. Esto era debido a que ahora se disponía de una base hardware que permitía resolver problemas mucho más complejos pero no se disponía de las herramientas adecuadas para abordar dichos problemas, ya que resolverlos usando el paradigma modular requería un enorme esfuerzo que se hacía más y más grande con cada nuevo problema planteado. Para eso se inventaron los lenguajes OO, ya que facilitaban mucho el modelado de problemas complejos y con ellos se dió por resuelta la crisis del software.
Si estas pensando que cualquier cosa en C++ se puede hacer en C y que por tanto la crisis del software era una invención, te contesto desde ya que el que algo se pueda hacer "en teoría" no implica que sea factible "en la práctica", ya que hay que tener en cuenta el coste económico y de tiempo.
Por cierto, otra crisis se avecina: Cuando intel saque sus micros de 40 y 80 núcleos no va a haber ni Dios que pueda aprovechar eso. Para resolverlo se habla de hacer lenguajes OO que sólo admitan objetos inmutables, va a ser un cambio raro...
oyzzo escribió:Realbrucest, lo has visto bien.. si alguien puede programar de manera mas facil no se va a matar a usar las funciones mas chungas.
Si ese alguien tiene interés en su propio juego se molestará en aprender las funciones más chungas, suponiendo claro, que estas le aporten alguna ventaja. Para los novatos la interfaz C++ sería más asequible, un punto de partida. Cuando estuviesen más familiarizados con el motor ya podrían meterse en la interfaz C. No tiene nada de malo suavizar la curva de aprendizaje.
oyzzo escribió:Optimizar algoritmos es una cosa compleja y que necesita mucho trabajo(ademas de práctica y conocimientos), optimizarlo luego en ensamblador del procesador es tambien complejo y requiere horas y horas de pruebas y calculos(ademas de los conocimientos)...
Los algoritmos se optimizan sobre el papel, así que para este caso el lenguaje usado es lo de menos. En cuanto a "optimizar" usando ensamblador te diré que eso se hacía cuando los compiladores estaban en pañales y generaban código "funciona y da gracias". En estos años se han invertido millones en investigación, rara es la Universidad que no tiene a alguien trabajando en este campo, y los compiladores han mejorado mucho. Dudo que alguien sea capaz de escribir un código más rápido que el que genera el último Visual C. No se en que estado están los compiladores GNU, pero me imagino que también habrán avanzado y la situación será similar. Hoy día sólo tiene sentido usar ensamblador para acceder a partes del hardware inaccesibles desde tu lenguaje, que es, única y exclusivamente, para lo que se usa ensamblador en libogc. Por supuesto eso también se puede hacer desde C++.
Para terminar vuelvo a recordarte dos cosas:
1 - Hoy día los micros también han avanzado mucho y están optimizados para ejecutar muy rápido el tipo de código que generan los lenguajes OO.
2 - En un juego típico la CPU está la mayoría del tiempo bloqueada esperando a la GPU, así que el camino de la optimización pasa por planificar mejor el trabajo que se le envía a la GPU y no por ahorrarse un par de ciclos de procesador cambiando de lenguaje.
Espero que te pienses bien todo esto y que cambies de idea, o que compartas los motivos que te llevan a aferrarte a C, y así tal vez seamos nosotros los que cambiemos de idea.
technik: Me parece una gran idea hacer parte en C y parte en C++. De hecho hay tareas sencillas que avanzarían incluso más rápido hechas en C. Por ejemplo, yo he escrito PNGU en C en lugar de en mi adorado C++ porque es una librería lo bastante sencilla como para abordarla "de un vistazo". Si ahora quisiera hacer un visor de imágenes lo haría en C++, ya que la interfaz de usuario es un problema complejo. Eso no quitaría que desde el código C++ invocase a funciones de PNGU escritas en C. En resumen, yo optaría por hacer las partes sencillas y bien definidas del motor en C y las más complejas en C++. Estas últimas usarían internamente tanto partes sencillas en C como otras partes complejas en C++. Esto que propongo no es exactamente igual que hacerlo todo en C y luego añadir una capa C++, ¿Tú como lo ves?