¿Qué impulsa la adopción, o no, de nuevos lenguajes de programación? [cerrado]

12

Realmente me gustaría centrarme en por qué algunos nuevos lenguajes de programación se adoptan en la corriente principal, y otros siguen siendo relativamente específicos. Me gustaría saber cosas como casos de uso específicos, compatibilidad con versiones anteriores o algunas características nuevas, dificultades de implementación simples o complejas. Se agradecerían ejemplos específicos, pero no nos dejemos atrapar por la definición exacta de "corriente principal" o "nicho" aquí.

DeadMG
fuente
2
El azar y el respaldo corporativo son un factor importante. steve-yegge.blogspot.com/2007/02/next-big-language.html
Trabajo
3
No es una pregunta adecuada para este foro
Ryan
Bueno, para uno esto no es un foro. Y para dos, creo que esto cumple bastante bien las pautas para una pregunta subjetiva.
DeadMG
1
La adopción de un lenguaje de programación está inversamente relacionada con la cantidad de hipsters que lo usan.

Respuestas:

18

Si alguien realmente lo supiera, serían personas muy ricas.

Dicho esto, aquí está mi suposición:

Disponibilidad

BASIC es un lenguaje pequeño y horrible que vino con (¿todos?) PC cuando salieron por primera vez. La Apple II (la computadora predeterminada para muchas escuelas secundarias) y la ATARI 400/800 (la primera computadora hogareña súper barata) vienen con BASIC.

Si tenía una máquina UNIX (AT&T system V o Berkeley's) tenía C. Si quería programar la máquina, eso era lo que tenía que usar.

EDITAR : con el advenimiento y la ubicuidad de la red, este requisito se transforma en:

  1. ¿Cuántas distribuciones de Linux empaquetan una copia reciente y qué tan bien la mantienen actualizada? ¿Las bibliotecas de terceros están igualmente disponibles para la instalación?
  2. ¿Se instala fácilmente en Windows (XP | Vista | 7,8 ...)?
  3. ¿Están cubiertas las plataformas Mac / iOS?
  4. ¿Se puede instalar sin molestias en Unix heredado?
  5. Y una vez instalado, ¿qué tan fácil es acceder a bibliotecas de terceros? ¿Se puede actualizar fácilmente?

Facilidad de transición

Java es un buen ejemplo aquí. Si conocía la programación en C, Java no estaba muy lejos y, sin embargo, le dio muchas de las características que C carecía y C ++ no pudo proporcionar de manera limpia.

C ++ por razones obvias fue un paso fácil hacia adelante desde C, y fue fácil de vender a la administración como un C. "mejorado". C ++ tenía el beneficio adicional de ser compatible con versiones anteriores de gran parte de la base de código C existente.

Perl fue una fusión de C, awk, sed y otras utilidades de Unix, todo en un solo paquete. Antes de su aparición, la mayoría de la administración del sistema se realizaba mediante scripts de shell que pegaban todo de manera insatisfactoria. Poner todo bajo un solo proceso con las estructuras de datos y el control de un lenguaje tipo C fue un regalo del cielo.

Llena una necesidad

C despegó porque le permitía producir eficiencias cercanas al ensamblaje sin atascarse en el mundo del ensamblaje específico de la máquina, difícil de mantener.

FORTRAN despegó porque permitió una fácil traducción de ideas matemáticas en código sin tener que perderse en los detalles de la máquina.

Asimismo para LISP y manipulación simbólica.

Python surgió de la necesidad de un "mejor" Perl. (Soy parcial, así que no diré más).

PHP era esencialmente el BASIC para la web: se instaló de manera predeterminada en muchos servidores web y fue fácil hackear algo útil rápidamente.

Abogacía, base de usuarios, código contribuido

Seamos realistas, Haskell no sería tan popular como lo es para un lenguaje que no está en producción si no fuera por la incansable defensa de sus desarrolladores y su base de usuarios.

Muchos idiomas tienen un culto a la personalidad detrás de los creadores del idioma, y ​​todos sabemos quiénes son.

FORTRAN tiene enormes conjuntos de códigos matemáticos establecidos y examinados; lo mismo para Java y los sistemas web / integración de sistemas / MVC; lo mismo para Perl y CPAN; lo mismo para T E X y la gestión de documentos; etc.

El factor it

Por alguna razón, algunos idiomas parecen tener la cantidad correcta de novedades , con un guiño suficiente al antiguo , de una manera que hace que parezca fácil o necesario. Es decir, hace su propio caso. ¿Y quién sabe cómo sucede esto?


De todos modos, esa es mi mejor suposición de por qué algunos lo logran. En cuanto a por qué algunos no ... bueno, si no cumplen con los criterios anteriores, probablemente es por eso que fallaron.

poco pitón
fuente
1
El factor determinante en la mayoría de sus criterios es el respaldo corporativo . Java puede haber obtenido un puntaje, por ejemplo, en la facilidad de transición, pero sin alguien dispuesto a gastar millones, año tras año, como parte de su plan de dominación mundial, no está claro qué diferencia habría hecho. Entonces, tienes razón, los muy ricos saben la respuesta a esto :-)
jaybee
44
@jaybee: no estoy seguro de que el respaldo corporativo de los creadores del lenguaje necesariamente haya ayudado. Fortran y C no fueron particularmente ayudados por venir de IBM / ATT. El enlace de Oracle parece estar dañando activamente a Java. Basic, Perl, Python, Ruby, etc., no tenían corporaciones detrás de ellos. El soporte interno del cuerpo del usuario / cliente es importante, pero eso sigue mucho después de que se vuelve omnipresente.
Martin Beckett
1
@ Martin Beckett: puede tener un punto. Sin embargo, creo que, aunque puede ser necesario alinear todo tipo de planetas para que un lenguaje llegue a la masa crítica, la forma "moderna" de alinear esos planetas parece ser quemar efectivo. Por ejemplo, Mark usa a Haskell como ejemplo: puede tener una gran base de usuarios vocales, pero GHC gana muchos argumentos para ellos. Los compiladores como GHC cuestan dinero.
jaybee
@ Jaybee: hay mucha suerte. Pero para los nuevos lenguajes web geniales, lo que importa es la habilidad de marketing del creador / adoptante temprano.
Martin Beckett
11

Los idiomas se vuelven populares porque tienen una ventaja sobre los idiomas existentes en un área que se necesita.

Java

  • Gestión automática de memoria (comparar con C ++ y C)
  • Lenguaje / API integrado en Threading
  • Se ejecuta en una máquina virtual (eso significa que los desarrolladores pueden usar Windows en máquinas de desarrollo para probar e implementar la aplicación sin modificación en Linux / Unix).
  • La programación en red es mucho más fácil que en los lenguajes que eran más populares antes (C ++ y C) y Java se lanzó cuando Internet comenzó a ser popular.

PHP

  • Facilitó el desarrollo web
  • Soporte integrado para conectarse a bases de datos MySQL
  • No se necesita compilación y fue fácil incluir los scripts directamente en sus archivos HTML.

JavaScript

  • El único idioma para navegadores web.
  • Los navegadores web se utilizan cada vez más como clientes ligeros (aplicaciones web).
  • Código móvil: fácil de implementar y sin instalación

C objetivo

  • El idioma para el entorno Mac OS X y iPhone. Y el iPhone ha sido un gran éxito.

Rubí

  • Junto con Ruby on Rails, un marco web, hizo que el desarrollo web a gran escala fuera mucho más fácil con MVC.

C#

  • El lenguaje para entornos Windows de los últimos diez años. Casi todas las API de Microsoft son fáciles de usar con C #, por ejemplo, Winforms y WPF y WCF.

ActionScript

  • El único lenguaje para Addobe Flash / Flex, que ha tenido un gran éxito para el contenido multimedia en Internet y cosas que JavaScript no pudo manejar.

Erlang

  • Concurrencia y tolerancia a fallas: Erlang tenía un modelo único para hacer sistemas de concurrencia y marcos tolerantes a fallas. Comenzó a ser útil para la industria de las telecomunicaciones, luego abrió fuentes y despertó el interés de las grandes compañías de Internet que también necesitaban tolerancia a fallas.
Jonas
fuente
1
El modelo de concurrencia de Erlang no es único, simplemente es diferente del que usan los lenguajes feos imperativos :). Scala tiene el mismo tipo. Del mismo modo, Clojure y Haskell se especializan en STM.
alternativa
44
@mathepic: Cierto, pero todos esos idiomas son más nuevos que Erlang. Así que fue único para Erlang al principio, como con casi todas las características de lenguaje que he enumerado. Vale la pena robar buenas ideas.
Jonas
1
C # es el lenguaje .net. Pensé que Windows en realidad estaba escrito en C ++. ¿Estoy equivocado en esto? Diría que C # se hizo popular al aprovechar un lenguaje que la gente ya conocía (C) con un nuevo marco que hizo que el desarrollo de aplicaciones potentes fuera más fácil con una herramienta de edición que era potente, fácil de usar y tenía en cuenta las necesidades de los desarrolladores y el uso real.
SoylentGray
1
@Chad C # no tiene nada que ver con C
alternativa
1
@mathepic: he trabajado en programación en C, C ++ y C #. Puedo decir que C # aún conserva sus raíces en C hasta la nomeclatura. De acuerdo, ha ido más allá de C, lo que no significa que no aproveche el lenguaje.
SoylentGray
5

Seré un cínico: dinero y con eso, marketing.

No es casualidad que C # sea compatible con Microsoft, Java con Oracle y Objective C con Apple. Solo Google's Go no se ha levantado realmente hasta ahora.

Por supuesto, el dinero no es la única razón, pero tener bolsillos profundos seguramente ayuda a colocar su idioma en el mercado.

Carra
fuente
Tengo que aceptar y extender: palabras de moda, atractivo gerencial, grandes nombres, características que suenan emocionantes Si no está de acuerdo, le daré un nombre: COBOL.
SF.
1
C # y Obj-C no son tan compatibles como "obligatorios". Es difícil programar aplicaciones de Windows en c ++ con solo apis provistos por MSFT, y AFAIK solo obj-C está permitido en al menos plataformas móviles de manzanas. Por otro lado mediante juicio de los fabricantes de Android de Oracle podría perjudicar Java
Martin Beckett
1
@ Martin - Estás en gran medida correcta WRT Obj-C. Técnicamente, puede usar cosas como Appcelerator Ttanium para usar otros idiomas para escribir las aplicaciones, pero aún así se convierte a Obj-C para su implementación (y fue una lucha para ellos incluso lograr eso). Apple prohibirá casi cualquier otra cosa (incluso PhoneGap ha recorrido una línea muy fina).
Shauna
3

Por un lado, es marketing, presentaciones más precisas, blogs, etc. Es importante tener características con las que los programadores principales puedan relacionarse y ver beneficios sobre lo que saben (Java vs. C ++ - recolector de basura vs. gestión de memoria). Por último, pero no menos importante, es tener una barrera de entrada baja: ejemplos, buenas documentaciones, instalación perfecta, buena comunidad y soporte, desarrollo vibrante.

Gabriel Ščerbák
fuente
1

Casi todos los idiomas tenían programas no triviales de resolución de problemas del mundo real escritos con ellos desde muy temprano en su vida.

Unix se escribió en C, al igual que las herramientas en Unix, cuando C era muy joven y evolucionaba.

Anaconda (el programa de instalación de RedHat) fue escrito en Python cuando Python era joven y no tenía la popularidad de hoy.

Esto es lo que puedo recordar con las manos libres Esta lista podría tocar cada uno de los idiomas que ha sobrevivido a sus años de formación.

Entonces, la adopción a gran escala en las universidades puede ayudar a la longevidad de un idioma. Java es muy popular en las universidades como lenguaje de enseñanza. Hasta cierto punto, Lisp y los dialectos de Lisp también disfrutan de este estado.

vpit3833
fuente