¿Por qué hay tantos lenguajes de programación? ¿Por qué todavía se están haciendo nuevos idiomas? [cerrado]

51

¿Por qué hay tantos lenguajes de programación?

¿Y qué impulsa a alguien a crear lenguajes de programación a pesar de que ya existen otros lenguajes?

Moshe
fuente
un video entretenido sobre este tema es "El último lenguaje de programación" del tío Bob Martin ( skillmatter.com/podcast/agile-testing/bobs-last-language )
mikera
Porque a los programadores les gustan las herramientas.
haylem
2
No relacionado: xkcd.com/927
ligereza
Es difícil justificar esto, supongo que cada idioma tiene una historia. La mayoría de los idiomas no beneficiaron mucho al creador, que yo sepa. La mayoría de los idiomas giran en torno a los mismos conceptos y rara vez resuelven problemas reales o proporcionan buenos entornos. Creo que cuando lo crean, se sienten cansados ​​de todo y tal vez ven cómo desperdiciaron su vida ... Piense en ksh o JavaScript ..... Herramientas simplemente horribles y dañinas.
No,

Respuestas:

36

Los lenguajes de programación evolucionan

Los nuevos lenguajes de programación a menudo aprenden de los lenguajes existentes y agregan, eliminan y combinan funciones de una manera nueva. Hay algunos paradigmas diferentes como orientado a objetos y funcional y muchos lenguajes modernos intentan mezclar características de ambos.

También hay nuevos problemas que deben resolverse, por ejemplo, el aumento de CPU de varios núcleos. La solución más común a eso han sido los hilos, pero algunos lenguajes de programación intentan resolver el problema de concurrencia de una manera diferente, por ejemplo, el Modelo de actor. Ver Erlang - Software para un mundo concurrente

Jonas
fuente
10
Lo interesante de Erlang es que es una "reinvención de sala limpia" del modelo de actor. ¡Cuando Armstrong y sus amigos desarrollaron Erlang, no sabían sobre el trabajo de Hewitt et al en el modelo de actor!
Frank Shearar
@ Frank: Eso es interesante. No lo sabía, gracias.
Jonas
2
+1 para la evolución. Una pregunta análoga podría ser "¿Por qué hay tantas especies de animales y plantas? ¿Por qué todavía aparecen otras nuevas?"
Gyan alias Gary Buyn
1
@GaryBuyn es solo un "+1 para la evolución" si se suscribe a ese punto de vista. Para muchos, la analogía animal está un poco demasiado lejos.
Darknight
@GaryBuyn, Uhm ... eso es tan análogo como "aldea" es "hámster".
Pacerier
22

Es un ciclo. Empiezas un nuevo idioma y eres libre de alejarte de toda la sintaxis mala y las malas elecciones de tus predecesores. En la versión 1, el lenguaje se ve muy bien porque no tiene nada de ese equipaje y hace el trabajo. Luego, en las versiones más recientes, comienzas a experimentar con características que pueden no funcionar, o incorporas características de otros lenguajes más nuevos que hacen que tu sintaxis sea un poco confusa. Mira, después de algunas versiones más, te das cuenta de que tu idioma ahora es tan complicado como el que reemplazaste, con problemas de sintaxis tontos y equipaje heredado. Y de repente, te das cuenta de que si creas un nuevo lenguaje, podrías arreglar todo eso ...

RationalGeek
fuente
2
Esto definitivamente es cierto para bibliotecas, marcos y software, pero personalmente no conozco un idioma al que se aplique. ¿Tienes ejemplos?
back2dos
16
Bueno, creo que tanto C # como Java se introdujeron al menos en parte para abordar las complejidades con C ++. Y ahora, si observa ambos idiomas varias versiones más tarde, su sintaxis y conjuntos de características se vuelven lo suficientemente complejos donde la gente comienza a hablar de que están "sobre la colina". Solo mi opinión, aunque no puedo probar nada. :-)
RationalGeek
2
Buen punto, pero creo que otro hecho que está en juego con C # - es un producto comercial que no existe por razones de caridad y de aceptación en el mercado / mantener a sus clientes productos tienen que ser "mejorado" para los nuevos lanzamientos, etc.
gf
1
Esto es verdad. El impulso para agregar nuevas funciones para obtener más dinero del mercado ciertamente no puede ser ignorado. Sin embargo, es una espada de doble filo. Puede esperar nuevas características de un producto respaldado comercialmente por esta razón exacta. Pero a partir de un producto de código abierto, solo obtienes nuevas funciones mientras el ejército voluntario se mantenga interesado, y haya alguien hábil al mando para criar a los gatos.
RationalGeek
C # tiene muchas características, pero sigue siendo un lenguaje más limpio que C ++. Las nuevas incorporaciones, como LINQ, le permiten hacer cosas de manera limpia que no puede hacer fácilmente en C ++. Creo que es más probable que haya dos tipos de conservación de la complejidad: una en la que cierta complejidad es inherente a un problema y otra en la que a medida que eliminas un tipo de complejidad redundante de tus programas, los requisitos se vuelven más complejos: la complejidad, como los datos, se expande para llenar el "espacio" disponible.
Steve314
11

Por la misma razón, hay martillos, destornilladores, sierras de mano, sierras de cinta, martillos neumáticos, palancas y muchas otras herramientas: no todos los idiomas son perfectos para cada tarea. Algunos lenguajes están dirigidos a dominios con problemas específicos: R es particularmente bueno para el análisis estadístico, C es particularmente bueno para escribir los núcleos del sistema operativo, Haskell es particularmente bueno para los cálculos matemáticos o financieros pesados, Erlang es particularmente bueno en la programación concurrente, etc.

Además, por la misma razón que las camisas vienen en diferentes colores: a algunas personas les gusta el "estilo" de un idioma sobre otro.

Y, por supuesto, a muchos programadores les resulta divertido inventar un nuevo idioma, solo para ver qué sucede, o tal vez porque tienen algún conocimiento sobre los idiomas y quieren rascarse una picazón, o probar algunas ideas.

mipadi
fuente
No solo existen todas esas herramientas de construcción, sino que incluso hay muchos tipos diferentes de martillos y martillos que se parecen, sino que tienen factores de diseño específicos que los hacen mejores para diferentes trabajos o usuarios.
Barry Brown
+1 Para idoneidad para dominios problemáticos. Los académicos que estudian las herramientas en general dicen que una herramienta muy general es menos poderosa que una herramienta específica para una tarea específica. Piense en una llave ajustable en comparación con una llave de tamaño fijo
MarkJ
8

Porque todos apestan (de una forma u otra).

En este momento, hemos creado unos 5000 idiomas para describir problemas naturales y ninguno de ellos está disponible para escribir programas (un ejemplo sería "inglés").

Hasta que alguien encuentre una manera de crear un lenguaje de programación que pueda expresar lo que usted puede expresar en una oración en un lenguaje natural, seguirá viniendo.

Aaron Digulla
fuente
15
Incluso entonces, seguirán viniendo. Solo las lenguas muertas están escritas en piedra, perdón por el juego de palabras. Hay una razón por la cual los idiomas vivos cambian constantemente.
R. Martinho Fernandes
1
Algunos afirmarían que el lenguaje natural para expresar problemas es la matemática. Esto plantea la pregunta de por qué las personas siguen agregando azúcar sintáctico a los lenguajes funcionales en lugar de usar el cálculo lambda puro. Creo que los problemas que tenemos que resolver habitualmente a menudo tampoco se expresan fácilmente en inglés o matemáticas.
Steve314
55
Convenido. Es muy difícil expresar "Tengo hambre" usando matemática pura.
Aaron Digulla
1
@AaronDigulla: hambre = suma (barriga / comida) seguramente :)
gbjbaanb
@AaronDigulla es un buen ejemplo, a menudo quieres expresar cómputo. Entonces tomamos un escenario dado como: Tengo hambre, ahora como -> bien, ahora no como -> muero de hambre. Para construir sistemas capaces de negociar o expandir el contexto, creo que ese es el objetivo de la IA. Los lenguajes de programación normales solo expresan lo que las personas les dicen qué deben hacer y, por lo general, eso es bastante específico que general. Pero como la mayoría de los problemas son específicos, puede ver el problema aquí.
AndreasScheinert el
6

Obviamente, una motivación importante para crear un nuevo idioma es lograr algo mejor que los idiomas ya existentes. Y como siempre hay margen de mejora, siempre habrá nuevos idiomas.

Los intereses comerciales son otra gran razón. Creo que es importante, por ejemplo, que Microsoft pueda ofrecer un lenguaje para cada necesidad para que las empresas y los desarrolladores prefieran sus plataformas.

Carlos
fuente
6

Código heredado. Si comienza un nuevo idioma, no tiene que escuchar / considerar todas las quejas cuando cambia un idioma antiguo. Incluso si todos están de acuerdo en que la nueva implementación es mejor, no puede romper el código anterior. Y hay mucho código antiguo por ahí.

JeffO
fuente
3
¿Hay algún caso documentado de un lenguaje diseñado para evitar el código heredado? Esta afirmación parece altamente improbable. Puedo ver el caso en el que desea comenzar de nuevo (.net me viene a la mente) pero no es tanto para evitar el código heredado sino para habilitar mejor el código futuro.
Bryan Oakley
No creo que esto sea correcto. Es (generalmente) posible bifurcar una implementación de código abierto de un lenguaje existente.
alternativa
@BryanOakley: originalmente .NET tenía la intención de mantener la compatibilidad con VB6, pero decidieron que era un problema demasiado difícil. .NET todavía tenía muchos WRT Java / J ++ heredados en los que se basaba. Creo que D es un ejemplo de un lenguaje diseñado contra código heredado.
gbjbaanb
4

porque es divertido crear nuevos idiomas incluso si no tienen un uso real

Un lenguaje de programación esotérico (a veces acortado a esolang) es un lenguaje de programación diseñado para probar los límites del diseño del lenguaje de programación de computadoras, como prueba de concepto o como una broma.

jk.
fuente
1
Para aquellos que no llegaron a las notas de pie de página en el artículo de wikipedia, el wiki de lenguajes esotéricos es muy divertido: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow
¿Le importaría explicar más sobre lo que hace y por qué lo recomienda como respuesta a la pregunta que se hace? "Enlace de sólo responde" no están muy bienvenida en la pila de Cambio
mosquito
1
@gnat Sinceramente, creo que el texto original no es una respuesta de solo enlace, sería una respuesta corta pero perfectamente válida sin el enlace. Pero dado que el enlace agrega sabor, he incluido una breve cita.
jk.
3

Crear un lenguaje de programación es bastante divertido. Está cerca del trabajo creativo puro, ya que no está limitado a los requisitos anteriores. Ya no es tan difícil de implementar, ya que siempre puedes compilar en C y compilar el código C para un rendimiento adecuado si estás escribiendo un compilador en primer lugar.

Por supuesto, la mayoría de nosotros tenemos menos buenas ideas de las que creemos tener, por lo que a menudo terminan siendo decepcionantes o no son amados por nadie que no sea el diseñador original.

Piensa en cualquier lenguaje de programación que conozcas. Puedes pensar fácilmente en varias cosas que no te gustan, ¿verdad? Presumiblemente tienes ideas de cómo podrían solucionarse. Con solo un poco más de impulso, suponiendo que sepa mucho sobre la compilación de compiladores (y mucha gente lo sabe), puede comenzar a diseñar e incluso implementar el suyo.

David Thornley
fuente
2

Respuesta corta rápida

Reinventar la rueda ... ¿Cuál es la tendencia actual ...

Aburrida respuesta larga

Muchas personas olvidan que "otro lenguaje nuevo similar para los programadores antiguos" es "un lenguaje completamente nuevo para los programadores nuevos".

¿A qué me refiero con eso?

Bueno, para programadores de "varios años", Java o C # pueden ser lenguajes de programación adicionales para Cobol, (OO / Procedural) Basic, C / C ++, mientras que para "nuevos" programadores, Java o C # son lenguajes nuevos, mientras que Cobol, (OO / Procedimiento) Básico, C / C ++ no existe para ellos, por lo que reinventar la rueda se convierte en algo común ...

Y, si hay una nueva tendencia en tecnología, las personas pueden crear un nuevo lenguaje de programación basado en esa tendencia, como ecmascript / javascript para la web y programación funcional ...

Salud.

umlcat
fuente
+1 para señalar el aspecto de reinventar la rueda. A menudo se hace por razones de marketing: cualquier empresa u organización lo suficientemente grande debe tener su propio lenguaje de programación.
Giorgio
1

Los nuevos lenguajes de programación se crean por muchas razones diferentes, principalmente porque hay un nuevo paradigma de programación, o debido a los avances en el hardware, las personas crean un nuevo lenguaje para aprovechar las nuevas características de hardware como la multitarea, etc.

en mi caso, generalmente construyo pequeños compiladores (con un nuevo lenguaje de programación), por razones especiales. si hago una gran cantidad de juegos y creo que un lenguaje de programación creado específicamente para el desarrollo de juegos dará como resultado un código más pequeño más rápido y un desarrollo más rápido, entonces lo construyo. y al final resulta que también se puede usar para otra programación de propósito general.

Creo que la mayoría de las personas que crean lenguajes de programación tienen un propósito específico en mente, hay quienes los crean para fines generales desde el principio. pero la mayoría no lo son.

Por cierto, creo que hay demasiados lenguajes de programación, pero siempre saldrán cientos de nuevos. algunos por diversión, otros por un propósito específico, como un proyecto escolar, o por cientos de otras razones. y tarde o temprano se volverá popular uno nuevo. Nunca va a terminar.

Sergio Fernández
fuente
0

Por la misma razón, hay tantos <whatever> y seguimos creando nuevos <whatever>

Hay una docena de frameworks PHP MVC, por ejemplo, pero la gente siempre creará nuevos para satisfacer necesidades específicas, para evitar depender de algún otro equipo, o simplemente para tratar de crear algo mejor. Lo mismo es válido básicamente para todo tipo de herramienta o aplicación.

Es algo muy bueno, casi todos ganan en mi opinión.

Fosco
fuente
Síndrome NIH = generalmente no es útil para la industria de TI en absoluto.
gbjbaanb
0

Las universidades aportan muchos lenguajes de programación, y también lo hacen grandes corporaciones como Ericsson (Erlang = lenguaje Ericsson), Bell Labs (idiomas B y C), Google (lenguaje Go desde hace unos meses). Muchos de los que fueron escritos como parte de la investigación universitaria no se usan mucho. Sin embargo, hay algunas excepciones notables. Supongo que escribir su propio lenguaje / compilador es un buen tema para las tesis doctorales de personas que estudian Teoría CS o disciplinas relacionadas. Me sorprende que Python sea uno de los primeros lenguajes en nacer del esfuerzo colaborativo en línea de varios programadores en torno a una sola idea.

ixtmixilix
fuente
python-history.blogspot.com/2009/01/… describe el nacimiento de Python en detalle
Andy Dent
0

Hay algunas razones, la mayoría se debe a que las personas piensan que lo que existe no facilita la resolución de un conjunto de problemas. Algunos son solo por diversión o por interés académico.

Creo que hay un argumento sólido de que el problema de cómo diseñar el lenguaje perfecto aún no está resuelto (y puede que nunca lo esté). Por lo tanto, siempre y cuando las personas tengan nuevas ideas sobre lo que sería un gran idioma, la gente seguirá intentando. Algunos de esos intentos trazarán un nuevo espacio como Erlang y otros fracasarán, pero siempre que se aprenda algo del flop, eso también está bien.

Zachary K
fuente
-1

Como se indicó anteriormente, los idiomas intentan dirigirse a ciertas tareas específicas y los nuevos idiomas pueden dirigirse a una nueva área. Estos idiomas pueden tomar características de otros idiomas que están actualmente disponibles.

Otra razón para los nuevos idiomas es tratar de incorporar muchas tareas diferentes y ser el idioma elegido para muchas necesidades diferentes. Algunos de estos idiomas intentan abarcar todos los idiomas que siempre usaría, sin importar la necesidad que tenga.

sange
fuente
-1

Aprendí en mi clase de lenguajes de programación que la mayoría de los lenguajes fueron inventados para rascarse una picazón. La mayoría de los idiomas se inventaron para poder expresar mejor un conjunto de algoritmos. Por ejemplo, se inventaron lenguajes funcionales para dar a los algoritmos recursivos un espacio mucho más expresivo.

Preguntar por qué hay tantos lenguajes es como preguntar por qué C ++ 0x. :)

Además, cuantos más idiomas conozcas, más expresivo podrás ser, ¡esto es cierto tanto en lenguajes de programación como en lenguajes naturales!

2rs2ts
fuente