¿Cuál es el mejor lenguaje de programación para aprender en 2014?

Todos escriben sobre C ++ y Java o incluso C. La pregunta era cuál es el mejor lenguaje para comenzar a aprender AHORA en 2014, no en 1994.
C ++ se usa ampliamente porque es un propósito absolutamente general. Pero escribir en él lleva tiempo … Pero en serio, mucho. Lo mismo para C

En este momento, Java se usa principalmente para Android y software empresarial. Sin embargo, este último se mueve lentamente a otros idiomas. ¿Por qué? Porque Java es horriblemente redundante y repetitivo. Si no es Android, sería un lenguaje moribundo.
Python es bueno, pero no es tan nuevo o innovador. Mientras que si quieres aprender algo desde cero, querrás algo que produzca una gran productividad y las mejores tecnologías.

Pero ahora qué idioma es realmente bueno para comenzar a aprender.

Lo más útil en este momento es, desafortunadamente, JavaScript. ¿Por qué? Porque puedes escribir cualquier cosa en él. Desde sitios web a través de aplicaciones de escritorio (node-webkit, TideSDK), aplicaciones móviles (Cordova PhoneGap) que finalizan en servidores web e incluso servidores de aplicaciones en tiempo real (Node.js)
Es extremadamente útil si desea escribir pequeñas aplicaciones que no requieren verificación de tipo y estructuración más avanzada.

¿Que sigue? Rubí. ¿Por qué? Porque es el lenguaje más popular en github y stack overflow en este momento. La comunidad es la parte más importante de cualquier entorno.
Además, Ruby se ha creado teniendo en cuenta la facilidad de desarrollo y la iteración rápida. Gracias a eso, puede enviar su producto lo más rápido posible.

Pero, ¿qué sucede si desea escribir servidores enormes que sean seguros para los tipos y no tengan una sobrecarga de rendimiento? Scala ¿Por qué? Pregunta a LinkedIn por ejemplo. Trasladaron toda su infraestructura a Scala y dicen que ha sido el mejor movimiento que pudieron hacer.
Aunque Scala tiene una curva de aprendizaje muy empinada, vale la pena el compromiso. Martin Odersky, el creador de Scala, ha estado trabajando en el sistema genérico en los primeros desarrolladores de Java y afirma que está tan roto que tuvo que escribir el lenguaje desde cero.
Además, Scala utiliza el paradigma funcional, que se está volviendo muy popular porque la ley de Amdahl comenzó a importar mucho más que la ley de Moore en la arquitectura de CPU actual.
PD. Incluso Quora usa Scala

Si quieres aprender un idioma que es popular ahora. OK, elija C ++ o Java. Pero si quieres aprender algo que te dará ventaja sobre las personas con 20 años de inercia. Elige uno de los anteriores

/ Editar otro idioma que vale la pena echarle un vistazo es Ir, pero no sé mucho al respecto, así que no escucharé una voz.

/ Edit2 para iOS dev Swift también es el indicado

/ Edit3 Para sistemas distribuidos escalables con nueve nueves de disponibilidad, también existe Elixir. Es bastante nuevo (hace 3 años) pero realmente vale la pena mirarlo. Es una madurez de Erlang con productividad de Ruby. Cosas interesantes

/ Edit4 Rust language parece crecer como un competidor potencial de C ++. Y todo sugiere que es un buen rasgo a seguir también

/ Editar 1.09.2015

A todos ustedes que han estado votando mi respuesta durante los últimos meses. Estoy eufórico con todas tus amables palabras. Nunca pensé que sería tan popular

¡Una vez más, gracias por sus increíbles comentarios! ¡La comunidad de Quora es genial!

Aclamaciones,
Chris

La pregunta es ligeramente ambigua y la respuesta depende en gran medida de lo que este programador mítico quiera hacer. Muy pocas personas tienen el talento suficiente para ser maestros en muchos lenguajes de programación diferentes (por diferentes paradigmas quiero decir diferentes). Debes trabajar tanto en cada idioma que lograrás desaprender algunas cosas sobre otros idiomas.

Prefiero decir que un programador debe aprender un par de idiomas importantes más un idioma de elección para algunos de los diferentes paradigmas.

C – Este es el lenguaje más popular del mundo y seguirá siendo muy importante durante al menos unas décadas más. Si no aprende C, queda fuera de muchos campos.

Un lenguaje de script : puede ser Perl, sh o awk. O un par de ellos. Estos no son realmente tan complejos de dominar, pero mejorarán mucho su productividad. Perl también se usa bastante para escribir aplicaciones reales, aunque AFAIK Python ha estado superando este papel.

Algunos entornos de desarrollo web : Ruby on Rails, Python con Django, PHP son probablemente los más populares. No es realmente mi campo de experiencia, por lo que cualquiera puede corregirme (mis aplicaciones web son tan simples que puedo usar Python simple con algunas bibliotecas simples para hacerlas). Además, no podría hacer daño aprender HTML5.

Un lenguaje orientado a objetos : desde la perspectiva puramente de “conseguir un trabajo”, C ++, pero es uno de los lenguajes más difíciles de dominar. Java también está en demanda. Si quieres aprender la teoría, hay mejores idiomas, como Smalltalk u otros lenguajes OOP más teóricamente puros.

Un lenguaje de programación funcional : muy ordenado en muchas situaciones. Ejemplos: Haskell, Clojure, Lisp, Scheme, Scala.

Un lenguaje basado en la lógica : estos son útiles al crear aplicaciones basadas en reglas. Prolog es un excelente ejemplo. Si desea una introducción rápida a la programación basada en reglas, awk podría ser un lenguaje más fácil de aprender (pero también creo que es más restringido).

Python es un lenguaje de paradigmas múltiples, por lo que puede aprender un par de estilos diferentes con un idioma. Siempre que tenga la voluntad mental para hacerlo, porque esto significa que aprende nuevas formas de resolver problemas incluso cuando ya sabe cómo resolverlos en este idioma. Puedes aprender programación imperativa, orientada a objetos y funcional con ella.

Realmente no es una pregunta fácil de responder, porque la motivación también es importante. Es como preguntar qué idiomas naturales se deben aprender. La primera pregunta sería, ¿para qué? Si quieres ser intérprete, guía, trabajar en una universidad o qué? Cada uno necesita un conjunto diferente de idiomas para tener éxito. Pero si quieres una lista concisa que creo que sería la más útil, iría con lo siguiente:

  • C
  • Python (+ prueba Django o algún otro framework web),
  • C ++, Java o uno de los lenguajes OOP más teóricos (Eiffel, etc.), esto realmente depende de lo que desee (material de bajo nivel, desarrollo de aplicaciones de mayor nivel de material más teórico),
  • Perl , el dominio no es necesario, pero es suficiente para poder manejar archivos, etc. (si trabaja predominantemente en Linux, también puede aprender scripting de shell y probablemente omita Perl, aunque es más útil que aquellos en muchas situaciones),
  • Haskell / Clojure / Scheme / Racket , cada uno tiene sus fortalezas y debilidades. Haskell es complejo pero muy inteligente, Clojure es muy utilizado en lo que respecta a los lenguajes funcionales y no es un mal lenguaje. La sintaxis de Scheme es muy simple y está cerca del LISP original, mientras que Racket es una versión de Scheme que podría ser más útil en el mundo real.
  • Prólogo

Hay algunos atajos posibles. Tiende a tomar mucho tiempo para que todo funcione con un nuevo lenguaje (nuevas palabras clave para aprender, etc.), por lo que, como mencioné anteriormente, podría valer la pena aprender los conceptos básicos de diferentes paradigmas con un lenguaje de paradigmas múltiples como Python. Si eres un principiante, comenzaría con eso. Algunos podrían sugerir Ruby y tampoco es un lenguaje malo, solo personalmente considero que Python es un lenguaje más fácil para comenzar y es más fácil codificar código desechable con él. Puede usarlo para sus scripts simples hasta que aprenda también suficiente Perl (o scripts de shell Unix). ¡Y no olvides aprender expresiones regulares! Existen algunas diferencias menores entre las herramientas, pero se aplican reglas generales. Ahorras un montón de tiempo al aprender patrones de expresiones regulares, ¡confía en mí!

Pero es imposible dar una respuesta definitiva a esta pregunta. Todos tienen sus opiniones y si alguien dice tener una respuesta global, no está viendo todo el problema. Además, como mencioné al principio, es muy difícil ser maestro en muchos idiomas, por lo que probablemente sea mejor aprender algunos conceptos básicos para diferentes cosas y luego ver lo que realmente necesita. Por ejemplo, una vez que conoces C, la mayoría de los lenguajes imperativos son mucho más fáciles de aprender.

Opinión personal,

Averigüe en qué área / campo desea trabajar. Averigüe qué compañías están en esos campos y descubra qué idiomas están usando. O mire la ubicación (país / estado) en la que desea trabajar y descubra qué idiomas usan las empresas en esa área. Simplemente ve a una bolsa de trabajo, mira lo que están contratando.

Si quieres trabajar en Google o en la web de alta tecnología, probablemente java, php, javascript. Microsoft, C #, Mobile, Java y Objective-C. Tienes la idea.

Los idiomas realmente dependen de lo que intentas hacer. No andaría aprendiendo idiomas que no vas a usar en tu carrera profesional.

1. ruby / python : sus langs estándar, con sintaxis fáciles de aprender. Ambos también ofrecen algunas características de metaprogramación bastante ingeniosas y tienen ecosistemas decentes (afaik, python tiene uno más diverso)

2. Javascript : un estilo de programación muy, muy diferente, se puede utilizar en casi todas partes. En comparación con Python y Ruby, tiene una menor cantidad de conceptos que requieren aprendizaje. Sin embargo, esos conceptos son bastante profundos. Esta es una gran razón por la que mirar los códigos de un js pro y un js noob se siente como mirar dos langs diferentes.

3. C – porque es importante saber lo que realmente está sucediendo. Recomiendo encarecidamente Learn C The Hard Way de zed shaw. Lo estoy estudiando en estos días, y las cosas del hombre me han desconcertado. Por ejemplo: pasar el puntero a una función como una devolución de llamada junto con el viejo malloc () y free () en el mismo programa c !!!

4. Algún lenguaje que haga bien la concurrencia : porque los procesadores multi-core son comunes ahora. Y “número de procesadores” es la dirección en la que generalmente aumenta la potencia informática. Me estoy centrando en scala en estos días. Sin embargo, hay varias otras opciones.

PHP, Java : PHP es probablemente uno de los s / w distribuidos más exitosos. “Simplemente funciona”. El software de php insignia alrededor, wordpress, es nuevamente famoso por cómo “simplemente funciona”. Al llegar a php desde ruby ​​/ python, te perderías algunas características, pero la facilidad de despegar webapps con php lo compensa. También puede comenzar a ganar dinero rápidamente aprendiendo a trabajar en uno de los muchos software distribuidos famosos hechos con él. Y si alguna vez planea hacer un software distribuido del lado del servidor, php realmente le brinda la mayor penetración.
Java nuevamente, tiene una plataforma bastante fuerte, Android, a por ello. Entonces sí, también hay dinero decente en Java.
Sin embargo, estos dos idiomas no ofrecen nada “nuevo” o emocionante para aprender. Seguí sobre php porque, bueno, tengo una debilidad por ello. Pero realmente, en 2013, se encuentra en la misma categoría que Java. es decir, el “nicho de mercado”

Encontrarás algunas cosas buenas aquí también Cómo convertirte en un hacker

La respuesta depende de si está buscando un trabajo o una carrera.

Si solo quieres un trabajo, elige cualquier plataforma de desarrollo móvil iPhone (Objective-C o Swift) o Android (Java). La plataforma es más importante que el lenguaje, al igual que las habilidades básicas de desarrollo de la interfaz de usuario.

Si quieres una carrera, conviértete en un desarrollador de pila completa o en un científico de datos. De cualquier manera, comience recogiendo una copia de Estructura e interpretación de programas de computadora y leyéndola de principio a fin. Es el único libro de texto que he leído de principio a fin (dos veces de hecho). Fue publicado en 1985, pero enseña los conceptos centrales que una vez que entiendes, aprender a aprender otros idiomas es bastante fácil.

El desarrollo móvil está de moda en este momento y probablemente lo estará por un tiempo, pero incluso el iPhone será reemplazado (o reconstruido significativamente) en algún momento. Creo que lo más difícil de encontrar son los desarrolladores de pila completa para dispositivos móviles. Tener las habilidades del lado del servidor es importante para cualquier aplicación real hoy en día, y las habilidades del lado del servidor probablemente durarán más que las habilidades del lado del cliente (UI). Encontrarás muchos más desarrolladores en el lado del servidor en Google o Facebook.

Los datos son los reyes en estos días y la mayoría de los desarrolladores no saben cómo trabajar con ellos. Saben cómo almacenar y recuperar datos, pero no saben cómo extraer realmente información de ellos. Ser un científico de datos es mucho más que bases de datos relacionales (los conjuntos de datos más grandes ya no son relacionales), se trata de estadísticas, modelado y manipulación algorítmica de grandes conjuntos de datos de manera eficiente. La ciencia de datos se trata de responder preguntas con datos, a menudo la parte más difícil es averiguar las preguntas que se formularán a un conjunto de datos determinado y diseñar las aplicaciones que alimentan ese conjunto de datos para recopilar los datos correctos en primer lugar (podría ser capaz de inferir las edades de las personas con suficientes datos adicionales sobre ellos, pero es mucho más fácil si solo tengo sus datos de nacimiento).

A partir de este momento en el cuarto trimestre de 2014, es difícil elegir solo uno. ¿Quieres hacer cosas en la web o en la computadora? ¿Qué te gustaría programar? AngularJS es genial si quieres hacer cosas en la web. Ir está de moda si quieres hacer cosas que estén menos centradas en la web. Python está de moda si quieres hacer cosas de tipo ciencia de datos. Ruby on Rails y JavaScript (ver: Node.js) también son geniales, tampoco puedes equivocarte.

Aquí hay una lista de recursos para aprender a codificar que he estado reuniendo a medida que encuentro tiempo para aprender nuevos idiomas:
Aprende a codificar

Según el informático e ingeniero experto Joe Armstrong (inventor de Erlang):

  ¿Qué recomendaría aprender?      
 - C     
 - Prólogo     
 - Erlang (soy parcial)     
 - Charla     
 - Javascript     
 - Haskell / ML / OCaml     
 - LISP / Esquema / Clojure

 Un par de años debería ser suficiente (POR IDIOMA).  Note que no hay 
 solución rápida aquí: si desea una solución rápida, compre "aprenda PHP en diez minutos" 
 y pasar los próximos veinte años buscando en Google "cómo calculo la duración 
 de una cuerda "

http://erlang.org/pipermail/erla
(Aunque creo que podrías saltarte con seguridad C.)

Anteriormente, explica por qué:

  Los veteranos dicen "elige el idioma apropiado para el problema"; 
 cuando sabes 20 idiomas impares (con diferentes grados de competencia) 
 Esto es fácil de decir, pero si conoce dos lenguajes Java y C, entonces 
 Esto no es de mucha ayuda.  Hay literalmente problemas donde la solución en 
 un lenguaje CLP tiene pocas líneas y miles de líneas en C.

A lo que agregaría “… miles de líneas en C y no funciona bien “, que es lo que motiva muchos de los casos de uso industrial de Erlang, por ejemplo.

Comenzaré genérico. Aquí puede ver la tasa de uso del idioma:

The Coding Standards Company

Eso te dirá cuánto se usa un idioma. A continuación, lo que requiere algún conocimiento sobre paradigmas de codificación es a qué tipo de estilo de codificación desea apuntar. ¿Orientado a objetos? ¿Procesal? Esos conducen a diferentes trabajos. Por ejemplo, C es procesal mientras que C ++ / Java son OO.

Entonces, ¿para qué tipo de trabajo vas? Los “populares” (Silicon Valley, tierra de startups y grandes cuerpos) a partir de ahora están todos relacionados con la web. Cualquier cosa sobre rieles es genial (Groovy, Ruby, etc.) y para la interfaz hay algunas cosas que puedes probar como Angular o Backbone. También les gusta usar Scala para la creación de prototipos (y algunos incluso lo usan para su front-end).

Luego hay otros más tradicionales “aburridos” (pero todavía bien pagados) que están en Java o C ++. Por ejemplo, IBM usa el J9 vm para la mayoría de sus soluciones electrónicas, lo que significa que necesita conocer Java. O, en otro ejemplo, si vas a trabajar para un software de seguridad, entonces tendrán que lidiar con C ++.

Si quieres entrar en el desarrollo del juego, entonces C ++ es imprescindible. No hay forma de evitar eso. Sin embargo, algunos marcos usan C # (como Unity).

Si te diriges al mundo del hardware, debes saber C.

Y finalmente, Academia todavía usa Fortran. También hay Octave / Matlab.

Como puede ver, hay muchos idiomas diferentes. Averigüe en qué industria desea ingresar y luego elija el idioma después. La habilidad más importante que le importa a la gente es poder aprender idiomas (porque el hecho de que tengas que hacer esta pregunta demuestra lo rápido que aparecen los nuevos).

No importa a dónde vaya, tendrá que conocer al menos los conceptos básicos de C y C ++ (y quizás también JAVA).
Muchas otras personas han escrito respuestas que contienen muchos lenguajes de programación y / o nichos específicos. Pero hay un nicho que no estaba cubierto:
para sistemas militares, aeroespaciales, espaciales, de control aéreo, de radar y alguna otra aplicación “similar” en la que la falla podría costarle miles de millones de dólares, necesitará aprender Ada y chispa (subconjunto de Ada con verificación formal incorporada).

Pero no muchas personas están interesadas en esta área de trabajo, por lo que si necesita saber este idioma es una pregunta diferente.

Lo que pasa con 2014 es que hay muchos idiomas para elegir. Por lo tanto, creo que un enfoque a considerar es aprender los idiomas que lo ayudarán a aprender otros idiomas más fácilmente. El presente y el futuro previsible de la programación informática, especialmente como carrera, es multilingüe. Sugeriría aprender C, Lisp y Haskell. Estos tres idiomas son antiguos y bien estudiados, y cubren una amplia gama de conceptos. C es fundamental para comprender cómo interactúan los programas con la memoria, y te da mucha soga para ahorcarte. Sin embargo, es importante saber sobre esa cuerda, ya que siempre está al acecho en algún lugar de tu pila de abstracción. C ayudará a darle las herramientas para “profundizar” cuando sea necesario. Lisp está en el otro extremo del espectro de abstracción, y es lo suficientemente alto como para codificar casi cualquier paradigma o modismo de programación. Puede aprender conceptos orientados a objetos, funcionales y lógicos, mientras solo tiene que aprender un idioma. La “homoiconicidad” de Lisp da una idea de la estructura del código, la metaprogramación y los lenguajes específicos del dominio. Mientras que Lisp es de alto nivel y, en última instancia, permisivo, Haskell es de alto nivel con un sistema de tipo expresivo. Los sistemas de tipos avanzados parecen tener una importancia cada vez mayor, y muchos (pero ciertamente no todos) los conceptos de tipos pueden explorarse en Haskell de manera elegante. Además, Haskell enseña lecciones sobre inmutabilidad, pureza y semántica denotacional.

Con toda probabilidad, no utilizará ninguno de estos idiomas exclusivamente, ni siquiera regularmente, pero creo que estos tres cubren una amplia gama de conceptos y muchos idiomas se inspiran en ellos. No los uso regularmente, pero me pregunto regularmente “¿cómo escribiría esto en Lisp? ¿Haskell? C?” porque la sintaxis es fácil, pero el diseño es difícil.

Además, la compañía para la que trabajo ocasionalmente contrata a personas que no tienen experiencia en los idiomas específicos que usamos. Allí, y supongo que en otras partes, quieren personas que tengan una base para expandir su conocimiento, porque en todas partes se está expandiendo el conocimiento necesario para mantenerse competitivos. Los marcos web de 2014 probablemente estarán inactivos en menos de una década; Es importante asegurarse de que no lo sea.

Aprenda cualquier lenguaje de programación como c / c ++ / java, puede dominar otros que se crucen en un corto período de tiempo.
Las principales cosas que necesita concentrarse son:

  1. diferentes tipos de conceptos de estructuras de datos como hash, mapa, lista, etc.
  2. gestión de la memoria
  3. Conceptos de OOPS
  4. seguridad
  5. despliegue / compilación
  6. etc.

Básicamente, estos son conceptos principales, hay muchos más, pero si comprende los conceptos y tiene confianza en implementarlos a través de cualquier lenguaje de programación, es suficiente para aprender fácilmente un nuevo lenguaje de programación.

Si fuera usted, elegiré el c ++ y dominaré todos los conceptos del lenguaje de programación usando el c ++. Echa un vistazo a por qué evolucionó c ++?

Intenta comprender los marcos de los patrones de diseño.

Ellos (lenguajes de programación) simplemente alimentan la comida con una cuchara diferente, pero la comida es casi la misma. Dependiendo de su necesidad, intente elegir una cuchara liviana.

Recuerde, ningún idioma es completo y perfecto, por lo que no hay nada como el mejor idioma ni nada. Cada idioma tiene sus propias aplicaciones y es mejor allí. Mira este video para saber más:

Muchas gracias, espero que ayude … 🙂

Un lenguaje de programación es solo una herramienta y la “mejor” opción aún depende de para qué se quiera usar. ¿Móvil, escritorio o web? OOP o funcional? ¿Por diversión y juegos o trabajo? No hay una buena respuesta para una pregunta tan abierta.

Una comprensión general de C nunca está de más, pero si aprende Python, Java y Javascript, entonces no tendrá problemas para encontrar un trabajo. Agregue Swift si desea hacer el desarrollo de iOS. Subcampeones: R, Go y Haskell.

Si no eres un ingeniero de software, ve con Python. Mucha gente menciona a Ruby, pero realmente espero que Python gane a la larga. Django es mucho mejor que los rieles, en mi humilde opinión. Python es un gran lenguaje para no SWE ya que sus bibliotecas son fáciles de instalar y usar.

Si eres un SWE, realmente deberías conocer C y luego C ++. Le darán la base que necesita para aprender cualquier idioma nuevo y todavía son ampliamente utilizados.

Depende exclusivamente de su área de interés. Comience con c / c ++ si puede. Obtenga un conocimiento más profundo sobre qué tecnologías se utilizan actualmente para hacer diferentes tipos de software. Luego, puede optar por java, objetivo c, python, javascript (sí, también es del lado del servidor), asp.net (c #) o php. También tenemos diferentes versiones de sql para diferentes plataformas. SQL es un lenguaje de búsqueda por cierto

Nodo, Ruby y Python.

Q4 2014, recuerde que este movimiento rápido de Q1 a Q4 hay muchos cambios, pero también su pregunta es muy amplia, debe dividir por concepto o plataforma. Para este Q4 sugeriré:

Móvil: Swift
Web: Javascript con node.js y angular.js
Escritorio: C ++ 11 con una biblioteca Gui como Qt5 o Gfx 3D / 2D con OpenGL
Backend: C ++ 11 o Go

El mejor primer lenguaje de programación para aprender es el que lo ayude a comprender los conceptos básicos de programación más fácilmente. Porque una vez que haces eso, puedes comenzar con casi cualquier otro idioma más fácilmente.

Para mí ese primer idioma fue JavaScript. Entonces Python. En lugar de preocuparme por los tipos de datos y las ubicaciones de memoria, pude entender la sintaxis y la biblioteca estándar en poco tiempo, y me volví productivo rápidamente. Después de eso, Java y C # me dieron mi introducción a ideas orientadas a objetos más avanzadas.

Java, Cs y una variedad de otros lenguajes se usan ampliamente, por lo que no creo que haya una elección incorrecta aquí. Si parece interesante, ¡aprende!

La “rapidez” de Apple puede considerarse muy interesante. Los desarrolladores de Apple afirman que es más rápido que su impresionante lenguaje anterior Ojective-C.
Debería intentarlo, será divertido.