Hola a todos! hace un par de horas que he conocido el foro, y me ha parecido fantástico, y se que seguramente me darán buenos consejos.
Les comento que quiero empezar a programar algunas cosas en 3d, comenzar desde entender un poco la matemática que hay detras, hasta poder hacer algun video juego sencillo al menos.
Ahora bien, hace un par de años comencé a programar, pero he aprendido en java, particularmente en J2me, y ya he realizado algunos juegos, pero nada muy complicado, son solo unos puzzles. Bien, mi intención ahora es pasar al mundo del 3d, que es lo que me interesa en realidad, pero me surge un gran problema... sigo en Java, o aprendo C o C++? el tema es que podría comenzar a aprender a implementar java3d, pero veo que no es para nada utilizado en el mercado de los videojuegos, aunque por otro lado, dado que solo se programar en java, creo que podría volcar lo que aprenda de java3d a C++.. pero estoy casi seguro que deben ser 2 mundos distintos!
Entonces, mi pregunta, para redondear un poco es: Quiero aprender a programar en 3D y solo conozco Java, que me recomiendan.. empezar desde cero con C o C++ y luego introducirme al 3D.., o empezar con java3d y luego volcar lo que aprenda a otros lenguages?
Espero mas o menos haberme explicado, y dado que soy un novato, sepan entender que si existen diferencias importantes, no las conozco y apreciaría que no se burlen :P saludos!
Por cierto... conocen algun libro o link donde pueda aprender C++ sin saber nada de C... y mejor aun, que se pueda ir aplicando al 3d asi mato 2 pajaros de un tiro :D?? :-[
Pero en cuanto a resultados,.. se pueden lograr cosas mucho mejores con openGL que con xna verdad?
Por otro lado, recien estoy empezando en esto, pero despues de leer varios hilos veo que ya estoy medio viejo para hacerlo ... :shit: .. parece que la mayoria empieza a antes de los 17.. y yo ya tengo 25 :( ... jeje.. sera cuestion de mucha voluntad :'( :'(
Cita de: Yotes en 20 de Mayo de 2009, 02:50:21 AM
Pero en cuanto a resultados,.. se pueden lograr cosas mucho mejores con openGL que con xna verdad?
Por otro lado, recien estoy empezando en esto, pero despues de leer varios hilos veo que ya estoy medio viejo para hacerlo ... :shit: .. parece que la mayoria empieza a antes de los 17.. y yo ya tengo 25 :( ... jeje.. sera cuestion de mucha voluntad :'( :'(
Los resultados dependen principalmente de ti, no de la herramienta. Y respecto a la edad, a mi no me parece tarde, pues no te quedan años por delante :p
Osea que no es tan mala idea intenar arrancar con java 3D, y luego pasar a c++ cuando esté mas avanzado?
Cita de: Yotes en 20 de Mayo de 2009, 04:53:31 PM
Osea que no es tan mala idea intenar arrancar con java 3D, y luego pasar a c++ cuando esté mas avanzado?
Me da igual lo que me digan y no quiero hacer un flame.
Yotes , olvidate de java y dale caña al C++, OpenGL y compila en varias plataformas, usa qmake-> QtCreator. Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas, es decir, que si compila con GCC y sistemas unix, tendras que hacer pocos cambios el día de mañana, sin entrar en detalles, utilizar C++, OpenGL y GCC, te servirá de forma lectiva y para tu curriculum.
Ahora bien, desarrolla el juego en windows, utiliza Visual Studio a ser posible, es más productivo. No obstante yo tengo el proyecto en Visual Studio y con QtCreator (qmake). Pronto mandaré a paseo al Visual Studio.
Un saludo y caña!
Cita de: Prompt en 21 de Mayo de 2009, 11:20:24 AM
Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas
Si te refieres a que gcc es la opción habitual en la escena homebrew, desde luego que sí. Para desarrollo profesional, no es el caso.
bueno, al final he quedado mas o menos en lo mismo :P, supongo que dependerá del tiempo que me haga.. si veo que me organizo con mi trabajo de seguro arrancaré con C++... entre otras cosas por el tema del curriculum como dice promt... sino, será cuestion de hacer varias cosillas en java, hasta que en realidad me pueda meter de lleno.
muchas gracias :D
C++ es el lenguaje estándar desde hace años (y pienso que lo seguirá siendo) para desarrollar videojuegos por su rendimiento y portabilidad entre plataformas y sistemas operativos. Así que harás buena inversión si aprendes su semántica, patrones de diseño, STL y peculiaridades de gestión de memoria... etc en este lenguaje. Yo que tú los conocimientos que tienes de Java los reciclaría para aprender C# .NET y XML, que también se usan bastante en la industria para hacer herramientas, pipelines o scripts.
Pienso que la tecnología al fin y al cabo es lo de menos, ya que dependiendo del sitio en el que curres usarán un motor u otro (y con diferentes capas de abstracción / bindings de más alto o más bajo nivel) así que cualquier API gráfica o motor te puede servir para aprender los "algoritmos" y "técnicas" que se usan. Si quieres desarrollar exclusivamente para Windows, aprende DirectX, o en su defecto OpenGL.
Cita de: davur en 21 de Mayo de 2009, 12:35:36 PM
Cita de: Prompt en 21 de Mayo de 2009, 11:20:24 AM
Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas
Si te refieres a que gcc es la opción habitual en la escena homebrew, desde luego que sí. Para desarrollo profesional, no es el caso.
Si es el caso.
Cita de: Yotes en 21 de Mayo de 2009, 03:19:54 PM
bueno, al final he quedado mas o menos en lo mismo :P, supongo que dependerá del tiempo que me haga.. si veo que me organizo con mi trabajo de seguro arrancaré con C++... entre otras cosas por el tema del curriculum como dice promt... sino, será cuestion de hacer varias cosillas en java, hasta que en realidad me pueda meter de lleno.
muchas gracias :D
Olvidate de Java. Como si quieres empezar con C# y XNA, al final acabarás usando C++ porque es lo que te dará rendimiento, que es lo que exigen la mayoría de las empresas. Has de pensar que hombre! hay mercado con C# y XNA, pero ya se ha tratado el tema en el foro, no cunde mucho. iPhone? -> C++, ventana en Obj-C por obligacion pero C++ y así con todo...
Yo te repito que no pierdas el tiempo con Java.
Cita de: Prompt en 21 de Mayo de 2009, 07:08:55 PM
Olvidate de Java. Como si quieres empezar con C# y XNA, al final acabarás usando C++ porque es lo que te dará rendimiento, que es lo que exigen la mayoría de las empresas. Has de pensar que hombre! hay mercado con C# y XNA, pero ya se ha tratado el tema en el foro, no cunde mucho. iPhone? -> C++, ventana en Obj-C por obligacion pero C++ y así con todo...
Yo te repito que no pierdas el tiempo con Java.
Con esta forma de ver las cosas lo suyo sería que aprendiera UnrealScript :p
Con C# por ejemplo también puedes hacer cosas usando Unity (que está muy chulo la verdad). Que empiece con lo que le resulte más fácil, lo importante es que vaya haciendo cosas poco a poco y si sabe Java, pues Java.
Cita de: Vicente en 21 de Mayo de 2009, 07:14:15 PM
Con esta forma de ver las cosas lo suyo sería que aprendiera UnrealScript :p
No tiene nada que ver, pq UnrealScript está montado encima de C++. Todo (normalmente) está montado encima de C, y para empezar sobre todo, hace falta una base, en mi opinion hay que empezar con C++ y darle caña desde 0 a toda la base.
Si no te hace falta aprender y buscas productividad, pues ya puedes plantearte usar un motor o usar C# con XNA y así tener un nivel medio de profundidad. Ya sabemos este tema, lo que te da de productividad te lo quita de rendimiento. Las compañias de videojuegos usan C++, todas por razones obvias.
Este hombre quiere que lo orienten y se le hace un flaco favor si se le dice que use Java, pq no le va a servir para comer el día de mañana. Al igual que XNA, si empieza por ahí yo no creo que sea un inicio coherente. Todo depende de a donde quieras llegar, si quieres hacerte un tetris y divertirte pues bueno, empieza con XNA haz 4 cosas y disfruta que el día que te contraten usarás o un motor o C++ o no te contrataran porque no tienes el perfil que buscan.
Cita de: Prompt en 21 de Mayo de 2009, 07:25:25 PM
No tiene nada que ver, pq UnrealScript está montado encima de C++. Todo (normalmente) está montado encima de C, y para empezar sobre todo, hace falta una base, en mi opinion hay que empezar con C++ y darle caña desde 0 a toda la base.
Si no te hace falta aprender y buscas productividad, pues ya puedes plantearte usar un motor o usar C# con XNA y así tener un nivel medio de profundidad. Ya sabemos este tema, lo que te da de productividad te lo quita de rendimiento. Las compañias de videojuegos usan C++, todas por razones obvias.
Este hombre quiere que lo orienten y se le hace un flaco favor si se le dice que use Java, pq no le va a servir para comer el día de mañana. Al igual que XNA, si empieza por ahí yo no creo que sea un inicio coherente. Todo depende de a donde quieras llegar, si quieres hacerte un tetris y divertirte pues bueno, empieza con XNA haz 4 cosas y disfruta que el día que te contraten usarás o un motor o C++ o no te contrataran porque no tienes el perfil que buscan.
Yotes habla de comenzar a aprender 3D (mates, iluminación, etc) y para eso Java (o C#) cumple perfectamente. Una vez que sepa como funciona, pues que aprenda C++, pero ponerse de golpe y porrazo con todo a mi no me parece una buena idea.
Recuerda que Yotes puso:
"Les comento que quiero empezar a programar algunas cosas en 3d, comenzar desde entender un poco la matemática que hay detras, hasta poder hacer algun video juego sencillo al menos."
El rollo de las empresas profesionales y el curro y tal está genial, pero de momento quiere aprender un poco, no cimentar su carrera profesional :p
Un saludo,
Vicente
Acabo de entrar al foro y veo que se ha puesto interesante el rollo, ^_^' justo tengo que ir a rendir un examen, pero ni bien vuelva, leeré todo. Muchas gracias por los aprotes!! ;) :D
Cita de: Prompt en 21 de Mayo de 2009, 07:05:08 PM
Cita de: davur en 21 de Mayo de 2009, 12:35:36 PM
Cita de: Prompt en 21 de Mayo de 2009, 11:20:24 AM
Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas
Si te refieres a que gcc es la opción habitual en la escena homebrew, desde luego que sí. Para desarrollo profesional, no es el caso.
Si es el caso.
Xbox utiliza Visual Studio.
PS3 utiliza un compilador propio.
Wii utiliza CodeWarrior.
Nintendo DS utiliza CodeWarrior.
Luego, no sabes de lo que hablas.
Retomando el tema del hilo, no empieces con C++. Que sea el lenguaje predominante en la industria no quiere decir que sea una opción recomendable para comenzar. No lo es. No hagas caso a todos aquellos que te recomienden C++ como punto de partida: no saben lo que dicen.
Es mucho más saludable comenzar con Python o C# (por ejemplo). Ya tendrás tiempo de pelearte con la complejidad de C++ cuando tengas una buena base en algún lenguaje más accesible. Añadir el factor lenguaje a la cantidad de cosas con las que puedes tener dificultades al comenzar no es una decisión adecuada.
Bueno, en fin... parece que se armará una pelea importante.. y al final se me hará dificil decidir :D.. de cualquier manera, no he visto muchos libros o tutoriales de C# orientados a videojuegos, pero quizá ha sido solo porque no sabía que era un lenguage que se utilizava a tal fin. Bueno, será cuestion de que releve un poco de info y al primer tutorial que me enseñe a dibujar un triangulo, hacerlo rotar, y empezar a meter mano, supongo que será el lenguage que seguire.. pero creo que si iré descartando java de momento. (si conocen algun tuto por el estilo que pueda empezar a hacer algo, les agradeceria)
en fin, saludos y muchas gracias!!
Cita de: davur en 22 de Mayo de 2009, 12:25:17 AM
Cita de: Prompt en 21 de Mayo de 2009, 07:05:08 PM
Cita de: davur en 21 de Mayo de 2009, 12:35:36 PM
Cita de: Prompt en 21 de Mayo de 2009, 11:20:24 AM
Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas
Si te refieres a que gcc es la opción habitual en la escena homebrew, desde luego que sí. Para desarrollo profesional, no es el caso.
Si es el caso.
Xbox utiliza Visual Studio.
PS3 utiliza un compilador propio.
Wii utiliza CodeWarrior.
Nintendo DS utiliza CodeWarrior.
Luego, no sabes de lo que hablas.
Codewarrior y Visual Studio son IDEs (integrated development environment ) que pueden usar variantes de gcc o directamente gcc para compilar, dado que el lenguaje usando tanto de DS como de Wii es C++. PS3 tb utiliza C++ y 360. La única excepción que conozco es 360 vía XNA porque usa C#. Bueno, y casos como iPhone (que usa objective C pero tb puede usarse C++) o los teléfonos Android y demás o cualquiera que soporte Java.
Cita de: davur
Luego, no sabes de lo que hablas.
En cuanto al tema empieza por C++. Es el más complicado y te costará aprender pero una vez lo domines el resto será pan comido. El camino a la inversa sólo te puede llevar al desastre y a tener que pasar 2 veces por el mismo camino. Yo aprendí C++ y cuando me pasé a C# y Java me parecieron lenguajes para aficionados.
Cita de: Hans en 22 de Mayo de 2009, 12:43:06 PM
Cita de: davur en 22 de Mayo de 2009, 12:25:17 AM
Cita de: Prompt en 21 de Mayo de 2009, 07:05:08 PM
Cita de: davur en 21 de Mayo de 2009, 12:35:36 PM
Cita de: Prompt en 21 de Mayo de 2009, 11:20:24 AM
Por qué? pues los compiladores como GCC y sus variantes de C++ son usados por videoconsolas
Si te refieres a que gcc es la opción habitual en la escena homebrew, desde luego que sí. Para desarrollo profesional, no es el caso.
Si es el caso.
Xbox utiliza Visual Studio.
PS3 utiliza un compilador propio.
Wii utiliza CodeWarrior.
Nintendo DS utiliza CodeWarrior.
Luego, no sabes de lo que hablas.
Codewarrior y Visual Studio son IDEs (integrated development environment ) que pueden usar variantes de gcc o directamente gcc para compilar, dado que el lenguaje usando tanto de DS como de Wii es C++. PS3 tb utiliza C++ y 360. La única excepción que conozco es 360 vía XNA porque usa C#. Bueno, y casos como iPhone (que usa objective C pero tb puede usarse C++) o los teléfonos Android y demás o cualquiera que soporte Java.
Cita de: davur
Luego, no sabes de lo que hablas.
Es alarmante ver cómo se lanzan afirmaciones equívocas de manera tan gratuita.
Evidentemente, CodeWarrior y Visual Studio son IDEs. Con sus respectivos compiladores por defecto, CodeWarrior y Visual C++.
Estamos hablando de desarrollo profesional. Voy a repetirlo por si no ha quedado lo suficientemente claro:
Xbox utiliza Visual C++.
Wii y DS utilizan CodeWarrior.
PS3 utiliza un compilador propio de Sony.
Ésa es la realidad actual de las cosas, que no es discutible. Si tú, libremente, decides utilizar g++ en lugar de las herramientas estándar (y las únicas que tienen soporte oficial, dicho sea de paso), es una cosa (¡buena suerte!). Pero de ahí a decir que g++ es "el compilador que utilizan las videconsolas" hay un mundo. Esa afirmación es simplemente una falacia.
Y por cierto, cuando dices que "tal consola utiliza C++" convendría que matizaras a qué te refieres exactamente. Algunos de los SDKs de las consolas mencionadas están escritos en C puro.
Cita de: Hans en 22 de Mayo de 2009, 12:47:39 PM
En cuanto al tema empieza por C++. Es el más complicado y te costará aprender pero una vez lo domines el resto será pan comido. El camino a la inversa sólo te puede llevar al desastre y a tener que pasar 2 veces por el mismo camino. Yo aprendí C++ y cuando me pasé a C# y Java me parecieron lenguajes para aficionados.
Just keep repeating: C# is not Java. C# is not C++.
http://reedcopsey.com/?p=39
Cita de: Vicente en 22 de Mayo de 2009, 01:01:59 PM
Cita de: Hans en 22 de Mayo de 2009, 12:47:39 PM
En cuanto al tema empieza por C++. Es el más complicado y te costará aprender pero una vez lo domines el resto será pan comido. El camino a la inversa sólo te puede llevar al desastre y a tener que pasar 2 veces por el mismo camino. Yo aprendí C++ y cuando me pasé a C# y Java me parecieron lenguajes para aficionados.
Just keep repeating: C# is not Java. C# is not C++.
http://reedcopsey.com/?p=39
Efectivamente.
Y, por curiosidad, ¿en qué te basas para decir que C# y Java te parecen lenguajes para aficionados?
Creo que no entiendes que cuando se habla de variantes de gcc (cosa que hemos repetido por triplicado) no nos referimos a que el compilador de visual sea código creado a partir de gcc, sino que son compiladores similares copn funcionalidades similares y uso casi idéntico debido a que intentan seguir el mismo standar. Y no sirve de nada separarlos como si fueran cosas completamente distintas ni que supongan grandes (ni medianos) cambios a la hora de programar. Al menos yo me refiero a eso y no mezclo ides con compiladores, ni con lenguajes, cosas que no tienen ninguna relación explícita entre sí y que tú sí has mezclado.
En cuanto a que los compiladores están escritos en C creo que es lo lógico cuando la mayoría de SOs tb lo están (junto a asm, por supuesto), exceptuando cositas como Windows, que usa C++ si no recuerdo mal.
Cita de: Yotes en 22 de Mayo de 2009, 04:01:52 AM
Bueno, en fin... parece que se armará una pelea importante.. y al final se me hará dificil decidir :D.. de cualquier manera, no he visto muchos libros o tutoriales de C# orientados a videojuegos, pero quizá ha sido solo porque no sabía que era un lenguage que se utilizava a tal fin. Bueno, será cuestion de que releve un poco de info y al primer tutorial que me enseñe a dibujar un triangulo, hacerlo rotar, y empezar a meter mano, supongo que será el lenguage que seguire.. pero creo que si iré descartando java de momento. (si conocen algun tuto por el estilo que pueda empezar a hacer algo, les agradeceria)
en fin, saludos y muchas gracias!!
Si quieres usar C# y XNA, ahí van unos cuantos enlaces que te pueden ser útiles. Primero, para preguntar dudas puedes usar este foro o puedes preguntar en el foro de los dotNetClubs:
http://www.dotnetclubs.com/forums/
http://www.dotnetclubs.com/forums/44.aspx
Ejemplos y tutoriales en castellano puedes encontrarlos en:
http://xnacommunity.codeplex.com/
Y en inglés:
http://creators.xna.com/es-ES/
http://www.riemers.net/
Otra alternativa es usar SlimDX (en vez de XNA) que es un wrapper en .NET para DX. La instalación por defecto trae varios tutoriales muy sencillos de como pintar un triángulo y cosas así. Esta es la web de SlimDX:
http://slimdx.org/
Un saludo!
Vicente
Cita de: davur en 22 de Mayo de 2009, 01:06:38 PM
Cita de: Vicente en 22 de Mayo de 2009, 01:01:59 PM
Cita de: Hans en 22 de Mayo de 2009, 12:47:39 PM
En cuanto al tema empieza por C++. Es el más complicado y te costará aprender pero una vez lo domines el resto será pan comido. El camino a la inversa sólo te puede llevar al desastre y a tener que pasar 2 veces por el mismo camino. Yo aprendí C++ y cuando me pasé a C# y Java me parecieron lenguajes para aficionados.
Just keep repeating: C# is not Java. C# is not C++.
http://reedcopsey.com/?p=39
Efectivamente.
Y, por curiosidad, ¿en qué te basas para decir que C# y Java te parecen lenguajes para aficionados?
Me baso en que Java fue creado para ser un lenguaje orientado a gente que no tenía ni idea y luego lo han ido extendiendo malamente. Y C# es el intento de crear un Java por parte de M$, con todas sus cosas buenas y malas (aunque C# para mi gusto se trajina a Java salvando el tema de la multiplataformidad). Java es un lenguaje con mil carencias.
Vayamos por partes.
Cita de: Hans en 22 de Mayo de 2009, 01:07:42 PM
Creo que no entiendes que cuando se habla de variantes de gcc (cosa que hemos repetido por triplicado) no nos referimos a que el compilador de visual sea código creado a partir de gcc, sino que son compiladores similares copn funcionalidades similares y uso casi idéntico debido a que intentan seguir el mismo standar.
¿Has trabajado alguna vez (oficialmente) con algunas de las consolas mencionadas? Imagino que no, por tus respuestas anteriores.
Cuando alguien habla de variantes de gcc, habla de ramificaciones para lenguajes particulares de la familia de compiladores que es gcc. No de "compiladores similares con funcionalidades similares y uso casi idéntico debido a que intentan seguir el mismo estándar", lo cual aparte de no tener sentido (porque todos los compiladores de C++ serían variantes de g++ si tomas ese criterio, lo cual es rídiculo) es falso (¿has comparado las ABI de g++ y CodeWarrior, por ejemplo?).
Cita de: Hans en 22 de Mayo de 2009, 01:07:42 PM
Y no sirve de nada separarlos como si fueran cosas completamente distintas ni que supongan grandes (ni medianos) cambios a la hora de programar.
De nuevo, no sabes de lo que hablas. Para desarrollar te interesa (y mucho) qué compilador estás utilizando. Para poder ser consciente de ciertas garantías al respecto de la generación del código (y no serlo de otras), principalmente.
Cita de: Hans en 22 de Mayo de 2009, 01:07:42 PM
Al menos yo me refiero a eso y no mezclo ides con compiladores, ni con lenguajes, cosas que no tienen ninguna relación explícita entre sí y que tú sí has mezclado.
A buen entendedor...
Cita de: Hans en 22 de Mayo de 2009, 01:07:42 PM
En cuanto a que los compiladores están escritos en C creo que es lo lógico cuando la mayoría de SOs tb lo están (junto a asm, por supuesto), exceptuando cositas como Windows, que usa C++ si no recuerdo mal.
He escrito SDKs, no compiladores. ¿Decías de mezclar?
Cita de: Hans en 22 de Mayo de 2009, 01:10:42 PM
Cita de: davur en 22 de Mayo de 2009, 01:06:38 PM
Cita de: Vicente en 22 de Mayo de 2009, 01:01:59 PM
Cita de: Hans en 22 de Mayo de 2009, 12:47:39 PM
En cuanto al tema empieza por C++. Es el más complicado y te costará aprender pero una vez lo domines el resto será pan comido. El camino a la inversa sólo te puede llevar al desastre y a tener que pasar 2 veces por el mismo camino. Yo aprendí C++ y cuando me pasé a C# y Java me parecieron lenguajes para aficionados.
Just keep repeating: C# is not Java. C# is not C++.
http://reedcopsey.com/?p=39
Efectivamente.
Y, por curiosidad, ¿en qué te basas para decir que C# y Java te parecen lenguajes para aficionados?
Me baso en que Java fue creado para ser un lenguaje orientado a gente que no tenía ni idea y luego lo han ido extendiendo malamente. Y C# es el intento de crear un Java por parte de M$, con todas sus cosas buenas y malas (aunque C# para mi gusto se trajina a Java salvando el tema de la multiplataformidad). Java es un lenguaje con mil carencias.
Una explicación muy argumentada, claro que sí. Y por cierto, se escribe Microsoft.
Este tipo de respuestas son la demostración de que contra ciertas cosas no se puede luchar.
Mira, te he explicado lo que quiero decir pero sigues hablando con el mismo tono arrogante y despreciativo que no están ni leyendo lo que te estoy diciendo. Para aburrirme me basto yo solito, piensa y lee lo que quieras, me la come muy mucho tu opinión. Y me parece que no soy el único xD
¡Dicen que la verdad duele! :)
Pues debes de tener el culo al rojo vivo xD
CitarJava es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
CitarC# (pronunciado "ci sharp") es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA e ISO.
Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre ellos Delphi).
http://es.wikipedia.org/wiki/C_sharp
Yo no invento. Java es un lenguaje creado para simplificar la vida a la gente que no tiene ni idea cuando buscan aprender a programar. Y C# es el Java de M$. Si aprendes C++ (que nadie dice que sea la panacea, tiene cosas que merecen tortura de lo mal pensadas que están) aprendes todos los demás. La analogía más fácil es "si aprendes a conducir un Ferrari sabrás conducir un Ford Fiesta".
Cita de: Hans en 22 de Mayo de 2009, 02:44:46 PM
Yo no invento. Java es un lenguaje creado para simplificar la vida a la gente que no tiene ni idea cuando buscan aprender a programar. Y C# es el Java de M$. Si aprendes C++ (que nadie dice que sea la panacea, tiene cosas que merecen tortura de lo mal pensadas que están) aprendes todos los demás. La analogía más fácil es "si aprendes a conducir un Ferrari sabrás conducir un Ford Fiesta".
Un apunte: el Java de Microsoft se llama J++ o J# :p
¿Eso no estaba abandonado? Además salió años después de C#.
A partir de esto:
- Java tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores.
deducir esto otro:
- Java es un lenguaje creado para simplificar la vida a la gente que no tiene ni idea cuando buscan aprender a programar.
indica que tu lógica es muy obtusa.
Cita de: Hans en 22 de Mayo de 2009, 02:44:46 PM
Si aprendes C++ (que nadie dice que sea la panacea, tiene cosas que merecen tortura de lo mal pensadas que están) aprendes todos los demás. La analogía más fácil es "si aprendes a conducir un Ferrari sabrás conducir un Ford Fiesta".
Salvo que la analogía es incorrecta.
Es rotundamente falso que C++ te otorgue mágicamente una mayor base para aprender otros lenguajes. Y esto se suele confundir con la sensación de alivio al pasar de C++ a un lenguaje más placentero.
¿Crees que ser un experto en C++ te va a dar una mayor ventaja a la hora de aprender un lenguaje radicalmente diferente en su concepción como Lisp o Haskell?
Yotes, al final tomarás la decisión que personalmente consideres más adecuada. Ten en cuenta que limitarse al dominio de un único lenguaje (el que sea) no es beneficioso ni útil. Plantéate dominar dos, tres, cuatro lenguajes muy diferentes entre sí. Tener la mente abierta a maneras diferentes de pensar nunca es perder el tiempo. En este mismo hilo puedes ver lo que pasa cuando alguien se cierra en banda.
Y teniendo en cuenta eso, no empieces con C++. ¿Por qué este empeño en no hacerlo? Porque C++ es especialmente bueno en esconder los problemas que realmente son importantes cuando uno empieza. Aprende los fundamentos, la manera de razonar sobre problemas y expresar soluciones en código en un lenguaje accesible, que sea gentil con tus errores, que te permita ciclos rápidos de editar/comprobar resultados y que no te desespere con detalles complejos e innecesarios en este punto.
¿Pero qué hablas de Lisp aquí? Estamos hablando de juegos y en juego o usas C++ o te comes una mierda. Y no hay más. No líes al chaval con tonterías, por favor.
Cita de: Hans en 22 de Mayo de 2009, 04:36:04 PM
¿Pero qué hablas de Lisp aquí? Estamos hablando de juegos y en juego o usas C++ o te comes una mierda. Y no hay más. No líes al chaval con tonterías, por favor.
Saber Lisp ayuda bastante a entender C# 3.0 :p
De todas formas, de nuevo como a Prompt: este chico quiere aprender, y para aprender a hacer juegos vale casi cualquier cosa.
Cita de: Vicente en 22 de Mayo de 2009, 04:46:40 PM
Cita de: Hans en 22 de Mayo de 2009, 04:36:04 PM
¿Pero qué hablas de Lisp aquí? Estamos hablando de juegos y en juego o usas C++ o te comes una mierda. Y no hay más. No líes al chaval con tonterías, por favor.
Saber Lisp ayuda bastante a entender C# 3.0 :p
De todas formas, de nuevo como a Prompt: este chico quiere aprender, y para aprender a hacer juegos vale casi cualquier cosa.
Jejeje estás en lo cierto, Vicente. :)
Y también es bueno apuntar, y lo digo por el alterable, que saber leer también ayuda a entender.
Cita de: Vicente en 22 de Mayo de 2009, 04:46:40 PM
Cita de: Hans en 22 de Mayo de 2009, 04:36:04 PM
¿Pero qué hablas de Lisp aquí? Estamos hablando de juegos y en juego o usas C++ o te comes una mierda. Y no hay más. No líes al chaval con tonterías, por favor.
Saber Lisp ayuda bastante a entender C# 3.0 :p
De todas formas, de nuevo como a Prompt: este chico quiere aprender, y para aprender a hacer juegos vale casi cualquier cosa.
Nadie dice lo contrario, ¿ pero te sirve en algo real a la hora de hacer juegos? Lo dudo. El chaval quiere hacer juegos.
Me apetece intervenir.
Yo se C, C++, Java (en ninguno me consideraría experto pero si domino gran parte de sus características) y C# (estoy empezando xD), aparte de otros muchos lenguajes no mencionados en el post.
Yo se programar juegos, al menos lo principal, en C++ y usando programación orientada a objetos, como te exigirán en la mayoría de los puestos de desarrollo de juegos que no sean para móvil (los cuales, efectivamente, se desarrollan en una versión ligera de Java, concretamente, J2ME).
Yo no aprendí a programar juegos en C, ni en C++, ni en Java ni en C#. Lo hice con "DIV Games Studio", un pequeño conjunto de aplicaciones para crear juegos para los MSDOS. Al poco tiempo, me harte del DIV, porque no me dejaba hacer muchas cosas, y aprendí a hacer juegos con Blitz3D.
No aprendí programación orientada a objetos hasta que no empecé con el desarrollo web, la cual la aprendí a muy duras penas usando PHP y Java.
Hace relativamente poco, un par de años más o menos, cuando me propuse empezar a hacer cosillas en C++ todo fue extremadamente sencillo. Ya tenía las bases de OOP gracias a Java y PHP, y las bases de videojuegos gracias a Blitz3D, además, había desarrollado algunas cosas en C++. Fue cuestión de unir mucha experiencia de muchos sitios diferentes, poniéndolo todo en conjunto.
Pero estoy seguro de que no habría pasado a Blitz3D si no fuera por lo que me divertía con mis resultados en DIV.
Así que basándome en mi experiencia personal, y desoyendo a los demás, te recomiendo que empieces con algo que te resulte cómodo, pero que te vayas retando a ti mismo con cosas cada vez más difíciles. Y no aprendas sólo a hacer juegos, aprende también a programar en general, y programación orientada a objetos, e inglés, por dios, mucho inglés.
Suerte y bienvenido ;)
Cita de: Hans en 22 de Mayo de 2009, 05:06:01 PM
Nadie dice lo contrario, ¿ pero te sirve en algo real a la hora de hacer juegos? Lo dudo. El chaval quiere hacer juegos.
Si te refieres al Lisp, está claro que saber programación funcional no es lo más interesante a la hora de hacer videojuegos. Pero si sabe Java, que es perfectamente válido para aprender las bases, ¿porque liarle con C++ también?
En este foro hay gente que hace juegos en Flash, otros que viven o han vivido de hacer juegos en J2ME, gente preparando juegos en Unity para el iPhone y Mac,... C++ está de pm, pero no es ni mucho menos la única salida que hay en el mundillo.
Y pensar que muchos de los programadores de C++ actuales empezaron con el BASIC del Spectrum o el Commodore64 antes inclusive que con C... vaya guerra mas tonta con los dichosos lenguajes :D (palabras dichas por un programador de Visual Basic 6.0 :..)
Si C++ fuera el camino recto en la programacion todos los novatos en las carreras, cursos y masters de programacion empezarian directamente a aprender a programar desde 0 en C/C++ cuando en verdad se usan lenguajes como Modula2, Pascal, Eiffel y otras "aberraciones" que nadie en su sano jucio usaria para el dia a dia pero que sin embargo son sencillos para coger facilmente los fundamentos y las base comunes de la programacion en cualquier lenguaje.
Si vas a dedicarte a lo profesional, para trabajar de ello, lanzate a C++, pero si vas hacerlo por puro hobbie, usa lo que mas comodidad te de, ya que, total, se trata que disfrutes con lo que haces, y a mi personalmente, por hobbie prefiero mil veces mi bien conocido y aborrecido Visual Basic 6.0 o C#, que todavia no domino tanto como me gustaria, que el complejo y meticuloso C++, con el que ya tuve amargas experiencias y con el que tardare en reconciliarme mucho tiempo.
Salu2...
P.D.: Aqui otro ex-usuario de Div Game Studio :D
Cita de: Vicente en 22 de Mayo de 2009, 09:08:35 PM
Cita de: Hans en 22 de Mayo de 2009, 05:06:01 PM
Nadie dice lo contrario, ¿ pero te sirve en algo real a la hora de hacer juegos? Lo dudo. El chaval quiere hacer juegos.
Si te refieres al Lisp, está claro que saber programación funcional no es lo más interesante a la hora de hacer videojuegos. Pero si sabe Java, que es perfectamente válido para aprender las bases, ¿porque liarle con C++ también?
En este foro hay gente que hace juegos en Flash, otros que viven o han vivido de hacer juegos en J2ME, gente preparando juegos en Unity para el iPhone y Mac,... C++ está de pm, pero no es ni mucho menos la única salida que hay en el mundillo.
Sabes muy bien que eso ya lo sé, sino no estaría ahora mismo con C# y con Java al mismo tiempo. Pero lo más requerido es C++ y lo más complicado tb es C++ y por eso mi recomendación es C++, y no por otro cosa. Para mi es más cómodo trabajar con C# por su compilador y su ide (en C++ estoy obligado a usar Codeblocks para mantener la multiplataformidad Linux/Windows) y no sólo es lo más lento del planeta compilando, además indica malamente la mayoría de errores. Adaptarse a tan pocos recursos y a tener que buscarte la vida en google es lo que diferencia a C++, ese handicap extra que hace que los demás parezcan lenguajes simples y lo que hace que realmente se aprenda. Repito lo mismo que ya he dicho, C++ es un Ferrari, muy difícil de conducir pero cuando sabes no hay quien te alcance, los demás son Ford Fiestas, lentos y limitados pero al alcance de cualquiera por muy poco precio.
Si te lo dan casi todo hecho (caso C# con XNA) aprendes cero patatero, cosa que está muy bien si quieres "simplemente" hacer un juego, no si quieres aprender de verdad a base de pegarte contra una pared. He leído de gente que empezó con div, luego se pasó a no sé qué y luego a no sé cuánto y me parece bien pero así se tardan años en aprender, porque vas de menos a más lentamente, mientras que empezando por el más te costará ver resultados al principio pero alcanzarás la meta mucho antes. Yo empecé con Ada y POO directamente y aún siendo muy parecido a C/C++ me supuso una pérdida de tiempo brutal e innecesaria.
Cita de: Hans en 23 de Mayo de 2009, 10:21:03 AM
Repito lo mismo que ya he dicho, C++ es un Ferrari, muy difícil de conducir pero cuando sabes no hay quien te alcance, los demás son Ford Fiestas, lentos y limitados pero al alcance de cualquiera por muy poco precio.
Yo repito que eso es rotundamente falso.
Sí, lo repites pero no dices el por qué.
Tú dices que los lenguajes que no son C++ son lentos y limitados. Yo digo que no.
¿Por qué? Pues evidentemente, porque no lo son.
Es posible que nuestras definiciones de 'lento' y 'limitado' sean diferentes. Por un lado, hablar de 'lento' o 'rápido' sin un contexto es perder el tiempo. Por otro lado, dile a alguien que sepa Python (por ejemplo) que éste es más "limitado" que C++ y observa su reacción.
Se me olvidaba, los lenguajes de programación son especificaciones formales plasmadas en papel. Por lo tanto, no tiene sentido alguno decir que tal lenguaje es lento o rápido, en términos absolutos.
Cita de: Hans en 23 de Mayo de 2009, 10:21:03 AM
Sabes muy bien que eso ya lo sé, sino no estaría ahora mismo con C# y con Java al mismo tiempo. Pero lo más requerido es C++ y lo más complicado tb es C++ y por eso mi recomendación es C++, y no por otro cosa. Para mi es más cómodo trabajar con C# por su compilador y su ide (en C++ estoy obligado a usar Codeblocks para mantener la multiplataformidad Linux/Windows) y no sólo es lo más lento del planeta compilando, además indica malamente la mayoría de errores. Adaptarse a tan pocos recursos y a tener que buscarte la vida en google es lo que diferencia a C++, ese handicap extra que hace que los demás parezcan lenguajes simples y lo que hace que realmente se aprenda. Repito lo mismo que ya he dicho, C++ es un Ferrari, muy difícil de conducir pero cuando sabes no hay quien te alcance, los demás son Ford Fiestas, lentos y limitados pero al alcance de cualquiera por muy poco precio.
Si te lo dan casi todo hecho (caso C# con XNA) aprendes cero patatero, cosa que está muy bien si quieres "simplemente" hacer un juego, no si quieres aprender de verdad a base de pegarte contra una pared. He leído de gente que empezó con div, luego se pasó a no sé qué y luego a no sé cuánto y me parece bien pero así se tardan años en aprender, porque vas de menos a más lentamente, mientras que empezando por el más te costará ver resultados al principio pero alcanzarás la meta mucho antes. Yo empecé con Ada y POO directamente y aún siendo muy parecido a C/C++ me supuso una pérdida de tiempo brutal e innecesaria.
Tu mismo lo dices: el chico quiere aprender las bases del 3D y le recomiendas un lenguaje más complicado, con peores herramientas, donde se va a dar de cabezazos con las paredes,... Así lo mismo en vez de aprender lo deja por el camino. De nuevo: para aprender 3D no hace falta aprender C++ y eso es indiscutible.
Y luego si quiere hacerse un profesional, hay salidas fuera del C++ (y no nos engañemos, que puede aprender C++ también más adelante si realmente lo necesita, no es que por elegir ahora otra cosa se le vaya a freir el cerebro).
Un saludo!
Vicente
Limitado y lento significa lo que significa. Java es un lenguaje en el que no hay ni enumerados con valor y que se ejecuta en una máquina virtual.
Yo digo aprender lo más difícil conlleva a que luego lo no tan difícil te parezca sencillo. Eso es así en todos los aspectos de la vida. Y C++ es el más difícil.
En fin, no discuto más. C++ a día de hoy es el lenguaje más solicitado y más usado en la industria del videojuego por algo y lo ha sido durante muchos años, recomendar cualquier otra cosa antes no tiene sentido. Que con Java o C# vas a tener salidas es indiscutible pero no al mismo nivel.
Otro día más.
Cita de: Hans en 23 de Mayo de 2009, 11:40:10 AM
Limitado y lento significa lo que significa.
Y que sigues sin poder explicar.
Cita de: Hans en 23 de Mayo de 2009, 11:40:10 AM
Java es un lenguaje en el que no hay ni enumerados con valor.
¿¿¿Enumerados con valor??? Es la primera vez que leo ese término, y no voy a hacer el esfuerzo de intentar desencriptar tu nomenclatura propia (tú sí deberías de hacer el esfuerzo de utilizar la nomenclatura comúnmente aceptada si pretendes que se te entienda).
Cita de: Hans en 23 de Mayo de 2009, 11:40:10 AM
Yo digo aprender lo más difícil conlleva a que luego lo no tan difícil te parezca sencillo. Eso es así en todos los aspectos de la vida. Y C++ es el más difícil.
C++ es difícil. ¿El más difícil? Eso es altamente discutible (y no es importante, en cualquier caso).
Cita de: Hans en 23 de Mayo de 2009, 11:40:10 AM
C++ a día de hoy es el lenguaje más solicitado y más usado en la industria del videojuego por algo y lo ha sido durante muchos años, recomendar cualquier otra cosa antes no tiene sentido. Que con Java o C# vas a tener salidas es indiscutible pero no al mismo nivel.
Nadie ha puesto en duda en ningún momento que C++ sea el lenguaje predominante en la industria, porque es un hecho indiscutible.
Lo que varios hemos puesto en duda es que, teniendo en cuenta que, en la gran mayoría de casos (siempre hay excepciones):
- Para dedicarse profesionalmente al desarrollo de videojuegos es necesario dominar C++.
- Para dedicarse profesionalmente al desarrollo (en general) es necesario dominar más de un lenguaje.
, la decisión más inteligente (por más beneficiosa) de cara a los intereses de alguien que empieza, que no son otros que aprender, es utilizar un lenguaje adecuado para ese propósito. C++ es posiblemente una de las peores opciones en ese sentido (si no la peor). Es un sentimiento generalizado, además: haz un muestreo de universidades con departamentos de informática reconocidos y fíjate en qué lenguajes utilizan para enseñar las asignaturas de fundamentos de programación.
Si vas a tener que aprender varios lenguajes, y entre ellos C++, aplica el sentido común y empieza por un lenguaje accesible, con el que puedas centrarte en el dominio del problema y no en problemas de detalle. Es el camino que te proporcionará una base de la manera menos deprimente (aprender a caminar antes de correr, aprender a programar antes de programar un juego).
En definitiva, aprende las bases con lenguajes accesibles (se han mencionado varios en este hilo), y haz un esfuerzo por evitar caer en la actitud de no ver más allá de tus propias narices.
Volviendo un poco al asunto... :D La verdad es que no me meto en debates de lenguajes de programación, etc. Cada uno creo que debería usarse para las necesidades de la aplicación. Las cosas son como son y dependiendo de la facilidad de aprendizaje de cada uno, ganas de sufrir (esto creo que es bastante relativo), y en lo que quieras currar, pues tienes que tirar por un camino o por otro. Yo en su día tuve que aprender Lua y Python para hacer algunos scripts, y no me molestó... vamos, si quieres dedicarte al desarrollo de software pienso que es lo que hay ^_^'
PD: edito errores, que hoy estoy bastante torpe escribiendo xD
Si no entiendes lo que es un enumerado con valor no sé qué más decir, dejas claro que de C++ tienes mucha idea, desde luego, como para fiarse de tu opinión xD
Y lo de las universidades como ejemplo del que extrapolar lo que se necesita para aprender es un sinsentido cuando en la mía, sin ir más lejos, utilizábamos Ada, lenguaje que, si no me equivoco, es usado en el ámbito militar y ya. Practicidad nula. Y la demostración empírica de su nula practicidad está en que el curso que yo saqué MH aprobamos 4 aquel examen, de 100 personas que lo hicieron. Y los otros 3 no llegaron ni al 6. Para eso sirven los lenguajes poco usados, para que cueste lo mismo aprenderlos pero además no sirvan ni para limpiarse el culo con ellos.
Cita de: Hans en 23 de Mayo de 2009, 01:51:49 PM
Si no entiendes lo que es un enumerado con valor no sé qué más decir, dejas claro que de C++ tienes mucha idea, desde luego, como para fiarse de tu opinión xD
Sé lo que es un enum. Un 'enumerado con valor' es un concepto que te has inventado tú hoy en este hilo (o quizás antes, no lo sé). Si no es así, por favor remíteme al párrafo del estándar del lenguaje en el que se define el término.
Cita de: Hans en 23 de Mayo de 2009, 01:51:49 PM
Y lo de las universidades como ejemplo del que extrapolar lo que se necesita para aprender es un sinsentido cuando en la mía, sin ir más lejos, utilizábamos Ada, lenguaje que, si no me equivoco, es usado en el ámbito militar y ya. Practicidad nula. Y la demostración empírica de su nula practicidad está en que el curso que yo saqué MH aprobamos 4 aquel examen, de 100 personas que lo hicieron. Y los otros 3 no llegaron ni al 6. Para eso sirven los lenguajes poco usados, para que cueste lo mismo aprenderlos pero además no sirvan ni para limpiarse el culo con ellos.
Si lees de nuevo, pero esta vez lo haces correctamente, verás que no me he referido a 'la totalidad de las universidades'. Por cierto, Ada es una opción mucho más adecuada como primer lenguaje que C++ (casi cualquier lenguaje lo es). Y sí, efectivamente te equivocas cuando dices que sólo se utiliza en el ámbito militar.
Y si realmente estás afirmando que, porque en cierto examen de cierto curso en el que se utilizaba Ada aprobó un escaso porcentaje de alumnos, entonces el lenguaje tiene un valor práctico nulo (practicidad es una palabra que no existe en el diccionario de la RAE), entonces es que lo tuyo es peor de lo que pensaba.
Cita de: davur en 23 de Mayo de 2009, 02:08:10 PM
Cita de: Hans en 23 de Mayo de 2009, 01:51:49 PM
Si no entiendes lo que es un enumerado con valor no sé qué más decir, dejas claro que de C++ tienes mucha idea, desde luego, como para fiarse de tu opinión xD
Sé lo que es un enum. Una 'enumeración con valor' es un concepto que te has inventado tú hoy en este hilo (o quizás antes, no lo sé). Si no es así, por favor remíteme al párrafo del estándar del lenguaje en el que se define el término.
Cita de: Hans en 23 de Mayo de 2009, 01:51:49 PM
Y lo de las universidades como ejemplo del que extrapolar lo que se necesita para aprender es un sinsentido cuando en la mía, sin ir más lejos, utilizábamos Ada, lenguaje que, si no me equivoco, es usado en el ámbito militar y ya. Practicidad nula. Y la demostración empírica de su nula practicidad está en que el curso que yo saqué MH aprobamos 4 aquel examen, de 100 personas que lo hicieron. Y los otros 3 no llegaron ni al 6. Para eso sirven los lenguajes poco usados, para que cueste lo mismo aprenderlos pero además no sirvan ni para limpiarse el culo con ellos.
Si lees de nuevo, pero esta vez lo haces correctamente, verás que no me he referido a 'la totalidad de las universidades'. Por cierto, Ada es una opción mucho más adecuada como primer lenguaje que C++ (casi cualquier lenguaje lo es).
Aprende C++ y luego vienes a dar lecciones xD En un tipo enumerado se pueden definir enteros con un valor determinado y luego bastará con hacer un cast a int para obtener dicho valor. Es algo muy útil para listados de valores o para definiciones, definiciones (defines) que en java tampoco permiten dar un valor, por lo que en mi caso sólo me ha quedado la opción de definir constantes.
Y Ada opción mucho más adecuada como primer lenguaje quizás en tu realidad alternativa, en el mundo real Ada es un lenguaje que se usa absolutamente en nada más allá de lo que he citado. Con paridas así no sé cómo cojones pretendes que se te tome en serio.
Cita de: Hans en 23 de Mayo de 2009, 02:20:19 PM
En un tipo enumerado se pueden definir enteros con un valor determinado y luego bastará con hacer un cast a int para obtener dicho valor.
Si pretendías definir lo que es un tipo enumerado (¡ahora sí, el término correcto!), te diré lo que has conseguido: basura (y además no en forma de definición).
Lee esto: http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.19
Cita de: Hans en 23 de Mayo de 2009, 02:20:19 PM
Aprende C++ y luego vienes a dar lecciones xD En un tipo enumerado se pueden definir enteros con un valor determinado y luego bastará con hacer un cast a int para obtener dicho valor. Es algo muy útil para listados de valores o para definiciones, definiciones (defines) que en java tampoco permiten dar un valor, por lo que en mi caso sólo me ha quedado la opción de definir constantes.
El cacao de conceptos en esa frase es importante. Vamos a hacer como que no la has escrito.
Aprende a expresarte con propiedad y a saber de lo que hablas antes de pretender dar lecciones a nadie y pretender que se te tome en serio. Si conocieras mínimamente mi historial en este foro, sabrías que soy especialmente pedante en lo que se refiere a C++ (me fastidia leer posts que contribuyen al desconocimiento y las malas prácticas de este lenguaje, porque bastante abunda ya).
Sigo esperando el párrafo del estándar (pero sé que no me lo darás, porque no existe y porque has cambiado el término en tu último mensaje).
Cita de: Hans en 23 de Mayo de 2009, 02:20:19 PM
Y Ada opción mucho más adecuada como primer lenguaje quizás en tu realidad alternativa, en el mundo real Ada es un lenguaje que se usa absolutamente en nada más allá de lo que he citado. Con paridas así no sé cómo cojones pretendes que se te tome en serio.
¡Lo que tú digas!
Deja de dar lecciones a los demás cuando no sabías ni lo que es un puto enumerado con asignación de valores y no te ampares en que no me he expresado bien porque hasta un mono sabía de lo que estaba hablando. Deja de desviar el tema hacia cómo nos expresamos los demás buscando absurdas definiciones en la rae porque no haces más que el ridículo. Y, sobre todo, deja de liar al chaval con gilipolleces del tamaño de Ada es un lenguaje mucho más apropiado que C++ porque lo confundes con patéticas mentiras dignas del mayor de los frikazos. En definitiva, deja de quedar con el culo al aire en cada post. Por favor xD
Hola a todos!, primero que nada, quiero agradecer todas las respuestas que me han pasado, de una manera u otras me son muy útiles.
Les comento que pienso un poco en lo que me comentan, y la verdad se me plantea una dualidad de pensamientos que me genera una guerra interna muy similar a la que se ha armado en este foro :D.
Primero que nada, soy de pensar que si se va a hacer algo, si se va a aprender algo, mas vale hacerlo bien de entrada, por lo que empezar de C++ sería una muy buena opción. Por otro lado, ya les comentaba antes, que tengo 25 años (a cumplir en un mes), estoy en una carrera universitaria (a duras penas), trabajo(casi todo el día), y ya tengo una familia formada con 2 hijos.. por lo que el tiempo, en mi caso, es mas que oro :D. entonces, me plantéo lo siguiente, necesito resultados relativamente rápidos :P.
Bien, esto me lleva, a que quizá por mi estilo de vida, quizá me convenga, por lo que me dicen, comenzar con C# y XNA, que quizá sea un entorno mas amigable en varios sentidos. En realidad si me sirve para poder crear un juego en 3D, y aprender la lógica del manejo de las coasas, creo que por el momento será suficiente. Luego, si veo que le puedo dar un rumbo importante, quizá pueda meterme a aprender C++.
Creo que esta respuesta es la mas sensata luego de leer todas las suyas, y si bien, alguno saldrá enojado, tiene toda la razón, ya que creo que todos los puntos de vistas tienen cosas muy válidas. Supongo que a largas cuentas, si llego a poder dedicarme a esto de lleno alguna vez, quizá sienta que he perdido el tiempo por no haber empezado con c++, pero por otro lado, se que voy a haber llegado a resultados mas rápidos, y a fin de cuentas eso también es importante.. por ende, llegaré a los resultados, por diferentes caminos, mas largos o mas cortos, pero en fin, lo importante es no morir en el intento :D.
En fin, agradezco los links con tutos que me pasaron anteriormente (aunque no he tenido tiempo de mirarlos mas que un minuto), y agradeceré tmb cualquier otro que me puedan enviar de XNA y C#.
Saludos, y gracias! ^_^
Desde luego con C# obtendrás resultados en muy poco tiempo, eso seguro. Suerte.
Excelente decisión, Yotes. Ignorar las barbaridades recomendadas por Hans es la decisión más inteligente que podías haber tomado.
Jeje, siguen peleando ^_^.
No, no he ignorado a nadie, por el contrario, todos los puntos de vista los considero válidos. Solo se que si fuese mas joven, y tuviese mas tiempo libre, quizá arrancaría por C++, pero dadas las circunstancias, creo que tendré que saltear esa fase de momento si quiero ver resultados rapidos, aunque quizá no sean los óptimos, pero en fin.
Bien, saludos
Ha quedado muy claro, Yotes, y eres extremadamente caballeroso (y me parece genial, por supuesto). En cualquier caso, la decisión es la correcta, y te ahorrará disgustos innecesarios.
Sólo lo decía para minarle un poco el ego al chico.
Cita de: davur en 23 de Mayo de 2009, 05:52:10 PM
Excelente decisión, Yotes. Ignorar las barbaridades recomendadas por Hans es la decisión más inteligente que podías haber tomado.
Yo la tengo más grande mami!!! Vete a por teta, niñato mental. Todavía resuenan las risas de mis compañeros al leerte. En cuanto a minar el ego está jodido con un vasco, nos merendamos trolls repletos de razones absurdas como tú cada día.
Creo que nuestra probabilidad de empezar a comparar los lenguajes de programación con Hitler o los nazis esta peligrosamente tendiendo a 1. ;)
http://es.wikipedia.org/wiki/Ley_de_Godwin (http://es.wikipedia.org/wiki/Ley_de_Godwin)
Lo dudo. Si tuviera que contar las veces que me he enfrentado a personajillos como éste sin tener que recurrir a lo que dice esa ley el universo se quedaría pequeño xD
Pues deberias haber cogido algo de experiencia. Porque no has sido capaz de contrarrestar ninguno de los argumentos que te he dado con un mínimo de lógica, conocimiento y solvencia técnica, y tus respuestas han sido de corte verdulero y salivante. De chavalín subidito, vamos.
Pero oye, la vida sigue, supéralo (http://echosphere.net/star_trek_insp/insp_continuity.png).
Cita de: davurSoñando espero al hombre que yo quiero...
¿Has probado con diazepán?
Yo creo que si Hitler levantara la cabeza, inventaría un lenguaje de programación que fuera judío xDD
Cita de: Gorkin en 24 de Mayo de 2009, 01:52:08 AM
Está claro que si Hitler fuera un lenguaje de programación sería el Visual Basic 6... prometía una nueva era de gloria, pero al final todo eran disgustos XD
Por esto y no por el flame seria capaz de cerrar el hilo, Gorkin, cuidadin cuidadin >:D :P
davur, Hans, dejarlo ya, hombre, que todo el flame sobre C++ ha estado interesante hasta que habeis empezado a pelearos de manera personal, y me da igual si empezo uno u otro. Haya paz, hermanos coders 0:-)
Salu2...
Siento contestar tan tarde pero básicamente refuerzo los mensajes de prompt.
Si quieres acabar siendo productivo en cualquier ámbito, lo mejor es empezar por C/C++ y darle caña.
Cita de: Gorkin en 25 de Mayo de 2009, 01:03:20 PM
¿Antes o después de curarte con pomada todas las cicatrices que te ha dejado el VB6? >:D
Y me sigue dejando :P En la informatica de gestion ocurre al reves que en los juegos, o sabes VB6.0 o Java o no te comes un rosco xDDDDD
Salu2...
Wola, pasaba por aquí y me he encontrado con el flambeado de Moe.
En mi caso, comencé con Basic (con el libro "basic para niños" , qué grande Arturito). Me vino bien para aprender los fundamentos de un lenguaje iterativo: una lista básica de órdenes que se ejecutan, sin morralla intermedia.
Luego en la carrera aprendí Pascal, y con éste descubrí el funcionamiento de las cabeceras de funciones y programas, malas prácticas aprendidas con Basic, y un funcionamiento más complejo de los programas.
Más tarde vimos C, que me pareció casi una renomenclatura de Pascal con una cosa demoníaca llamada 'punteros', que al parecer servían para sacar segmentation faults. Con C++ la cosa fue mucho más complicada, y en clase no entendía nada. Realmente aprendí los fundamentos de C++ gracias a este foro, ya que me topé con un tutorial para hacer un juego simple de rol y por fin me enteré de qué iba eso de la herencia y la virtualización.
(También vimos LISP y Prolog, con el que hice un resolutor de sudokus un poco chusquero).
Más tarde, aprendí Java (el infierno de los chorongos infinitos para mi gusto) y Python (todo lo contrario, me pareció un lenguaje simple y limpio).
Unos años después empecé a trabajar en videojuegos con un lenguaje propio de la empresa, similar a C++. Ya se me había olvidado cómo iba lo de la herencia y la virtualización, pero la migración fue fácil.
Y al final, desarrollando para Wii, aprendí C++ más en serio (lo suficiente como para saber que hay verdaderos ninjas sueltos por ahí y que está todo por aprender). Por cierto, afortunadamente Codewarrior no es el compilador (menudo infierno de programa inestable); usando makefiles puedes compilar perfectamente 'a la gcc' con el compilador que trae el SDK de la Wii, y que es al que invoca tanto ahora Codewarrior como antes hacía Radix. De hecho, los conocimientos que adquirí para gcc o g++ en casa o en la carrera me sirvieron por completo para generar el makefile para Wii.
En resumen:
-No hay motivos para descartar un lenguaje en concreto, mientras te sirva para aprender genéricamente el funcionamiento de un programa. Es más importante tener conocimientos profundos de algorítmica; todo lo demás son traducciones. Así que de todos puedes aprender algo, y nada te impide empezar por algo básico que entiendas bien y subir peldaños. Aunque te pueda parecer una pérdida de tiempo, probablemente adelantarás más si empiezas por una base firmemente asentada de los aspectos principales.
-Puedes usar gcc o g++, seguramente antes o después te cruzarás con ellos o con similares.
-Mis posturas sobre los lenguajes son meramente impresiones mías al usarlos, no tienen mayor validez que la de mis gustos, y acepto los que otros puedan haber tenido y sean diferentes.
-Limitado significa que no dispones de la forma de llevar a abo operaciones que sí podrías hacer con otros lenguajes, y lento significa que la ejecución (interpretada o compilada) del algoritmo implementado en ese lenguaje tarda más en realizarse que con su implementación en otro lenguaje. Por lo general, cuanto más limitado y lento sea un lenguaje más se han esmerado en que su productividad sea mayor.
-Con todo el tiempo que lleva el thread, podrías haber aprendido ya Basic y rudimentos de Python. Deja de leer y ponte a la marcha.
Saludetes para todos.
Varios pequeños apuntes.
Cita de: Mars Attacks en 28 de Mayo de 2009, 02:18:27 PM
Unos años después empecé a trabajar en videojuegos con un lenguaje propio de la empresa, similar a C++. Ya se me había olvidado cómo iba lo de la herencia y la virtualización, pero la migración fue fácil.
'Virtualización' (http://es.wikipedia.org/wiki/Virtualizaci%C3%B3n) es un concepto que no tiene nada que ver con C++.
Cita de: Mars Attacks en 28 de Mayo de 2009, 02:18:27 PM
Y al final, desarrollando para Wii, aprendí C++ más en serio (lo suficiente como para saber que hay verdaderos ninjas sueltos por ahí y que está todo por aprender). Por cierto, afortunadamente Codewarrior no es el compilador (menudo infierno de programa inestable); usando makefiles puedes compilar perfectamente 'a la gcc' con el compilador que trae el SDK de la Wii, y que es al que invoca tanto ahora Codewarrior como antes hacía Radix. De hecho, los conocimientos que adquirí para gcc o g++ en casa o en la carrera me sirvieron por completo para generar el makefile para Wii.
El compilador que trae el SDK de la Wii es el que proporciona Freescale y que se incluye en su conjunto de desarrollo conocido como CodeWarrior (http://en.wikipedia.org/wiki/CodeWarrior), y que, por poder, puedes llamar 'pepito' si quieres (el resto de desarrolladores posiblemente sigamos llamándole CodeWarrior porque, bueno, es así como se llama oficialmente). Pero no es g++ (desafortunadamente para los que trabajamos/hemos trabajado con CodeWarrior).
Sí que es totalmente cierto que en la práctica se suelen utilizar makefiles a pelo para, entre otras cosas, poder utilizar Visual Studio como IDE. Lo cual no tiene nada que ver con el hecho de que tener experiencia con g++, desgraciadamente, poca aplicación directa va a tener en CodeWarrior, por ejemplo (e insisto, desafortunadamente).
Cita de: Mars Attacks en 28 de Mayo de 2009, 02:18:27 PM
-No hay motivos para descartar un lenguaje en concreto, mientras te sirva para aprender genéricamente el funcionamiento de un programa. Es más importante tener conocimientos profundos de algorítmica; todo lo demás son traducciones. Así que de todos puedes aprender algo, y nada te impide empezar por algo básico que entiendas bien y subir peldaños. Aunque te pueda parecer una pérdida de tiempo, probablemente adelantarás más si empiezas por una base firmemente asentada de los aspectos principales.
Sí los hay, por supuesto. El hecho de que ciertos lenguajes (como C++) oscurezcan el entendimiento de los fundamentos, el más importante de ellos y el que se ha recalcado ya varias veces.
Cita de: Mars Attacks en 28 de Mayo de 2009, 02:18:27 PM
-Puedes usar gcc o g++, seguramente antes o después te cruzarás con ellos o con similares.
Si cuando te encuentres con esos otros compiladores asumes que van a generar código como lo hace g++, y más tarde descubras que no es así, tendrás que olvidarte de esas asunciones para el nuevo compilador y aprender los detalles específicos a este.
Siguiendo con el ejemplo de CodeWarrior, este compilador genera en muchas ocasiones un código muy diferente al que generaría g++. Y conocer los detalles de la susodicha generación es vital en desarrollo de videojuegos de consola (y en otros tipos de desarrollo, claro está).
Cita de: Mars Attacks en 28 de Mayo de 2009, 02:18:27 PM
-Limitado significa que no dispones de la forma de llevar a abo operaciones que sí podrías hacer con otros lenguajes, y lento significa que la ejecución (interpretada o compilada) del algoritmo implementado en ese lenguaje tarda más en realizarse que con su implementación en otro lenguaje. Por lo general, cuanto más limitado y lento sea un lenguaje más se han esmerado en que su productividad sea mayor.
Como dije anteriormente, la definición de 'limitado' y de 'lento' es enormemente relativa. Y como dije anteriormente también, un lenguaje no es lento ni rápido per se. Y de ahí que decir que "C++ es rápido" o "Python es lento" no tiene sentido alguno.
Aunque "virtualización" tenga otro significado, en este contexto hablo de hacer virtuales funciones. Hacer virtual -> virtualizar. Llamémoslo polisemia.
Sobre lo demás, llama al compilador como quieras. El nombre del fichero es algo así como mgcw_cc.exe (lo digo de memoria y con sueño, seguramente no habré acertado más que el cc.exe final).
Y claro que me ha servido la experiencia en gcc o g++. La estructura del makefile es muy similar, y nos sirvió precisamente para puentear el uso del IDE y no olerlo ni en pintura. No hablo de usar gcc por el código que genera, sino por su filosofía de uso. En general, me refiero a usar un compilador de forma directa, sin IDEs.
Sobre que C++ oscurece los fundamentos... eso ya depende de cómo lo aprenda el que lo aprende. Un lenguaje per se no puede oscurecer ni aclarar nada, de la misma forma que no puede ser lento ni rápido. Se puede aprender C++ con los fundamentos muy claros. A mí me parece que C++ es de los lenguajes más transparentes que hay. Tan transparente, que es fácil volverlo oscurantista. Pero no deja de ser una visión personal. Por mí, usaría Python. Qué listo es el jodío.