Red de conocimiento informático - Conocimiento informático - ¿Qué deberías aprender primero al aprender a programar?

¿Qué deberías aprender primero al aprender a programar?

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. Estos son 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 descendiente. El lenguaje C, creado por Dennis Ritchie en los años 1970, es más potente y mantiene una herencia más continua de ALGOL, el sucesor estructurado de COBOL y FORTRAN. C fue diseñado para ser una versión más compacta y simple de sus predecesores, adecuada 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.

C admite programación estructurada, lo que significa que los programas en C se escriben como una colección de llamadas a funciones discretas (invocaciones) que se ejecutan de arriba hacia abajo, en lugar de como un único código integrado que utiliza declaraciones GOTO para controlar el flujo. pedazo. Por tanto, los programas en C son mucho más simples que el "código de polvo hueco" que integra FORTRAN y COBOL. De hecho, el lenguaje C aún conserva la sentencia GOTO, pero su funcionalidad es limitada y sólo se recomienda su uso cuando el programa estructurado es muy complejo.

Precisamente por sus raíces en la programación de sistemas, C es bastante fácil de combinar con el lenguaje ensamblador. La interfaz de llamada a 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 separados.

Ventajas: Propicio para escribir programas pequeños y rápidos. Fácil de combinar con lenguaje ensamblador. Existe un alto grado de estandarización por lo que las versiones en otras plataformas son muy similares.

Desventajas: No es fácil admitir tecnología orientada a objetos. A veces, la sintaxis puede resultar muy difícil de entender y dar lugar a abusos.

Portabilidad: las llamadas a funciones ANSI y centrales de C son portátiles, pero sólo para el control de procesos, la gestión de memoria y el manejo sencillo de archivos. Todo lo demás depende de la plataforma. Por ejemplo, al desarrollar programas portátiles para Windows y Mac, partes de la interfaz de usuario requieren llamadas a funciones dependientes del sistema. Esto a menudo significa que tienes que escribir el código de la interfaz de usuario dos veces, pero afortunadamente existen bibliotecas que pueden aliviar tu carga de trabajo.

Juegos escritos en C: muchísimos.

Información: El libro clásico sobre el lenguaje C es "El lenguaje de programación C". Este libro ha sido revisado muchas veces y se ha ampliado hasta tres veces su extensión original, pero sigue siendo un excelente libro de introducción. al lenguaje C.

2. C++

El lenguaje C++ hereda las características orientadas a objetos del lenguaje C. La programación orientada a objetos, u OOP, es una versión actualizada de la programación estructurada. Los programas OO se componen de objetos, que son colecciones discretas de datos y funciones. Hay un gran inventario de objetos disponibles, lo que hace que la programación sea tan fácil como apilar algunos "bloques 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++ ha sido fuente de debate, especialmente en foros de desarrollo de juegos. Algunas características de C++, como las funciones virtuales, añaden un nivel adicional de toma de decisiones a las 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. Este debate continúa y es poco probable que concluya pronto.

Creo que el gasto extra de C++ es un pequeño precio a pagar por utilizar un lenguaje mejor. El mismo debate se produjo en los años sesenta, cuando los lenguajes de programación de alto nivel como COBOL y FORTRAN comenzaron a sustituir al lenguaje ensamblador como lenguaje de elección. Los críticos señalan correctamente que los programas escritos en lenguajes de alto nivel son inherentemente más lentos que el lenguaje ensamblador escrito a mano.

Los defensores de los lenguajes de alto nivel argumentan 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 C para organizar programas grandes. Buen soporte para mecanismos orientados a objetos. Las bibliotecas compuestas por estructuras de datos comunes, como listas vinculadas y matrices ampliables, alivian la carga de lidiar con detalles de bajo nivel.

Desventajas: Muy grande y complejo. La mayoría de los compiladores no implementan todo el lenguaje correctamente.

Portabilidad: Mucho mejor que C, pero aún no muy prometedor. Dado que adolece de 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++: Muy, muy malos. La mayoría de los juegos comerciales están escritos en C o C++.

Libro de texto: La última versión de "El lenguaje de programación C++" es muy buena. Los tutoriales se dividen en dos campos, uno supone que conoces C y el otro asume que no. Con diferencia, el mejor tutorial de C++ es "¿Quién teme a C++?", y si ya estás familiarizado con C, prueba "Aprende C++ tú mismo".

3. ¿Debería aprender C++ o empezar con C?

No me gusta esta afirmación, pero es una continuación de "¿Qué lenguaje debo usar? Desafortunadamente, no existe". No hay una respuesta estándar. Puedes ahorrar mucho tiempo si aprendes C y escribes programas en él, pero hay dos desventajas al utilizar este enfoque:

Perderás conocimientos orientados a objetos porque puede hacer que el modelado de datos sea más eficiente en tus juegos

Muchos juegos comerciales importantes (incluidos los de disparos en primera persona) no utilizan C++, pero los autores de estos programas a menudo se atienen a técnicas de programación orientada a objetos, incluso si. lo hacen. Es el antiguo formato C. Si solo quieres aprender el lenguaje C, al menos debes aprender la tecnología de programación OO (orientada a objetos); si no, OO es un método perfecto para la simulación. Para aprender OO, sólo puedes "trabajar duro".

4. Lenguaje ensamblador

Obviamente, el lenguaje ensamblador es el primer lenguaje de computadora que en realidad es la representación en forma de comando. instrucciones que realmente ejecuta el procesador de la computadora. Trabajará con las capas inferiores del procesador, como registros y pilas. Si está buscando un idioma similar al inglés y que tenga instrucciones relevantes que se expliquen por sí mismas, este no es el caso. No es lo que estás buscando en cualquier otro idioma. Todo lo que se puede hacer se puede hacer con lenguaje ensamblador, pero no es tan simple; por supuesto, es como decir que puedes conducir a algún lugar o caminar a algún lugar, es solo una cuestión de dificultad. Eso es genial, pero la nueva tecnología hace que las cosas sean más fáciles de usar.

En términos generales, el lenguaje ensamblador no se usa en los juegos principalmente por las mejoras de rendimiento que se pueden lograr al usarlo. completamente en C. Estos programas se llaman miles de veces por segundo, por lo que ser lo más conciso posible ayuda a mejorar el rendimiento del juego, y llamar a funciones escritas en lenguaje ensamblador es muy sencillo. Usar dos lenguajes al mismo tiempo no lo es. un problema.

Nota especial: el nombre del lenguaje es "ensamblador". La herramienta que convierte el lenguaje ensamblador en código de máquina real se llama "ensamblador". Los métodos son comunes, así que use el nombre correcto del lenguaje. un punto de partida.

El lenguaje con menores ventajas y más rápido. Los maestros ensambladores pueden escribir programas mucho más rápido que otros lenguajes. Serás el primero en utilizar las últimas funciones del procesador porque puedes usarlas directamente.

Desventajas: Difícil de aprender, sintaxis oscura, insiste en la eficiencia, genera una gran cantidad de código adicional; no es apto para personas débiles de corazón.

Portabilidad: casi nula. Dado que este lenguaje fue diseñado para un solo procesador, no era portátil en absoluto. Si utiliza extensiones específicas del procesador, su código ni siquiera es portátil a otros procesadores del mismo tipo (por ejemplo, las instrucciones 3DNow de AMD no son portátiles a otros procesadores de la serie Pentium).

Juegos escritos en ensamblador: Que yo sepa, no existen juegos comerciales desarrollados íntegramente en lenguaje ensamblador. Sin embargo, algunos juegos utilizan el ensamblaje la mayor parte del tiempo para piezas críticas.

Documentación: si busca documentación en lenguaje ensamblador, principalmente busca documentación sobre el chip. Intel, AMD, Motorola y otras empresas tienen información sobre sus procesadores en sus sitios web. 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 capacitarse en programación estructurada. El "código de polvo hueco" se convirtió en la intención de diseño original de Pascal, lo que obligó a los estudiantes a usar programación estructurada. Pascal fue diseñado originalmente estrictamente para la enseñanza, pero eventualmente. ganó seguidores de culto e irrumpió en el mundo de la programación comercial. Cuando Borland lanzó Turbo Pascal en la PC de IBM, el editor integrado, el compilador ultrarrápido y el bajo precio de Pascal lo hicieron abrumador y Pascal se convirtió en el lenguaje preferido. para escribir pequeños programas para MS-DOS

Sin embargo, a medida que los compiladores de C se volvieron más rápidos y tenían excelentes editores y depuradores integrados, el lenguaje Pascal llegó a su fin cuando Windows se hizo popular en 1990 y Borland lo abandonó. el lenguaje Pascal y cambió a C++ para la programación de Windows; Turbo Pascal fue rápidamente olvidado.

Finalmente, Borland en 1996. En 2016, lanzó su "asesino de Visual Basic": Delphi, un compilador rápido de Pascal con un. magnífica interfaz de usuario. Este es un compilador de Pascal extremadamente rápido con una excelente interfaz de usuario. Delphi rápidamente se ganó el favor de una gran cantidad de entusiastas.

Básicamente, Pascal es más simple que C, pero carece de muchas características. que lo hacen fácil de usar Carece de muchos de los operadores concisos que tiene C. Esto es algo bueno y malo, aunque dificulta la escritura de código "inteligente" que es difícil de entender. >Pros: Fácil de aprender, las operaciones dependientes de la plataforma (Dephi) son muy buenas.

Contras: La "tendencia mundial" de los sucesores de Pascal orientados a objetos (Modula, Oberon) aún no ha despegado. El estándar no está respaldado por los desarrolladores del compilador.

Portabilidad: muy deficiente. Las características del lenguaje varían de una plataforma a otra y no existe un conjunto de herramientas de portabilidad para manejar las dependencias de la plataforma. escrito en Pascal: Varios componentes de Delphi para DirectX hacen que el campo de juego sea aún mayor

Información: Para obtener más información sobre Delphi, visite

6.Visual Basic

Ja, BÁSICO. Fue el primer lenguaje para los programadores allá por la Edad de Piedra de los años 1980. BASIC en su forma original, aunque fácil de aprender, estaba terriblemente desorganizado y hacía un uso irreflexivo de "código de polvo hueco" lleno de GOTO. No mucha gente puede contener las lágrimas en los ojos al recordar los números de línea BÁSICOS y los comandos GOSUB.

A principios de la década de 1990, aunque HyperCard no era el gigante que Apple había esperado, seguía siendo un entorno de programación pequeño y atractivo que no tenía rival en los sistemas Windows. Para Windows, los clones de HyperCard como ToolBook son lentos y torpes. y caro. Para competir con HyperCard, Microsoft obtuvo la licencia de un pequeño entorno de programación llamado Thunder y lo lanzó como Visual Basci 1.0, con una interfaz de usuario novedosa en ese momento.

Aunque este lenguaje todavía se llama Básico (ya no con mayúsculas), la estructura es más rigurosa y se han cancelado 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 lanzamientos, Visual Basic se ha vuelto muy hermoso. Aunque la interfaz de usuario ha cambiado mucho, aún conserva la idea principal de "conectar el código con la interfaz de usuario". 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 sencillo. La compilación justo a tiempo, fácil de aprender, permite la creación de prototipos simples y rápidos. Toneladas de complementos disponibles. Aunque existen complementos DirectX de terceros, DirectX 7 está listo con soporte para Visual Basic.

Desventajas: el programa es enorme y requiere múltiples bibliotecas de enlaces dinámicos de tiempo de ejecución enormes para ejecutarse. Si bien los programas de tipo formulario y diálogo son fáciles de completar, escribir buenos programas de gráficos es más difícil. Los programas que llaman a la API de Windows son torpes porque las estructuras de datos de VB no se corresponden bien con el lenguaje C. Propiedad.

Portabilidad: Muy pobre. Dado que Visual Basic es un producto de Microsoft, naturalmente sólo puede utilizarlo en plataformas de Microsoft. Es decir, sólo te queda elegir: Windows, Windows o Widnows: Por supuesto, existen herramientas para convertir programas VB a Java.

Juegos escritos en Visual Basic: Hay unos cuantos. Hay muchos malditos juegos recreativos y algunos juegos comerciales escritos en VB.

Información: La página de Microsoft VB tiene alguna información.

7.Java

Java es un "pequeño C++" portátil diseñado originalmente por Sun para su uso en programas integrados. La idea de ejecutar un pequeño programa en una página web atrajo a mucha gente y el lenguaje rápidamente saltó a la fama. Resulta que Java no sólo es bueno para incrustar animaciones en páginas web, sino que también es un pequeño lenguaje excelente para la programación completa de software. Su mecanismo de "máquina virtual", recolección de basura y falta de punteros facilitan la implementación de programas confiables que no fallan ni pierden recursos.

Aunque Java no es una secuela oficial de C++, toma prestada gran parte de su sintaxis. Abandona muchas de las complejidades de C++, lo que da como resultado un lenguaje compacto y fácil de aprender. A diferencia de C++, Java impone la programación orientada a objetos, y escribir programas no orientados a objetos en Java es tan difícil como escribir "código en polvo hueco" 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 poderosa. La compatibilidad automática con la recolección de basura evita fugas de recursos en los programas. Hay toneladas de rutinas de código en la web.

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 se ejecutará más lento que un compilador real. Existen muchas técnicas (como los compiladores "justo a tiempo") que aumentan en gran medida la velocidad de Java, pero nunca podrán igualar la velocidad de los programas de código de máquina. Las primeras funciones (como AWT) no se consideraron cuidadosamente y, aunque oficialmente quedaron obsoletas, tuvieron que conservarse por motivos de compatibilidad con versiones anteriores. Cuanto más avanzada es la tecnología, más difícil es manejar funciones de máquina de bajo nivel, por lo que Sun ha tardado en agregar nuevas características "benditas" al lenguaje.

Portabilidad: Mejor, pero aún no donde debería estar. El código subyacente es muy portátil, pero muchas interfaces de usuario y nuevas funciones son inestables en algunas plataformas.

Juegos escritos en Java: Hay una gran cantidad de pequeños applets en Internet, pero sólo unos pocos están disponibles comercialmente. Hay varios juegos comerciales que utilizan Java como lenguaje de programación interno.

Información: La página oficial de Java de Sun proporciona buena información. IBM también tiene una muy buena página de Java.

JavaLobby es el mejor lugar para noticias relacionadas con Java.

8. Herramientas de escritura

Los lenguajes de programación anteriores cubren la mayoría de los juegos comerciales. Pero hay una excepción, un gran partido que destaca por su ausencia.

"Isla Misteriosa". Así es, el juego comercial más vendido no está escrito en esos lenguajes, aunque algunos dicen que el 99% de Myst se creó utilizando herramientas de modelado 3D, y la lógica de programación subyacente se realiza utilizando 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 diagramas de flujo de arrastrar y soltar para simular el control de procesos. Muchas herramientas tienen lenguajes de programación interpretados integrados, pero no son tan poderosos como los lenguajes independientes mencionados anteriormente.

Ventajas: creación rápida de prototipos: si tu juego se ajusta al propósito de la herramienta, es posible que puedas ejecutarlo más rápido que con otros lenguajes. En muchos casos, puedes crear un juego simple que no requiere codificación. Utilizando complementos como Shockware e IconAuthor Player, puede publicar muchos programas generados por herramientas de creación en sus páginas web.

Contras: Propietario, estás a merced del fabricante de la herramienta y no sabes qué funciones se agregarán. Debes considerar si estas herramientas satisfarán tus necesidades de juego, ya que hay muchas cosas que estas herramientas de producción no pueden hacer. Algunas herramientas generan programas muy 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 múltiples plataformas, algunas herramientas se pueden crear en una plataforma y ejecutarse en múltiples plataformas, y algunas herramientas solo se pueden crear y ejecutar en una plataforma.

Juegos escritos utilizando herramientas de autor: "Mysterious Island" y varios otros juegos de aventuras similares. Todos los juegos de Shockwave están en línea.

Materiales: Director, HyperCard, SuperCard, IconAuthor, Authorware.

9. Conclusión

Quizás quieras preguntar: "¿Qué lenguaje debo usar? C++ es totalmente compatible con la programación orientada a objetos, pero es muy complejo. Visual Basic y Delphi son fáciles de aprender". , pero no son portátiles y son herramientas de escritura propietarias que permiten escribir programas lo más rápido posible, pero solo funcionan para ciertos tipos de programas. La mejor manera es decidir primero qué tipo de juego quieres escribir y luego. Elija el juego que mejor se adapte a sus necesidades. Afortunadamente, el método de "prueba de 30 días" se ha convertido en un estándar de la industria.