¿Cuál es el mejor lenguaje para dominar para ser un programador experto?

Bueno, supongo que Eric Raymond al rescate.

Cómo convertirse en un hacker

Su consejo es bastante sólido: aprende al menos uno de cada tipo de lenguaje y aprende a trabajar en diferentes tipos de sistemas. Eso realmente te hará mejor.

En el panorama actual, esos idiomas serían en mi humilde opinión:

do
Java / C # .NET
Rubí
JavaScript
Ceceo

Y agregaría algunos más:

Erlang (algunas personas podrían poner esto en la lista de 5)
Scala / Haskell: elegiría Haskell si tienes una opción antes de mudarte a Scala
C objetivo
D-lang

1. No intente aprender la abominación que es C ++ sin dominar C primero. La gran longitud y amplitud del lenguaje te abrumarán. Los desarrolladores de Badass como Linus Torvald se han registrado con su desprecio por C ++.

2. Los lenguajes de nivel superior pueden darle una eficiencia mucho mejor en la construcción de sistemas grandes, a costa del rendimiento; sin embargo, los compiladores modernos son generalmente muy buenos y escribir algo desde cero en C ahora no es muy viable. Todavía es necesario aprender programación de bajo nivel, porque de vez en cuando, hará ajustes de rendimiento y algunos componentes altamente tendrán que estar escritos en un lenguaje de bajo nivel. Pero eso es probablemente el 5% de toda la aplicación en un proyecto promedio.

3. No es necesario que aprenda esto en un día: lleva años convertirse en un buen programador, por lo que puede tomarse su tiempo con un idioma a la vez. Aprender el primer idioma lleva la mayor cantidad de tiempo, luego se vuelve más fácil a medida que mapea rápidamente conceptos antiguos y solo comprende algunos conceptos nuevos más una nueva sintaxis.

Recomendaría JavaScript como su primer idioma: es un lenguaje difícil de entender (aprenderá lo básico pronto pero tiene muchas peculiaridades); pero está en todas partes, y puede desarrollar todo tipo de aplicaciones con él, por lo que es mejor que lo aprenda primero.

Si decide aprender SOLO UN idioma, deje que sea JavaScript.

4. Nunca, nunca mire la popularidad de un idioma para decidir aprenderlo. Intente seguir a los desarrolladores fuertes, generalmente irán en contra de la tendencia y usarán lenguajes que no sean mainstream, que les den una ventaja en el proyecto que están en. Ese es el objetivo; Trate de utilizar las mejores herramientas para este fin en cada proyecto.

5. Los idiomas no son más que una cosa que debes aprender: habilidades para resolver problemas, usar de manera efectiva herramientas (control de fuente, compilación), comunicación, diseño y muchas otras cosas que se necesitan para hacer un buen desarrollador, y debes seguir prestando atención a ellos también.

EDITAR: realizó algunas ediciones anteriores, ya que prevaleció un mejor juicio.

Dudo que un solo lenguaje lo exponga a todos los conceptos de programación o computación en un sentido más amplio. La mayoría de los idiomas tienden a tener un énfasis específico, y los conceptos que adoptan y exponen están orientados a casos de uso que se benefician más de esos conceptos. El lenguaje C tiende a enfatizar la cercanía al hardware y el modelado de la forma en que funciona la CPU y su conjunto de instrucciones. En contraste, el lenguaje Java está fuertemente orientado a objetos y hace énfasis en la portabilidad y la abstracción uniforme de la arquitectura subyacente. Hay lenguajes que enfatizan la facilidad de aprendizaje, los conceptos de inteligencia artificial, las matemáticas, la compacidad y muchos otros conceptos. Adquirir una base de conocimiento muy amplia requeriría cierta comprensión (no necesariamente dominio) de muchos de estos idiomas. Dudo que aprender lenguajes de programación de computadoras sea la mejor manera de aprender sobre computación y programación. Hay una razón por la que se enseña Informática, y estoy bastante seguro de que no se hace únicamente enseñando uno o más lenguajes de programación.

Para mí, la experiencia tiende a implicar especialización. Debe determinar de qué especialidad desea lograr el dominio y encontrar los idiomas que se aplican más estrechamente a esa especialidad.

Por otro lado, quisiera objetar su aparente noción de que la programación de bajo nivel contrasta de alguna manera con las ‘aplicaciones avanzadas’. Creo que la forma en que se realiza la codificación de bajo nivel es muy avanzada y requiere una gran experiencia. Leer el código en el kernel de Linux lo expondrá fácilmente. El término “bajo nivel” engaña a la gente para que piense que hay una especie de elemento novato en el campo, y nada podría estar más lejos de la verdad, en mi humilde opinión.

Depende de tus objetivos. Si desea lanzar una red amplia y trabajar para los grandes jugadores establecidos (piense en HP, IBM), un buen idioma para aprender sería como sugirió el usuario de Quora. El índice TIOBE (The Coding Standards Company) es un buen indicador de lo que se considera un lenguaje de programación profesional. Esto podría ser aplicable a empresas como Google, Facebook también, aunque también prefieren personas con habilidades de lenguaje de script como Python, Javascript, etc. Si desea unirse a una startup, la pila MEAN es popular ahora (MEAN.io – Un marco completo de Javascript Fullstack – MEAN.io – Un marco Javascript Fullstack). (M) ongoDB, (E) xpress, (A) ngularJS y (N) ode.js.

En cualquier caso, mire las ofertas de trabajo de las compañías que le interesan y luego decida.

Solicitó un idioma de bajo nivel después de solicitar un idioma experto específico. Estas dos cosas no son necesariamente separadas, sin embargo, las cosas en Python requerirán una cantidad de esfuerzo mucho menor en comparación con C ++, etc. Pero,

La mayoría de los programadores expertos se centran principalmente en el diseño y no en el código .

Puede programar un servidor web completo desde cero en C ++ y ser considerado un experto para la hazaña (ciertamente no es una tarea mundana), pero lo que el programador experto habría hecho es pinchar su cerebro para la mejor biblioteca o marco para hacerlo. La mayoría de las cosas típicas que hace un programador ya se han hecho antes, y se han hecho tantas veces antes que fue creado por varias personas y luego implementado por más programadores.

Entonces, la idea de un idioma perfecto o un idioma experto es bastante tonta.

Para responder a su pregunta de lenguaje de bajo nivel, C ++ se usa generalmente para software de uso intensivo de recursos que se ejecuta en un escritorio. Si profundiza en el agujero del conejo en los sistemas integrados, encontrará que tendrá que aprender muchos lenguajes de ensamblaje diferentes .

La respuesta corta es que no hay un ejemplo brillante de un idioma que sea la respuesta a todas nuestras necesidades. C te lleva “más cerca del metal” pero conserva el estado de alto nivel. El creador de C ++, Bjarne Stroustrup, afirmó que hay alrededor de 7 lenguajes diferentes dentro de C ++ y agrupados. C ++ es excelente por su flexibilidad, pero, como ha dicho Linus Torvalds, C ++ no es bueno para su núcleo. C ++ oculta naturalmente los objetos. Además, C ++ necesita una gran compatibilidad en tiempo de ejecución si va a crear un núcleo personalizado.
Java es excelente para la portabilidad, pero su máquina virtual crea un único punto de falla para que los atacantes lo exploten.
Lo más novedoso en estos días son los ligeros lenguajes de script como Python. Con los envoltorios pueden volverse muy poderosos por derecho propio.

La pregunta más importante es ¿qué quieres hacer?

Si bien la popularidad del lenguaje de programación en el mercado laboral es útil para decidir cuál tomar solo para mejorar sus posibilidades de obtener un empleo, también es importante saber en qué tipo de proyectos le gustaría trabajar.

Un lenguaje de programación a menudo tiende a asociarse con un sabor particular del trabajo, por lo que si termina aprendiendo y adquiriendo experiencia en un idioma, eso podría limitar el tipo de proyectos en los que puede trabajar. (Aunque puede que algunos conocimientos sean siempre transferibles … como el programador C ++ no tendría problemas para aprender Java, por ejemplo).

Si aprende PHP, podría limitarse a un desarrollo web aburrido, por ejemplo. Si finalmente quieres hacer desarrollo de juegos, entonces probablemente quieras C ++, etc. Ese tipo de cosas.

Personalmente, cuando decido qué lenguaje de programación elegir a continuación, miro el tipo de proyectos en los que me gustaría trabajar y veo qué tipo de lenguajes / herramientas usan.

Es posible que eso no me consiga un trabajo más rápido, pero no quiero perder ocho horas diarias todos los días trabajando frente a la computadora en algo que no me importa. Pero solo soy yo …

Quiero agregar una respuesta de un respectivo diferente: no importa demasiado el idioma que elija al principio, y siempre puede aprender uno nuevo según lo requiera un nuevo trabajo o un nuevo proyecto.

Casi codifiqué solo en C / C ++ en la universidad, pero durante mi pasantía tuve que escribir C # y en mi primer trabajo a tiempo completo en Python. No me importa demasiado, porque descubrí que aprender un nuevo idioma no es realmente difícil, siempre que ya tengas una experiencia sólida de programación. Me parece que la parte más difícil son las habilidades de resolución de problemas o el diseño del sistema, en lugar de superar la curva de aprendizaje para la sintaxis misma.

Un programador experto conoce docenas de idiomas y es capaz de usar el que sea más apropiado para una tarea determinada, no un idioma en particular. Los programas complejos a menudo usan varios idiomas, cada uno para lo que hace bien.

Un programador experto también sabe que incluso si un idioma dado es exactamente la herramienta adecuada para la tarea, las necesidades comerciales pueden imponer un idioma diferente en el software, para la disponibilidad de recursos de desarrollo, integración con otros idiomas y sistemas, o cualquiera de una docena de otros razones comunes

Un programador experto también sabe que la forma en que se abstraen y diseñan las partes del sistema es mucho más importante que cualquier cosa tan trivial como el lenguaje de alto nivel y precompilador utilizado para construir esas abstracciones. Comprender los requisitos y las limitaciones del problema que se está resolviendo es mucho más importante que cualquier pequeño truco de sintaxis que pueda conocer al “dominar” un idioma en particular.

Si desea concentrarse solo en la lógica de sus algoritmos, busque un lenguaje orientado a objetos de alto nivel como Python. O busque un lenguaje de programación funcional como Haskell. Si desea trabajar muy de cerca con la administración de memoria, elija C.

Un programador avanzado o experto sabe que el mejor lenguaje de programación es el adecuado para la tarea en cuestión.

Use la herramienta adecuada para el trabajo.

No hay una respuesta específica a esto porque no hay una tarea específica.

Si realmente quiere entender cómo funcionan las computadoras a un nivel bajo, los contendientes obvios serían Verilog y VHDL. Estos lenguajes pueden usarse (son) para programar la lógica de una CPU.

Es decir, puede diseñar su propia CPU, sin limitaciones más allá de las impuestas por la física. Si desea experimentar con algo inusual como una computadora de 8 bits con cientos de registros y mucho paralelismo, puede hacerlo. Si desea ir en la dirección opuesta y construir una computadora de 256 bits con solo 4 registros, también puede hacerlo.

  • No hay un buen idioma para todos. Porque si existiera, nadie construyó otro idioma. Los lenguajes de programación están diseñados porque había un problema que no podía resolver o era difícil de resolver con los idiomas actuales. Estos idiomas pueden mantener su propósito original o cambiar durante décadas.
  • Hoy en día, el lenguaje en sí y su sintaxis no son realmente importantes cuando se quiere elegir para construir un programa. Porque todos ellos son lo suficientemente modernos como para poder realizar casi todas las tareas. Lo más importante es la cantidad de código fuente abierto o bibliotecas disponibles para algo específico que su aplicación podría hacer.
  • No puedes entender cómo funcionan las computadoras al aprender un lenguaje de programación porque hay muchas cosas basadas en hardware. Es posible que necesite saber sobre circuitos lógicos, semiconductores y muchas otras cosas.
  • Ni siquiera puede entender su base de software solo aprendiendo el idioma. Tal vez si lees el código fuente de un sistema operativo puedes entender algo y para eso debes aprender el lenguaje específico con el que está escrito el sistema operativo.

Seguramente C (lenguaje de programación), también es perfecto para principiantes.

Al inclinarse C, puede comprender mejor cómo funcionan las computadoras. Y es el lenguaje fácil de leer más rápido. También es un lenguaje muy simple, por lo que no necesita aprender toneladas de conceptos en otros idiomas.

Un programador real debe dominar C.

Creo que deberías aprender un gran lenguaje, como c, c ++, java, python, ruby ​​…
Entonces aprendes otros más fácil. Ya sabes, si quieres hacer un proyecto, solo uno no es suficiente.

More Interesting

Ingeniería informática: ¿Cuáles son algunas de las próximas series de seminarios sobre sistemas integrados y VLSI?

Amo programar y he aprendido programación solo. Creo que puedo aprender a programar solo. ¿Es un desperdicio si hago un título en ingeniería informática en lugar de un título en ingeniería electrónica?

¿Cómo se pronuncia el apellido de Neil Weste (autor del libro de texto CMOS VLSI Design)?

¿Por qué la gente no hizo IPv6 compatible con IPv4?

¿Qué es mejor, ingeniería eléctrica o ingeniería informática?

¿Es la ingeniería de software una rama de la informática?

¿Cuál sería una buena idea de proyecto de graduación para un ingeniero informático, en cuanto a hardware?

Si usted es un ingeniero de verificación de diseño actual o anterior de más de 40 años, ¿qué está haciendo ahora?

¿Qué es mejor, CSE en GB Pant Engineering College, Okhla o ingeniería de TI en Maharaja Agrasen, Rohini?

¿Qué universidad, de las que me aceptan, es la mejor para la ingeniería? Soy aceptado en la Universidad de Boston, la Universidad de Illinois en Urbana Champaign, la Universidad de Toronto y Tufts. Espero asistir a una Ivy League para un posgrado.

¿Qué es más fascinante / interesante, ciencia o ingeniería?

¿Debo especializarme en CS o CE?

¿Qué debo hacer durante el verano antes de la universidad si estoy estudiando ingeniería informática?

¿Cuál es la diferencia entre una red y una red interna?

¿Por qué son importantes los tubos de vacío en las computadoras?