¿Qué lenguajes de programación debe saber una licenciatura en ciencias de la computación cuando se gradúa?

El idioma no importa.

Los idiomas son formas diferentes de comunicar la misma idea.

Algunos son más elegantes que otros, pero todos tienen el mismo propósito.

Lo que debe saber cuando se gradúe son conceptos básicos de programación que le permitirán determinar qué lenguaje de programación se adapta mejor a lo que intenta lograr. Entonces puede pasar tan poco como un día aprendiendo un idioma.

Estoy en un curso de desarrollo de software en este momento. Estamos aprendiendo Python, luego Java, luego algunas variaciones diferentes de C, junto con algunos SQL, PHP y JavaScript.

Aquí está la cosa, en cada curso, en cada nivel, hay personas que parecen brillar. Están completando todas sus tareas por delante de todos los demás, etc.

Luego les preguntas por qué usaron un ciclo while o un ciclo for o por qué eligieron un curso de acción particular. ¡No te pueden decir! No entienden la programación en un nivel fundamental.

Han aprendido a leer la sintaxis de un idioma en particular. Esto les ha permitido leer código y, por lo tanto, juntar fragmentos de código (en ese idioma) que logran ciertas cosas. Pero no saben por qué lo hicieron.

Imagina esto. Tienes un problema. Usted sabe que este problema puede resolverse con una declaración if, dos señalados para bucles y distribuidos en 3 funciones.

Puede resolver este problema utilizando casi cualquier lenguaje de programación en el mundo. Si no sabe qué es un bucle y no entiende si se afirma, nunca podrá resolver el problema.

Recuerdo que me dijeron que la licenciatura no se trata de conocer lenguajes de programación, sino de comprender los principios. Lo cual es bueno pero no ayuda a encontrar trabajo. (Nos estaban mintiendo diciendo que “la asignatura / lenguaje X no contribuye a la comprensión”, pero otros profesores decían que simplemente no podían encontrar profesores expertos en ese idioma.) Entonces sí, necesita saber ciertos lenguajes de programación.

Le recomiendo que consulte las “tendencias de moda” actuales: The Coding Standards Company con correlación para su localidad y, lo que es más importante, el campo en el que desea trabajar y sus preferencias personales. No tiene sentido aprender R si no estás interesado en las estadísticas y JavaScript es de poca utilidad fuera de la web. Le sugiero que examine las ofertas de trabajo y descubra la intersección de “lo que me gusta” y “dónde tengo una oportunidad”.

Como regla general, necesitará SQL prácticamente en todas partes, y lo más probable es que use algún tipo de lenguaje derivado de C (C / C ++, Java, C #, Objective-C, JavaScript).

Lo que no puedes hacer es aprender todos los idiomas del planeta. Ni siquiera sobre tu carrera. (Jean Samet, investigadora de IBM, hizo una encuesta … y encontró más de 1500 lenguajes de programación. Eso no es sorprendente … la parte impactante es que hizo esta encuesta en 1973. No ha mejorado).

Lo que desea es comprender los diferentes modelos de ejecución de programas y aprender lo que comparten la mayoría de los idiomas de programación.
(Aquí hay una lista tal como la veo: página en stackexchange.com)

Como idiomas, sugeriría:

* Java: para OOP, computación procesal e ideas para grandes bibliotecas de usuarios.
* SQL: este es un lenguaje ampliamente utilizado para almacenar / recuperar datos.
* Prólogo: para aprender un lenguaje no procesal basado en lógica y restricciones
* VHDL: para comprender lenguajes específicos de dominio
* M4: para comprender el procesamiento macro serio
* Erlang: para aprender sobre la programación del sistema distribuido
* Esquema: (especialmente del libro de Abelson Sussman) Para un lenguaje en el que puede implementar muchos paradigmas fácilmente

Depende de lo que quieras hacer en tu carrera. La mayoría de las personas aprendería muchos idiomas, pero lo principal es saber acerca de varios algoritmos y estructuras de datos que se pueden implementar en la mayoría de los lenguajes de programación.
Depende de en qué te quieras especializar, si quieres acceder a bases de datos y otras cosas, aprenderías SQL o algunas cosas que no son SQL. La mayoría de los estudiantes conocen los principales lenguajes orientados a objetos como Java y C ++, pero aprenden cosas nuevas por su cuenta para trabajar en su interés. Si quiere entrar en la web, aprenderá HTML CSS JavaScript y sus diferentes bibliotecas. (diferentes idiomas para diferentes cosas)
No todos los idiomas se enseñan en clase, y para la mayoría de ellos hay que aprenderlos por su cuenta.
Estoy en mi segundo año y sé un montón de idiomas, pero solo 3 de ellos se enseñaron en clase, el resto lo aprendí de codeacademy o lynda, y luego trabajé en ellos para que mi comprensión de estos fuera más clara.

Un graduado con una licenciatura en ciencias de la computación debe estar familiarizado con varios lenguajes diferentes, que representan múltiples paradigmas de programación. Qué lenguajes específicos me parecen menos importantes; los idiomas preferidos cambian de año en año, después de todo. El objetivo de un título en informática no es aprender a ser un programador profesional; No es un programa de formación profesional.

Solo completé dos años y medio de una licenciatura en CS a fines de los años 80, y cuando cambié de especialización, había aprendido al menos 15 idiomas. Pero llegué al programa sabiendo BASIC, Pascal, LISP, Logo, tres tipos de ensamblaje (Z-80, Intel x86 y VAX-11), FORTRAN y C. Creo que los idiomas que aprendí cuando era estudiante fueron de gran utilidad para mí a largo plazo: lex, yacc, awk, Perl y Prolog, pero, sinceramente, las partes que me quedan más útiles hoy en día fueron aprender a analizar, desarrollar y probar algoritmos, una comprensión básica de los límites de computabilidad (p. ej., complejidad computacional, tesis de Church-Turing, teorema de incompletitud de Goedel) y cómo escribir analizadores. Ninguno de estos conocimientos es específico de ningún idioma.

Justo después de que el planeta se enfriara, cuando era un muchacho, los programadores solían jactarse de cuántos idiomas habían aprendido o utilizado. Por supuesto, esto fue antes de la aparición generalizada de los sistemas de bases de datos, sin mencionar OO, y mucho menos de las bases de datos OO. Hoy en día, diría que su pregunta podría reducirse a dos objetivos: la educación adecuada y la idoneidad para el empleo en la carrera profesional elegida.

Creo que es importante aprender lenguajes que sean representativos de varios paradigmas: de procedimiento, funcionales, etc. Esto sugiere C ++ o Java, Haskell, etc. Pero entonces ni C ++ ni Java lo hacen para los scripts; por lo tanto, Python, tal vez. Y esta es una excelente manera de aprender muchas otras cosas, como generadores y software de aplicación para hacer matemáticas formales. Algunas variedades básicas de sistemas de bases de datos y, por supuesto, SQL. Esté preparado para usar un lenguaje de programación lógica, digamos Datalog, como una capa en el SQL.

Realmente necesita elaborar un plan sobre a dónde le gustaría ir, para poder aprovechar las oportunidades que se presentan. En el desarrollo profesional, esto se llama “casualidad planificada” (que está relacionada con la teoría del caos de las carreras). ¿Qué áreas de ciencias de la computación tienen el mayor atractivo para usted y qué tienen de atractivo? ¿Qué necesitas para entrar a esas áreas? ¿Qué necesitarás hacer para quedarte? ¿Cómo probarás tu competencia? Esto, sobre todo, podría ser lo que debería aprender. Excepto que, la excelencia en un área probablemente demuestra que puedes lograrlo en otra.

El objetivo de una educación en CS no es aprender lenguajes de programación, sino aprender los conceptos centrales de la informática. En el curso de sus tareas, tendrá que aprender una variedad de idiomas para completarlas. No hay criterios reales para cuántos idiomas debes saber. Uno sería suficiente si tuviera una base sólida en algoritmos, ingeniería de software y otros temas. También es más importante conocer un idioma bien que una docena de idiomas solo un poco. Esa es mi opinión, de todos modos.

C, un lenguaje funcional (raqueta, haskell, etc.), un lenguaje de secuencias de comandos (shell, python, perl, etc.) y SQL como mínimo.

También valdría la pena aprender Java y jugar con Forth.

Por último, aprender algunos idiomas y / o marcos para la programación web también sería una buena idea.

Estoy de acuerdo con las otras respuestas, que depende de dónde esperes especializarte en informática. Una estrategia que aprendí al final de mi carrera es tratar de encontrar empresas cercanas a usted que estén haciendo lo que cree que le gustaría hacer. Si no sabe lo que hacen, puede preguntar. Si están en su callejón, pida hablar con un director de contratación que contrate para TI, o un ingeniero sénior, o un puesto similar, y vea si puede concertar una entrevista / almuerzo con ellos. Ahora, esto no es una entrevista de trabajo. Es importante tener esto en cuenta, ya que si intentas convertirlo en una entrevista de trabajo, probablemente será un apagado instantáneo para ellos. Si lo convierten en una entrevista de trabajo, eso es diferente. El objetivo principal es para su edificación, aunque he oído que sugiere que tiene un currículum a mano, si está interesado en algún tipo de empleo con ellos, porque pueden solicitarlo. Incluso si lo solicitan, puede que no resulte en una entrevista de trabajo real en el futuro, pero es mejor tenerlo a mano que no.

Cuando te reúnas con ellos, ten tus preguntas listas. Solo dígales qué está haciendo, dónde está su interés, por qué pensó que tenía algo en común con ellos y pregúnteles qué tecnologías están usando, si están dispuestos a decirlo, y qué tecnología ven en tendencia en el futuro. futuro para ellos mismos. También les puede gustar hablar sobre lo que les gusta de trabajar donde están o hacer lo que hacen, por lo que también es bueno preguntar sobre eso.

Hice esto un par de veces cuando estaba buscando trabajo. Para mí, es una especie de “investigación de mercado”. Me resultó muy útil para dirigir mis elecciones sobre qué tecnología aprender. Finalmente encontré trabajo nuevamente, porque pude decir que tenía habilidades relevantes.

Algunos adicionales:
C, C ++ para que aprenda la gestión de la memoria y las estructuras de datos