Quiero aprender a programar, pero no tengo conocimientos básicos de lenguaje. ¿Existe alguna forma rápida?
Programación
Esta es una pregunta que se encuentra en todas las preguntas frecuentes sobre programación de juegos. Esta pregunta se hace varias veces a la semana en foros de desarrollo de juegos. Es una buena pregunta, pero nadie tiene una respuesta sencilla. Siempre hay algunos lenguajes informáticos que son mejores que otros en determinadas aplicaciones. A continuación se muestran algunos de los principales lenguajes de programación utilizados para escribir juegos, junto con sus ventajas y desventajas. Espero que este artículo te ayude a tomar tu decisión.
1. Lenguaje C
Si FORTRAN y COBOL son la primera generación de lenguajes compilados de alto nivel, entonces el lenguaje C es su nieto. El lenguaje C fue creado por Dennis Ritchie en los años 1970. Es más potente y mantiene una herencia más continua con ALGOL, que es el sucesor estructurado de COBOL y FORTRAN. El lenguaje C fue diseñado para ser una versión más refinada y simple que sus predecesores, y era adecuado para escribir programas a nivel de sistema, como sistemas operativos. Antes de esto, los sistemas operativos se escribían en lenguaje ensamblador y no eran portátiles. C fue el primer lenguaje de programación que hizo posible la portabilidad del código a nivel de sistema.
El lenguaje C admite programación estructurada, lo que significa que los programas C se escriben como una colección de llamadas a funciones separadas (llamadas) que se ejecutan de arriba hacia abajo en lugar de como una integración única. El código del bloque utiliza declaraciones GOTO para controlar el flujo. Por lo tanto, los programas en C son mucho más simples que el "código espagueti" del código integrado FORTRAN y COBOL. De hecho, C todavía tiene la sentencia GOTO, pero su funcionalidad es limitada y sólo se recomienda su uso cuando la solución estructurada es muy compleja.
Debido a sus raíces en la programación de sistemas, es bastante fácil combinar C y lenguaje ensamblador. La interfaz de llamada de funciones es muy simple y las instrucciones en lenguaje ensamblador se pueden incrustar en el código C, por lo que no es necesario conectar módulos ensambladores independientes.
Ventajas: Propicio para escribir programas pequeños y rápidos. Fácilmente combinable con lenguaje ensamblador. Altamente estandarizado por lo que las versiones en otras plataformas son muy similares.
Desventajas: No es fácil admitir tecnología orientada a objetos. La sintaxis a veces puede ser muy difícil de entender y susceptible de abuso.
Portabilidad: El núcleo del lenguaje C y las llamadas a funciones ANSI son portátiles, pero se limitan al control de procesos, la gestión de memoria y el procesamiento simple de archivos. Todo lo demás está relacionado con la plataforma. Por ejemplo, al desarrollar programas portátiles para Windows y Mac, la parte de la interfaz de usuario necesita utilizar llamadas a funciones relacionadas con el sistema. Generalmente, esto significa que debe escribir el código de la interfaz de usuario dos veces, pero afortunadamente existen bibliotecas que pueden aliviar la carga de trabajo.
Juegos escritos en C: muchos, muchos.
Información: El libro clásico sobre lenguaje C es "El lenguaje de programación C". Se ha revisado muchas veces y se ha ampliado hasta tres veces su tamaño original, pero sigue siendo un libro excelente para introducir C. . Un excelente tutorial es C Primer Plus de The Waite Group.
2. C
El lenguaje C es el sucesor del lenguaje C con características orientadas a objetos. La programación orientada a objetos, u OOP, es el siguiente paso en la programación estructurada. Los programas OO se componen de objetos, donde los objetos son colecciones discretas de datos y funciones. Hay muchas bibliotecas de objetos disponibles que hacen que la programación sea tan simple como reunir algunos "materiales de construcción" del programa (al menos en teoría). Por ejemplo, existen muchas bibliotecas de bases de datos y GUI que se implementan como colecciones de objetos.
C es siempre tema de debate, especialmente en foros de desarrollo de juegos. Varias características de C, como las funciones virtuales, añaden una capa adicional a la toma de decisiones sobre llamadas a funciones, y los críticos se apresuran a señalar que los programas en C serán más grandes y más lentos que los programas en C con la misma funcionalidad. Los defensores de C creen que escribir código equivalente a funciones virtuales en C también aumentará los gastos. Éste será un debate en curso que es poco probable que concluya rápidamente.
Creo que el gasto adicional de C es un pequeño precio a pagar por utilizar un lenguaje mejor. El mismo debate se produjo en la década de 1960, cuando los lenguajes de programación de alto nivel como COBOL y FORTRAN comenzaron a reemplazar al ensamblador como lenguaje de elección. Los críticos señalan con razón que los programas escritos en lenguajes de alto nivel son inherentemente más lentos que el lenguaje ensamblador escrito a mano, y deben serlo. Los defensores del lenguaje de alto nivel creen que esta pequeña penalización en el rendimiento vale la pena porque los programas COBOL y FORTRAN son más fáciles de escribir y mantener.
Ventajas: Mucho mejor que el lenguaje C a la hora de organizar programas grandes. Muy buen soporte para mecanismos orientados a objetos. Una biblioteca de estructuras de datos comunes, como listas vinculadas y matrices ampliables, alivia la carga de lidiar con detalles de bajo nivel.
Desventajas: Muy grande y complejo. Al igual que el lenguaje C, existen problemas de abuso de sintaxis. Más lento que C. La mayoría de los compiladores no implementan todo el lenguaje correctamente.
Portabilidad: Mucho mejor que el lenguaje C, pero aún no es muy optimista. Debido a que tiene las mismas deficiencias que el lenguaje C, la mayoría de las bibliotecas de interfaz de usuario portátiles se implementan utilizando objetos C.
Juegos escritos en C: muchísimos. La mayoría de los juegos comerciales están escritos en C o C++.
Información: La última versión de "El Lenguaje de Programación C" es muy buena. A modo de tutorial, hay dos campos, uno que supone que sabes C y otro que supone que no. Con diferencia, el mejor tutorial de C es "¿Quién teme a C?". Si ya conoces C, prueba "Enséñate C".
3. ¿Debería aprender C o empezar con C?
No me gusta esta afirmación, pero es la pregunta más frecuente después de "¿Qué idioma debo usar?" asuntos. Desafortunadamente, no existe una respuesta estándar. Puedes ahorrar mucho tiempo si aprendes C por tu cuenta y lo utilizas para escribir programas, pero hay dos desventajas al usar este método:
Perderás conocimientos orientados a objetos porque pueden estar en tu conocimiento. Algo que hace que el modelado de datos sea más eficiente en el juego.
Muchos de los juegos comerciales más importantes, incluidos los de disparos en primera persona, no utilizan C. Sin embargo, aunque los autores de estos programas utilicen el antiguo formato C, normalmente se apegan a técnicas de programación orientada a objetos. Si solo quieres aprender C, al menos aprende técnicas de programación OO (orientada a objetos). OO es la manera perfecta de simular (juego), si no aprendes OO tendrás que trabajar "duro".
4. Lenguaje ensamblador
Evidentemente, el ensamblador es el primer lenguaje informático. El lenguaje ensamblador es en realidad una representación en forma de comando de las instrucciones que realmente ejecuta el procesador de su computadora. Esto significa que trabajará con las capas inferiores del procesador, como registros y pilas. Si está buscando un idioma similar al inglés con autodocumentación asociada, esto no es lo que desea.
Literalmente, cualquier cosa que puedas hacer en otros lenguajes, el ensamblador lo puede hacer, pero no es tan simple; por supuesto, es como decir que puedes conducir a algún lugar o caminar hasta allí, es sólo una cuestión de dificultad. . Es bueno decirlo, pero la nueva tecnología hace que las cosas sean más fáciles de usar.
En general, el lenguaje ensamblador no se utilizará solo en los juegos. Los juegos utilizan el ensamblaje principalmente para piezas que mejoran el rendimiento. Por ejemplo, todo Doom Slayer está escrito en C, con varios programas de dibujo que utilizan ensamblador. Estos procedimientos se llaman miles de veces por segundo, por lo que ser lo más conciso posible ayudará a mejorar el rendimiento de tu juego. Llamar a funciones escritas en ensamblador desde C es bastante sencillo, por lo que utilizar ambos lenguajes al mismo tiempo no supone un problema.
Nota especial: El nombre del lenguaje es "ensamblaje". La herramienta que traduce el lenguaje ensamblador a código de máquina real se llama "ensamblador". Llamar al lenguaje "ensamblador" es un nombre inapropiado común, así que comience con el nombre correcto del lenguaje.
Ventajas: El lenguaje más pequeño y rápido. Los maestros ensambladores pueden escribir programas que son mucho más rápidos que cualquier otro lenguaje.
Serás el primero en aprovechar las últimas funciones del procesador porque puedes usarlas directamente.
Desventajas: Difícil de aprender, sintaxis oscura, insistencia en la eficiencia, lo que resulta en una gran cantidad de código adicional; no es apto para personas débiles de corazón.
Portabilidad: cercana a cero. Debido a que el lenguaje fue diseñado para un solo procesador, no había ninguna portabilidad. Si utiliza las funciones extendidas de un procesador en particular, su código ni siquiera se puede portar a otros procesadores del mismo tipo (por ejemplo, las instrucciones 3DNow de AMD no se pueden portar a otros procesadores de la serie Pentium).
Juegos escritos en ensamblador: No conozco ningún juego comercial desarrollado íntegramente en ensamblador. Sin embargo, algunos juegos utilizan el ensamblaje para la mayoría de las piezas en las que el tiempo es crítico.
Documentación: Si busca documentación en lenguaje ensamblador, principalmente busca documentación de chips. Hay alguna información sobre sus procesadores en Internet como Intel, AMD, Motorola, etc. En cuanto a los libros, vale la pena aprender "Lenguaje ensamblador: paso a paso".
5. Lenguaje Pascal
El lenguaje Pascal fue diseñado por Nicolas Wirth a principios de la década de 1970 porque estaba decepcionado de que FORTRAN y COBOL no obligaran a los estudiantes a capacitarlos en programación estructurada. El "código espagueti" se convirtió en la norma y el lenguaje de la época no se opuso a ello. Pascal fue diseñado para hacer cumplir la programación estructurada. Pascal fue diseñado originalmente estrictamente con fines didácticos, pero finalmente, una gran cantidad de fanáticos lo ayudaron a ingresar a la programación comercial. Cuando Borland lanzó Turbo Pascal en IBM PC, Pascal tuvo un momento de gloria. El editor integrado, el compilador ultrarrápido y el bajo precio lo hicieron irresistible, y la programación Pascal se convirtió en el lenguaje elegido para escribir pequeños programas para MS-DOS.
Sin embargo, con el tiempo, los compiladores de C se volvieron más rápidos y tenían excelentes editores y depuradores integrados. Pascal llegó a su fin cuando Windows se hizo popular en 1990. Borland abandonó Pascal y centró su atención en C para escribir programas para Windows. Turbo Pascal fue rápidamente olvidado.
Finalmente, en 1996, Borland lanzó su "asesino de Visual Basic": Delphi. Es un compilador Pascal rápido con una magnífica interfaz de usuario. Gracias a sus incansables esfuerzos, rápidamente ganó un gran número de entusiastas.
Básicamente, Pascal es más simple que C. Aunque la sintaxis es similar, carece de muchos de los operadores concisos que tiene C. Esto es a la vez algo bueno y malo. Aunque es difícil escribir código "inteligente" que sea difícil de entender, también dificulta algunas operaciones de bajo nivel, como la manipulación de bits.
Ventajas: Fácil de aprender, la operación dependiente de la plataforma (Dephi) es muy buena.
Desventajas: Los sucesores de Pascal orientados a objetos de "tendencia mundial" (Modula, Oberon) aún no han tenido éxito. Los desarrolladores de compiladores no reconocen los estándares del lenguaje. patentar.
Portabilidad: Muy pobre. La funcionalidad del lenguaje cambia de una plataforma a otra y no existe un conjunto de herramientas de portabilidad para manejar la funcionalidad específica de la plataforma.
Juegos escritos en Pascal: varios. El componente Delphi de DirectX amplía el campo de los juegos.
Información: Para encontrar información relacionada con Delphi, visite: Página de Inprise Delphi.
6. Visual Basic
Ja, BÁSICO. En la Edad de Piedra de los años ochenta, era el primer lenguaje para los programadores principiantes. La forma original de BASIC, aunque fácil de aprender, estaba terriblemente desorganizada. Utilizaba un "código en polvo" lleno de GOTO sin dudarlo. Al recordar los números de línea BÁSICOS y los comandos GOSUB, pocas personas pueden detener las lágrimas que brotan de las comisuras de sus ojos.
A principios de los noventa, y aunque no era el gigante que Apple esperaba, HyperCard seguía siendo un pequeño y atractivo entorno de programación incomparable en Windows. Los clones de HyperCard para Windows, como ToolBook, son lentos, torpes y costosos. Para competir con HyperCard, Microsoft licenció un pequeño entorno de programación llamado Thunder y lo lanzó como Visual Basci 1.0, con una interfaz de usuario muy innovadora en ese momento. Aunque el lenguaje todavía se llama Básico (ya no está en mayúsculas), está más estructurado y se han eliminado los números de línea. De hecho, el lenguaje se parecía más a Pascal con verbos de estilo Basic que al antiguo ROM BASIC integrado en TRS-80, Apple II y Atari.
Después de seis versiones, Visual Basic se ha vuelto muy hermoso. La interfaz de usuario ha cambiado mucho, pero el tema de "vincular el código a la interfaz de usuario" se mantiene. Esto lo convierte en un entorno excelente para la creación rápida de prototipos cuando se combina con la compilación justo a tiempo.
Ventajas: Entorno de edición limpio. La compilación justo a tiempo, fácil de aprender, da como resultado la creación de prototipos simples y rápidos. Toneladas de complementos disponibles. Aunque existen complementos DirectX de terceros, DirectX 7 está listo para brindar soporte para Visual Basic.
Desventajas: el programa es muy grande y requiere varias bibliotecas de enlaces dinámicos de tiempo de ejecución enormes para ejecutarse. Aunque los programas basados en formularios y diálogos son fáciles de completar, escribir buenos programas gráficos es más difícil. Llamar a programas API de Windows es muy complicado porque las estructuras de datos de VB no están bien asignadas a C. Tiene funciones OO, pero no está completamente orientado a objetos. patentar.
Portabilidad: Muy pobre. Debido a que Visual Basic es un producto de Microsoft, naturalmente está limitado a la plataforma en la que lo implementan. Dicho esto, las opciones que tienes son: Windows, Windows o Widnows. Por supuesto, existen herramientas que pueden convertir programas VB a Java.
Juegos escritos en Visual Basic: algunos. Hay muchos juegos gratuitos escritos en VB y algunos son comerciales.
Información: La página VB de Microsoft tiene información.
7. Java
Java es una "pequeña C" portátil diseñada originalmente por Sun para programas integrados. La idea de ejecutar pequeños programas en páginas web realmente atrajo la atención de muchas personas y, como resultado, este lenguaje creció rápidamente. Resulta que Java no sólo es adecuado para incrustar animaciones en páginas web, sino que es un pequeño lenguaje maravilloso para la programación completa de software. El mecanismo de "máquina virtual", la recolección de basura y la falta de punteros facilitan la implementación de programas confiables que no son propensos a fallar y no pierden recursos.
Aunque no es una secuela formal de C, Java toma prestada mucha sintaxis de C. Descarta muchas de las características complejas de C, lo que da como resultado un lenguaje compacto y fácil de aprender. A diferencia de C, Java fuerza la programación orientada a objetos, y escribir programas no orientados a objetos en Java es tan difícil como escribir "código espagueti" en Pascal.
Ventajas: El código binario es portátil a otras plataformas. Los programas se pueden ejecutar en páginas web. La biblioteca de clases incluida es muy estándar y extremadamente robusta. La asignación automática y la recolección de basura evitan fugas de recursos en el programa. Hay una gran cantidad de ejemplos de código en Internet.
Desventajas: al utilizar una "máquina virtual" para ejecutar código de bytes portátil en lugar de código de máquina nativo, el programa será más lento que un compilador real. Existen muchas tecnologías (como los compiladores "justo a tiempo") que mejoran enormemente la velocidad de Java, pero la velocidad nunca es tan rápida como la solución de código de máquina. Las primeras funciones, como AWT, no se consideraron cuidadosamente y, aunque oficialmente quedaron obsoletas, tuvieron que conservarse para mantener la compatibilidad con versiones anteriores. Cuanto más avanzada era la tecnología, más difícil resultaba lidiar con funciones de máquina de bajo nivel, y Sun era demasiado lento para agregar nuevas funciones "benditas" al lenguaje.
Portabilidad: La mejor, pero aún no donde debería estar. El código de bajo nivel es muy portátil, pero muchas interfaces de usuario y funciones nuevas son inestables en algunas plataformas.
Juegos escritos en Java: Hay una gran cantidad de pequeños Applets en la web, pero sólo algunos son comerciales. Hay varios juegos comerciales que utilizan Java como lenguaje de programación interno.
Información: La página oficial de Java de Sun tiene buena información. IBM también tiene una muy buena página de Java. JavaLobby es el mejor lugar para obtener noticias sobre Java.
8. Herramientas de creación
Los lenguajes de programación mencionados anteriormente cubren la mayoría de los juegos comerciales. Pero hay una excepción, el gran partido que destaca por su ausencia.
"Isla Misteriosa". Así es, los juegos comerciales más vendidos no están escritos en ninguno de los lenguajes anteriores. Aunque algunas personas dicen que "Mysterious Island" 99 se produjo utilizando herramientas de modelado 3D, su lógica de programación básica se completó en HyperCard.
La mayoría de las herramientas de creación son un poco como Visual Basic, excepto que funcionan en un nivel superior. La mayoría de las herramientas utilizan algún tipo de diagrama de flujo de arrastrar y soltar para simular el control del proceso. Hay muchos lenguajes de programación con interpretación incorporada, pero ninguno de estos lenguajes es tan sólido como los lenguajes independientes mencionados anteriormente.
Ventajas: creación rápida de prototipos: si su juego se ajusta al propósito de la herramienta, es posible que pueda hacer que su juego se ejecute más rápido que con otros lenguajes. En muchos casos, puedes crear un juego simple que no requiere codificación. Utilizando complementos, como los reproductores Shockware e IconAuthor, puede publicar programas generados por muchas herramientas de creación en la web.
Desventajas: derechos de patente, usted está a merced del fabricante de herramientas en cuanto a qué características se agregarán. Tienes que considerar si estas herramientas satisfarán las necesidades de tu juego, porque hay muchas cosas que esas herramientas creativas no pueden hacer. Algunas herramientas producen programas terriblemente inflados.
Portabilidad: debido a que las herramientas de creación son propietarias, su portabilidad está ligada a la funcionalidad que brindan. Algunos sistemas, como Director, se pueden crear y ejecutar en varias plataformas, algunas herramientas se crean en una determinada plataforma y se ejecutan en varias plataformas, y algunas solo se pueden crear y ejecutar en una única plataforma.
Juegos escritos mediante herramientas de autor: "Mysterious Island" y otros juegos de aventuras del mismo tipo. Todos los juegos de Shockwave están en línea.
Información: Director, HyperCard, SuperCard, IconAuthor, Authorware.
9. Conclusión
Es posible que desee obtener una conclusión más estándar sobre la pregunta "¿Qué idioma debo usar?" Desafortunadamente, no existe una solución única para todos. C es adecuado para programas rápidos y pequeños, pero no admite programación orientada a objetos. C soporta totalmente la orientación a objetos, pero es muy complejo. Visual Basic y Delphi son fáciles de aprender, pero no son portátiles ni propietarios. Java tiene muchas características interesantes, pero es lento. Las herramientas de creación pueden generar su programa lo más rápido posible, pero solo funcionan para ciertos tipos de programas. El mejor enfoque es decidir qué tipo de juego quieres escribir y elegir el lenguaje que mejor se adapte a tu juego. Es bueno que la práctica de la "prueba de 30 días" se haya convertido en un estándar de la industria.