¿Cuáles son algunos programas y lenguajes de programación que todo ingeniero debería aprender?

Creo que aprender muchos idiomas diferentes lo convertirá en un mejor programador, al igual que aprender muchos algoritmos diferentes lo hará mejor para resolver problemas.

C o C ++ : si bien es posible que no lo necesite a diario, conocer un idioma de bajo nivel cambia su forma de pensar acerca de la memoria (aprenda C ++ si tiene más tiempo; de lo contrario, solo C)
– Lenguaje funcional (Haskell, OCaml, F #, pero no Scala) : casi todos los lenguajes tienen algunos aspectos funcionales … saber que estos te enseñarán cómo escribir código funcional y, lo que es más importante, te enseñarán la recursión.
Mathematica / Matlab – algunos problemas son fáciles de resolver en lenguajes especializados
Prólogo : la unificación es poderosa y se puede implementar en casi cualquier lenguaje para resolver problemas basados ​​en la lógica
Lisp (no importa cuál) – la sintaxis (o su falta) y las macros son una revelación.
El lenguaje de scripting dinámico (ya sea Ruby o Python o Perl o Bash, no importa) – a veces solo necesitas hacer algo rápidamente

Ya que habla de ingenieros, no de desarrolladores de software, le sugiero que siga:

– Octave o Matlab: son herramientas muy útiles y competentes para cálculos matemáticos y visualizaciones, etc. Mathematica es similar, pero es conveniente que Matlab tenga la prima gratuita Octave, que utiliza el mismo lenguaje de programación. Hay casos en los que, por ejemplo, las hojas de cálculo también son útiles, pero mezclar su programación / reglas y sus datos en el mismo archivo es un pecado mortal. ¡Vuelve para morderte!

– Python: como ingeniero general, es posible que desee programar un poco a veces, pero es importante que las cosas fáciles sean fáciles de resolver y que sea una herramienta pragmática. Python es fácil de usar, rápido para hacer las cosas y ampliamente utilizado por los científicos, en GIS y en muchas áreas de ingeniería.

– SQL: para la mayoría de los ingenieros, habrá muchos casos donde los datos útiles residen en una base de datos relacional. Saber un poco sobre la consulta de bases de datos es ciertamente útil.

– La plataforma Linux / Unix, y la potencia o la línea de comando y mantener los datos como texto. Hay un libro bueno y corto llamado La filosofía de Unix por Mike Gancarz. Evitar los formatos de archivos binarios y mantener datos importantes en archivos que sean legibles para los seres humanos y para programas genéricos (no solo específicos) es extremadamente poderoso y liberador. Python (o cualquier lenguaje de programación) es ciertamente más útil si sus datos importantes no están bloqueados en algún formato binario propietario. Las herramientas de control de versiones como git, y las herramientas diff, etc. se vuelven útiles. Puedes usar cualquier editor (Atom o Sublime, por ejemplo) para mucho más que simples textos.

– Use algo como Markdown para la documentación. Si se encuentra con necesidades de documentación más avanzadas, puede ir a LaTeX, etc.

Cada ingeniero debe aprender el lenguaje ensamblador para al menos una computadora. Es la mejor manera de obtener una buena visión de cómo funcionan realmente las computadoras. Aún mejor, comience con una máquina simple y escriba todo el software necesario para que haga algo simple, como leer las teclas desde un teclado e imprimir los caracteres en una pantalla. Suena simple, ¿verdad? Excepto que tienes que descubrir cómo interactuar con el teclado y el monitor y hacer que todo funcione correctamente. Aún mejor, hacerlo utilizando un enfoque impulsado por interrupciones. Una vez enseñé un curso que requería que los estudiantes hicieran esto y luego me dijeron con frecuencia que era el mejor curso que habían tenido.

Una vez trabajé con un grupo de doctores en informática, cuya especialidad era la inteligencia artificial. Todos estos chicos creen que la máquina Lisp era una computadora real y que ignoraban por completo cómo funcionan las computadoras reales. Como resultado, cuando todos formaron una empresa para fabricar productos comerciales que funcionaban con Lisp Machines, terminaron en bancarrota: sus productos eran tan lentos e ineficientes que nadie los compraría. Pidieron que les devolvieran el trabajo, pero estábamos en medio de hacer aplicaciones para aeronaves de alto rendimiento y porque no sabían cómo funcionan las máquinas reales, por lo que a nosotros respecta, estos doctores no podían trabajar.

Los ingenieros de software no son todos iguales. Muchos se especializan en ciertos campos y es poco común que un ingeniero trabaje en todos los campos. Entonces realmente no hay idiomas que TODOS los ingenieros deban aprender.

Pero si está preguntando desde la perspectiva de qué maximizará las oportunidades profesionales, entonces se puede dar una respuesta razonable. Java y Python son los lenguajes más populares del mundo. Tienen la mayor cantidad de ofertas de trabajo en Indeed.com. También son los lenguajes de programación más versátiles. Estos idiomas deben ser considerados seriamente.

C también es un buen lenguaje para los sistemas y la programación integrada. Un ingeniero probablemente se encontrará con tales aplicaciones en su carrera.

Quiero enumerar solo los lenguajes de programación, porque la lista de software depende de lo que esté haciendo en tareas periféricas, no evitando el paquete de ofimática, que es una necesidad para todas las personas que usan la tecnología de alguna manera.

Desde una amplia visión general apostaría mi conocimiento como programador en tres conceptos:

  • Bases de datos (relacionales y no relacionales)
  • Lenguajes compilados
  • Lenguajes de scripting

Según DBMS ‘, puede comenzar de lo más pequeño a lo más pesado (como de SQLite a Oracle, MongoDB o cualquier otro nombre, Microsoft SQL Server).

Lenguajes de programación que me gustaría listar así:

  • C ++
  • Pitón
  • C # / Java

Pero, tenga en cuenta que, para completar esta lista, se necesita una gran cantidad de energía, tiempo y prácticas / inversiones de aprendizaje.

Esto depende de qué tipo de ingeniero.

Para la ingeniería de software, para ser ‘pila completa’, desea poder hacer lo siguiente:

  • presentación
  • transferencia de datos entre ordenadores y IO
  • manipulación lógica
  • administración de computadoras
  • almacenamiento de datos.

Para la presentación , aprenda muy bien la función c printf . Recoge algo de HTML, javascript y CSS para hacer las cosas presentables.

Para la transferencia de datos , sepa cómo usar JSON , tenga una idea de qué es XML . Entienda los sockets y aprenda a leer / escribir y use una API publicada. Los hilos y la programación de procesos múltiples son útiles para saber. Conozca telnet, ya que puede ayudar a depurar IO. Conozca el comando de reposo y lo que hace, y sea consciente de cuáles son las señales y mutexes.

Para la manipulación lógica , conozca un lenguaje tipo C que podría ser C, perl, java, python , etc.

Para la administración de computadoras , conozca BASH, Shell Scripting y el sistema de archivos UNIX , cómo controlar los procesos y los permisos de los usuarios. Conozca el directorio / etc y cómo funcionan los archivos de bloqueo y cómo se encuentran los archivos de configuración.

Para el almacenamiento de datos, conozca SQL y al menos los conceptos de una base de datos que no sea SQL . Sepa leer y escribir archivos planos desde el sistema de archivos.

Una última cosa, saber cómo usar vi, al menos lo suficiente para hacer ediciones simples. Aprende a usar vi o emacs (o algún otro editor de RC cola) realmente bien, ya que el editor es la herramienta principal. Use la herramienta que se ajuste a su mente, incluso si es un IDE.


Si hablamos de ingeniería mecánica, Matlab es un buen candidato. Cualquiera de los anteriores ayuda, pero especialmente SQL y un lenguaje de scripting para usar.

He utilizado Fortran, C ++, Basic, Pascal y Java. Desde mi experiencia, el lenguaje más adecuado para los ingenieros es Pascal, ahora llamado Borland Delphi por Embarcadero. Es un lenguaje muy limpio, lógico, claramente definido, estructurado y modular. El entorno de desarrollo es muy fácil de usar y compila muy rápido, 1 millón de líneas en segundos. Lo mejor es que aún puede leer el código incluso después de no haberlo visto durante años (intente hacerlo en fortran, c ++ o java). Puede manejar proyectos de software muy grandes fácilmente gracias a su estructura objetivo / modular. Hay una versión gratuita totalmente funcional que se puede usar para un software de ingeniería serio. La versión completa incluye la base de datos de redes y el desarrollo móvil. Existen numerosas bibliotecas de terceros disponibles, pero para la mayoría de los desarrollos de ingeniería, rara vez se necesita una. Solo uso OpenGL y PowerPdf biblioteca adicional.

La velocidad numérica es muy rápida utilizando solo su propia biblioteca matemática. Para un desarrollo serio, olvídese de la biblioteca científica estándar, ya que de todos modos debe desarrollar su propia versión optimizada o fuera de núcleo. Delphi también admite programación paralela, bucle paralelo con solo 1 línea agregada. También es compatible con varios idiomas, Win10, Android, OSX, IPhone en una sola versión de código.

Lo estoy utilizando para desarrollar un programa integrado de análisis estructural y diseño (Centro de Investigación de Software de Ingeniería (PT Anugrah Multi Cipta Karya)) con millones de líneas de código. Me pregunto por qué otros ingenieros siguen perdiendo el tiempo aprendiendo cientos de palabras clave, comandos, bibliotecas, etc., mientras pueden lograrlo fácilmente utilizando Delphi.

En resumen, Delphi tiene el poder de C ++, las plataformas de Java, la velocidad de Fortran, con la facilidad de Visual Basic.

Con C ++, debe pasar toda su vida aprendiendo y haciendo programación en C ++, usando Delphi, puede hacerlo en su tiempo libre fácilmente y aún enfocándose en problemas de ingeniería, no en depuración de C ++.

Buscar en google: descargar gratis Delphi Studio Berlin

Cerca de metal – C
Escriba un lenguaje OO seguro, antiguo, detallado pero importante – Java
Tipo seguro puro funcional – haskell
Tipoafe basado en GC funcional e híbrido OO – Scala
Lenguajes dinámicos – Python, Javascript
Lenguajes de script: shell scripting, awk, perl
Dinámico, recogida de basura y escalable masivamente – Erlang
UI – HTML5

Gracias por la A2A.

No sé si tengo alguna calificación para declarar esta lista, pero aquí está.

Cómo utilizar un sistema operativo como windows / linux / IOS. Algún tipo de software de procesamiento de textos, software de hoja de cálculo, software de presentación para realizar informes que incluyen gráficos. Python, línea de comando de Linux, línea de comando de Windows

Me pidieron que respondiera a esta pregunta y tal vez no.

No estoy completamente seguro de que se requiera que todos los ingenieros aprendan un software o idioma en particular. Sin embargo, creo que lo siguiente sería de aplicación casi universal o sería tan amplio como para que valga la pena:
1) Hojas de cálculo
2) CAD
3) SIG
4) Matlab o Mathematica

Unos cuantos más que son menos esenciales para todos, pero casi universalmente enriquecedores:
5) Bases de datos
6) Un lenguaje utilizado en simulación o computación de alto rendimiento, como C o Fortran
7) Una herramienta de creación de aplicaciones como RubyOnRails o VisualBasic

Las otras respuestas hasta ahora son sugerencias de lenguaje adicionales razonables para desarrolladores de software o informáticos .

SQL, PHP, JavaScript. En algún momento necesitará interactuar con bases de datos y redes. Aparte de eso, realmente depende de lo que quieras hacer y del tipo de ingeniero que seas. Estoy asumiendo algún tipo de ingeniero de software.

Según Bjarne Stroustrup, uno debe saber C, C ++, Python, Java, Haskell.
Revisa :

https://www.youtube.com/watch?v=LR8fQiskYII

Observo que no dijiste Ingeniero de Software.

Mi sugerencia es que aprenda qué idioma (s) es más comúnmente usado en su propio campo, ya sea que se use directamente o como la base de herramientas de software comunes a las que se le puede pedir que configure, modifique o extienda.

1) C
2) Algo dinámico como Ruby, Python, Javascript
3) Algo totalmente diferente: Haskell, Prolog y Nim.

Creo que el conocimiento sobre Sql, Html, JavaScript, Java o c o c sharp, Trabajar en IDE como Eclipse o Visual studio, Microsoft Office y Photoshop son útiles para ser un buen ingeniero informático