Debes aprender diferentes “clases” de idiomas. Esta respuesta se aplica a todos realmente. Ya sea la universidad o no. Pero cuanto antes los aprendas, mejor sentido tendrán muchas cosas.
Ahora, antes de entrar en una lista de esos idiomas, creo que una pregunta de seguimiento que debe hacerse es: “¿Qué tipo de problemas debo resolver o aprender a resolver en la universidad?” La respuesta a esa pregunta influirá enormemente en cómo percibe la respuesta a esta pregunta aquí.
Por ejemplo, si observa el análisis estático del código fuente, los probadores de teoremas o la verificación formal, de repente le encantará Prolog, lo que puede tener muy poco sentido para mostrar una cotización de acciones. Hay muchas transformaciones de datos que hago cuando los lenguajes de tipo Prolog tienen TANTO MUCHO sentido y escribir el mismo código en lenguajes de procedimiento es francamente hostil.
- ¿Puede un estudiante participar en TODAS las Olimpiadas? Por ejemplo, IBO, IOI, IMO, IPhO, IChO? ¿Seria posible?
- ¿Por qué las calificaciones tienen que definir quién soy?
- Cómo estudiar MS en Alemania
- He pasado la clase 12 recientemente con asignaturas de ciencias. Quiero ser un oficial de la IAS. ¿Qué debo hacer ahora?
- ¿Qué debo saber antes de ingresar a una universidad de administración hotelera que me ayudaría en la universidad?
C tendrá mucho sentido en todo el lugar, pero especialmente al escribir software de sistemas. Con C, lo que ves es lo que obtienes. Pienso en C como un preprocesador de macros sobre código de máquina (técnicamente eso es CADA idioma, pero C está realmente cerca). Por ejemplo, una función-call es una función-call es una función-call en C cada vez. Asi es como funciona. Con C ++, comenzarás a tener abstracciones como sobrecargas y no sabrás hasta el momento del enlace cómo se comporta algo (y por qué Linus lo rechaza por el núcleo).
C ++ comienza a tener sentido para los grandes sistemas de componentes interactivos en los que desea establecer “contratos” entre organizaciones, personas o incluso empresas. C # / Java son versiones más seguras / más fáciles de C ++ (¡voy a quemarme muchísimo por decir esto !:-D)
Lisp es genial. El segundo lenguaje de programación jamás inventado, representa datos como programas y programas como datos. Imagina que si las “líneas” de tu programa Java fueran una matriz de Java. De modo que podría escribir lógica basada en matrices para recorrer las líneas de sí misma. (Mala analogía: eso es lo mejor que puedo hacer en dos líneas). Encontrará que muchos idiomas toman prestados los mismos conceptos: Javascript, Perl, etc., le permiten declarar más código desde dentro del idioma (el famoso “ridiculizado”. ) Esto significa que JSON no es un “formato”. Es un código de Javascript literal, de la misma manera (1 2 3 4) en Lisp no es simplemente una estructura de datos. Es un código literal de Lisp.
Erlang presenta muy poco en términos de “lenguaje”, pero demuestra conceptos clave del tiempo de ejecución. Los sistemas altamente disponibles son tan fáciles de escribir en ellos. Heroku, SimpleDB, el Whatsapp de 19 mil millones de dólares utilizan Erlang, por no mencionar los enrutadores Ericsson que tienen un tiempo de actividad tan alto, que es del orden de 2 minutos por cada 40 años (cita requerida: podría estar equivocado).
Si va un poco más lejos, puede salir de la arquitectura Turing Machine / Von Neumann. Todos los idiomas que he mencionado / hablado son Turing-Complete (o son subconjuntos; consulte Chomsky Heirarchy). Es decir, usted es el “programador” que da instrucciones a una máquina.
Las redes neuronales artificiales son una forma de programar un tipo de “máquina” completamente diferente: mediante ejemplos. Puedo mostrar las fotos de un perro de ANN 50 y hacer que “aprenda” cómo se ve un perro. (Nuevamente simplificación bruta porque tengo que comprimirla en dos líneas).
Para resumir, puedo pensar en algunas cosas conceptuales que quieres cubrir:
1. Los tipos de problemas que resolvemos, o tendremos que resolver.
2. Lenguajes de programación lógicos / declarativos / basados en predicados.
3. Idiomas de nivel de máquina o de bajo nivel (C, Rust, Assembly.)
4. Programación funcional (Lisp, F #, Scala, Javascript)
5. Programación orientada a objetos (Smalltalk, Objective-C, C ++, Java, C #)