¿Por qué hay tantos lenguajes de programación?
¿Y qué hace que alguien cree un lenguaje de programación a pesar de que ya existen otros lenguajes?
¿Por qué hay tantos lenguajes de programación?
¿Y qué hace que alguien cree un lenguaje de programación a pesar de que ya existen otros lenguajes?
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 las CPUs multi-core. La solución más común para 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. Consulte Erlang - Software para un mundo concurrente
Es un ciclo. Comienzas un nuevo idioma y eres libre de alejarte de la mala sintaxis 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 nuevas, empiezas a experimentar con funciones que pueden no funcionar, o incorporas funciones de otros lenguajes más nuevos que hacen que tu sintaxis sea un poco confusa. Y después de unas cuantas versiones más, se da cuenta de que su lenguaje es ahora tan complicado como el que reemplazó, con problemas de sintaxis y equipaje heredado. Y de repente, te das cuenta de que si creaste un lenguaje nuevo , podrías arreglar todo eso ...
Por la misma razón, hay martillos, destornilladores, sierras de mano, sierras de cinta, martillos neumáticos, palancas y una gran cantidad de otras herramientas: no todos los idiomas son perfectos para cada tarea. Algunos lenguajes están dirigidos a dominios de problemas específicos: R es particularmente bueno para el análisis estadístico, C es particularmente bueno para escribir núcleos de sistemas operativos, Haskell es particularmente bueno para cálculos pesados o financieros, Erlang es particularmente bueno en programación concurrente, etc. / p>
También, por la misma razón que las camisetas 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 quizás porque tienen algún conocimiento sobre los idiomas y quieren rascarse o probar algunas ideas.
Porque todos chupan (de una manera 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 la manera de crear un lenguaje de programación que pueda expresar lo que puedes expresar en una oración en un lenguaje natural, seguirán llegando.
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 un montón de código antiguo por ahí.
Obviamente, una motivación importante para crear un nuevo idioma es lograr algo mejor que los idiomas existentes. Y como siempre hay espacio para mejorar, siempre habrá nuevos idiomas.
Los intereses comerciales son otra gran razón. Creo que es importante, por ejemplo, que Microsoft ofrezca un lenguaje para cada necesidad, por lo que las empresas y los desarrolladores prefieren sus plataformas.
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 computadora, como prueba de concepto o como broma.
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, por lo que a menudo terminan siendo decepcionantes o no son amados por nadie más que el diseñador original.
Piensa en cualquier lenguaje de programación que conozcas. Usted puede fácilmente proponer varias cosas que no le gusten al respecto, ¿verdad? Presumiblemente tienes ideas de cómo se podrían arreglar. Con solo un poco más de impulso, suponiendo que sepa mucho sobre la compilación (y mucha gente lo sabe), puede comenzar a diseñar e incluso implementar el suyo propio.
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 hardware, la gente crea un nuevo lenguaje para aprovechar las nuevas funciones de hardware como la multitarea, etc.
en mi caso, normalmente compilo compiladores pequeños (con un nuevo lenguaje de programación), por razones especiales. Si hago un montón de juegos, y creo que un lenguaje de programación hecho específicamente para el desarrollo de juegos dará como resultado un código más pequeño y más rápido y un desarrollo más rápido, entonces lo construyo. y al final resulta que también puede usarse 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 propósitos generales desde el principio. pero la mayoría no lo son.
Por cierto, creo que hay demasiados lenguajes de programación, pero cientos de nuevos siempre saldrán. algunos por diversión, otros por un propósito de nicho, como un proyecto escolar o por cientos de otras razones. y tarde o temprano un nuevo se volverá popular. Nunca va a terminar.
Por el mismo motivo, hay tantos < lo que sea > y seguimos creando nuevos < lo que sea >
Hay una docena de marcos de 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 intentar crear algo mejor. Lo mismo ocurre con básicamente todo tipo de herramienta o aplicación.
En mi opinión, es algo muy bueno, bastante beneficioso para todos.
Las universidades contribuyen con muchos lenguajes de programación, al igual que grandes corporaciones como Ericsson (Erlang = lenguaje Ericsson), Bell Labs (lenguajes B y C), Google (lenguaje Go desde hace unos meses). Muchos de los que se escribieron 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 la teoría de la CS o disciplinas relacionadas. Me parece que Python es uno de los primeros idiomas que nacen del esfuerzo colaborativo en línea de varios programadores en torno a una sola idea.
Hay algunas razones, la mayoría se debe a que las personas piensan que lo que existe no facilita la resolución de algunos problemas. Algunos son sólo 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é). Entonces, mientras la gente tenga nuevas ideas sobre lo que haría un gran lenguaje, la gente seguirá intentando. Algunos de esos intentos proyectarán un espacio nuevo y genial como Erlang y otros fracasarán, pero siempre y cuando se aprenda algo del fracaso, también está bien.
Muchas personas olvidan que "otro lenguaje similar para los programadores antiguos" es "un lenguaje completamente nuevo para los programadores nuevos".
¿Qué quiero decir con eso?
Bueno, durante "varios años" los programadores, Java o C # pueden ser lenguajes de programación adicionales a los existentes Cobol, (OO / Procedural) Basic, C / C ++, mientras que para los "nuevos" programadores, Java o C # son lenguajes nuevos, mientras que Cobol, (OO / Procedural) Basic, C / C ++ no existe para ellos, por lo que reinventar la rueda se convierte en algo común ...
Como se indicó anteriormente, los idiomas intentan apuntar a ciertas tareas específicas y los nuevos lenguajes podrían apuntar a un área nueva. Estos idiomas pueden tener características de otros idiomas que están actualmente fuera.
Otra razón para los nuevos idiomas es tratar de incorporar muchas tareas diferentes y ser el idioma de elección para muchas necesidades diferentes. Algunos de estos idiomas intentan incluir todos los idiomas que siempre usaría, sin importar la necesidad que tenga.
Aprendí en mi clase de lenguajes de programación que la mayoría de los lenguajes fueron inventados para rascarse una comezón. La mayoría de los lenguajes se inventaron para poder expresar mejor algunos algoritmos. Por ejemplo, los lenguajes funcionales se inventaron para dar a los algoritmos recursivos un espacio mucho más expresivo.
Preguntar por qué hay tantos idiomas es como preguntar por qué C ++ 0x? :)
Además, cuantos más lenguajes conoces, más expresivo podrás llegar a ser, ¡esto es cierto tanto en la programación como en los lenguajes naturales!
Lea otras preguntas en las etiquetas programming-languages