¿Se ha vuelto muy popular algún idioma para algo que no sea su propósito?

70

Toma este escenario:

  • Un programador crea un lenguaje para resolver algún problema.

  • Luego lanza este lenguaje para ayudar a otros a resolver problemas como este.

  • Otro programador descubre que en realidad es mucho mejor para alguna categoría diferente de problemas.

  • En virtud de esta nueva aplicación, el lenguaje se vuelve popular para esa aplicación principalmente.

¿Hay alguna instancia de que esto ocurra realmente?

Dicho de otra manera, ¿el propósito de un lenguaje tiene alguna relación con cómo se usa realmente o si se vuelve popular? ¿Es incluso importante que un idioma tenga un propósito anunciado?

Jon Purdy
fuente
44
Su ejemplo HTML realmente no se ajusta a lo que está buscando, ¿son los documentos técnicos tan diferentes a cualquier otro documento? El propósito principal de HTML sigue siendo el mismo que en 1989, proporcionar medios fáciles para que los documentos se hagan referencia entre sí. En mi humilde opinión, HTML es exactamente lo contrario de lo que realmente estás buscando.
Yannis
55
Considerando la larga lista de respuestas; tal vez la pregunta opuesta es más interesante: lo que (popular) el lenguaje es simplemente utilizado para a que se destina propósito?
Jaap
@ Yannis: Buen punto. No es el mejor ejemplo, y realmente podría discutirse de cualquier manera. Editado para eliminar.
Jon Purdy
@Jaap: ¡Pensé lo mismo!
leonbloy
2
Podría estar equivocado en esto, pero estoy bastante seguro de que la mayoría de los idiomas no se utilizan para lo que pretendían sus creadores. Creo que la razón principal de esto es que los extraños no saben para qué se debe usar, lo que les ayuda a tener una mentalidad más abierta sobre el potencial que tiene un idioma.
Kenneth

Respuestas:

118

Lisp . McCarthy originalmente especificó Lisp en un documento para mostrar que pocas anotaciones simples son suficientes para construir un lenguaje completo. Se sorprendió al descubrir que Lisp podría implementarse en código máquina (Steve Russel hizo la primera implementación del intérprete de Lisp). Lisp es ampliamente utilizado para la programación de IA.

aufather
fuente
70
¡+1, Lisp no estaba destinado a ser un lenguaje de programación! No creo que puedas superar eso.
Kilian Foth
77
OTOH, uno podría argumentar que LISP fue diseñado para usarse en la frontera entre programación y matemáticas, y permanece allí.
MSalters
1
Creo que McCarthy usó a Lisp como ejemplo en sus clases y tenía la intención de escribir un compilador para él, pero un día mencioné en la clase que la codificación manual de la función eval implementaría un intérprete, pero por supuesto 'nadie realmente querría hacer eso'.
Steven A. Lowe
Mis amigos de Lisper me dicen que ya no se usa en IA, pero que todavía tiene aplicación en todas partes .
greyfade
111

Java estaba originalmente destinado a la programación de sistemas integrados. De Wikipedia "Java fue originalmente diseñado para televisión interactiva" . Pero se hizo muy popular para la programación de aplicaciones y web.

aufather
fuente
44
Huh No puedo creer que no haya pensado en este. Podría decirse que es el ejemplo canónico ... aunque eso no quiere decir que todavía no me sorprenda.
Jon Purdy
Sin embargo, ¿alguna vez se lanzó Java para el trabajo incrustado (antes de Java incrustado, que vino después de su promoción para la web)?
Marcin
El elemento de diseño crucial en el diseño de Java fue la capacidad de ejecutar código no confiable.
13
la historia es aún peor: A) estaba destinada a sistemas integrados. B) pero nunca vio la luz hasta que se pudo incrustar en páginas web. C) no obtuvo ningún respeto hasta que se utilizó para aplicaciones web 'empresariales' y D) finalmente se integró en muchos sistemas operativos de teléfonos; pero no como un controlador de hardware, es una plataforma GUI.
Javier
Ha habido un proyecto para llevarlo a los decodificadores durante más de 10 años. Busque OCAP o tru-2way
Bill K
32

Lua fue diseñado principalmente como lenguaje de configuración, y terminó encontrando un nicho como el lenguaje de scripting más popular para juegos (porque es pequeño, rápido, potente, portátil, fácil de ampliar e incrustar, con una sintaxis fácil de usar). El juego más popular para usarlo, World of Warcraft, ni siquiera lo usa para la configuración, sino que usa XML.

Barro
fuente
... y ahora con LuaJIT está encontrando cada vez más uso en aplicaciones de procesamiento en tiempo real
Javier
@lukas: "No realmente" ¿qué ? Tenga en cuenta que sus predecesores, SOL y DEL, ni siquiera tenían flujo de control, solo eran lenguajes de configuración. Lua fue la extensión de esos lenguajes de configuración para incluir soporte de programación.
Barro
"Lua fue diseñado principalmente como lenguaje de configuración" Yo diría que es un lenguaje de programación.
Lukasz Madon
77
Quizás debería haber dicho "propósito previsto" en lugar de "diseñado principalmente como". El propósito previsto era usar Lua donde se usaban SOL y DEL. Estos eran lenguajes de configuración en los que los usuarios comenzaban a exigir funciones de programación. Lua se creó para satisfacer esa necesidad. Como los propios autores han declarado , "La amplia adopción de Lua en los juegos fue una sorpresa para nosotros. No teníamos el desarrollo del juego como objetivo para Lua". Eso es exactamente lo que buscaba el OP, ¿no?
Barro
32

La intención original de Larry Wall para Perl era un " lenguaje de script Unix de propósito general para facilitar el procesamiento de informes " y la página del manual describe el lenguaje como:

Perl es un lenguaje interpretado optimizado para escanear archivos de texto arbitrarios, extraer información de esos archivos de texto e imprimir informes basados ​​en esa información.

Y, por supuesto, la página del manual también nos dice que Perl significa lenguaje práctico de extracción e informes (el nombre real es un error ortográfico del nombre original Pearl , cambiado cuando Wall descubrió un lenguaje PEARL ya existente ).

Perl ha recorrido un largo camino desde entonces, ya que es el lenguaje del que los dioses forjaron el universo .

ingrese la descripción de la imagen aquí

Yannis Rizos
fuente
23
Uno debe corregir eso: Patological Eclectic Basura Lister
Richard
3
¡Hay más de una forma de abreviar! Very Perly
Cualquier acrónimo de Perl es en realidad un backronym.
CanSpice
1
@DarkTemplar La forma en que lo interpreto es que Perl se ha deslizado casi en todas partes. Desde sus humildes comienzos, Perl se convirtió en un lenguaje web muy popular, un lenguaje de secuencias de comandos extremadamente popular, un lenguaje multipropósito algo popular, su sintaxis de expresión regular se convirtió en algo definitivo, dio a luz a otro idioma (php), etc. Además del cómic también hace referencia a lisp, que es la respuesta aceptada a la pregunta, por lo que pensé que era una representación divertida (aunque inexacta) de la relación de los dos idiomas (uno es el soñador y el otro el que la gente realmente usa).
Yannis
1
@DarkTemplar Yeap. Está entre los diez primeros en el índice TIOBE . Por supuesto, no debes tomar el índice TIOBE muy en serio, es bastante relativo y subjetivo. Pero sigue siendo una buena indicación de la popularidad del idioma.
Yannis
28

Supongo que JavaScript también encaja en esta pregunta porque no creo que Brendan Eich, en los días de Netscape, alguna vez haya imaginado que futuras versiones de su LiveScript se utilizarían para crear las llamadas "aplicaciones" web actuales.

JavaScript se ha movido de simples validaciones de formularios y rollovers de imágenes a una herramienta poderosa que puede competir con las aplicaciones fuera de línea, tanto en términos de funcionalidad como de belleza.

Desafortunadamente, creo que muchos todavía lo ven como un juguete.

Andreas Grech
fuente
31
Lo interesante es que se está moviendo hacia ser el lenguaje ensamblador de la web. En otras palabras, ¿qué otras lenguas se compilan hacia abajo y ejecutados. Yo no creo Brendan Eich espera que .
3
tiene algo que agregar: no es solo un lenguaje de script del lado del cliente. Muchos proyectos como node.js o rhino usan javascript como lenguaje del lado del servidor
gion_13
Es curioso, pero ¿qué es un "lenguaje de secuencias de comandos del lado del cliente" frente a "lenguaje del lado del servidor" .......?
Dark Templario
@DarkTemplar. Se ejecuta un lenguaje de secuencias de comandos del lado del servidor en el servidor y su salida se envía al navegador. Se envía un lenguaje de script del lado del cliente al navegador tal cual y se ejecuta allí. (Por supuesto, el idioma del lado del servidor se puede utilizar para generar el idioma del lado del cliente, si lo desea). El único idioma que se ejecuta en la mayoría de los navegadores es javascript.
TRiG
19

Erlang Fue inventado hace mucho, mucho tiempo en los laboratorios de Ericsson para desarrollar aplicaciones de telefonía, probablemente por sus líneas de conmutación y dispositivos de acceso. Ahora se ha convertido en un lenguaje dinámico de propósito general prometedor con un interesante concepto de concurrencia.

Sería interesante si en el futuro hubiera más idiomas del mundo de las telecomunicaciones que cruzaran sus líneas con el mundo de TI y evolucionaran a partir de ahí, especialmente los idiomas diseñados inicialmente para el modelado y la verificación de protocolos.

UUlum
fuente
¿Y no fue una de las inspiraciones para node.js?
dodgy_coder
No pienses que esto califica. La razón por la que Erlang se inventó para la telefonía es que necesitaban un lenguaje de concurrencia dinámico general. Todavía es eso.
Alan Baljeu
15

Pascal. Creado para enseñar programación.

Nerevar
fuente
3
Je, que explica muchas cosas ...
meter
2
@poke: De maldición , lo sé.
Nerevar
Jeje, veo lo que hiciste allí.
Trufa
Oye, ¿alguien puede explicar esta respuesta? Jajaja ¡Soy un novato!
Dark Templario
14

PHP originalmente significaba Página de inicio personal , pero hoy también se usa para algunas aplicaciones web un poco más grandes.

Jaap
fuente
18
Por supuesto, el mayor usuario de PHP, Facebook, en muchos aspectos todavía está en el mercado de la página de inicio personal.
Jaap
3
"PHP / FI fue creado por Rasmus Lerdorf en 1995, inicialmente como un simple conjunto de scripts de Perl para rastrear los accesos a su currículum en línea". Ha recorrido un largo camino, bebé.
nickf
Si bien PHP sigue siendo un lenguaje web, se ha invertido un poco el rol: PHP estaba destinado a integrarse como pequeños fragmentos dentro de HTML, mientras que muchos proyectos ahora generan cadenas HTML dentro de PHP. ¡Sin embargo, todavía necesitan una <?phpetiqueta al comienzo del archivo!
Warbo
14

Estoy bastante seguro de que VBScript no fue diseñado para escribir malware, a pesar de que es un uso extremadamente común.

user16764
fuente
1
Eso es un poco duro, ¿no te parece? Java y C han tenido su parte justa de malware.
Jeremy
@JChild: Han pasado varios años desde su comentario. Incluso entonces, sin embargo, defender a VB fue algo muy extraño.
Magus
@ Magus Ni siquiera es VB. Es VBScript. Ya sabes, los archivos con extensiones .vbs. Los que asume automáticamente son virus cuando los ve.
user16764
13

Inicialmente diseñado como un método para hacer que el código sea más genérico, se descubrió que Template Meta Programming en C ++ estaba completo, y hasta el día de hoy se utiliza para mejorar en gran medida el lenguaje C ++ a través de bibliotecas como boost.

Jason McCarrell
fuente
8
... y hacer llorar a los programadores de C ++ con tiempos de construcción excesivamente largos ;-)
quant_dev
8
y horribles mensajes de error.
DeadMG
11

BASIC es otro caso famoso. Su nombre ( Código de instrucción simbólica de uso múltiple para principiantes ) insinúa su origen como idioma de aprendizaje, pero desde entonces ha crecido bastante.

MSalters
fuente
24
je - microsoft reemplazó "principiante" con "negocio" y succionó millones
Steven A. Lowe
11

VHDL y Verilog (también conocido como VerilogHDL) originalmente estaban destinados a describir circuitos y componentes digitales. Se utilizaron como una forma de documentación y para simular el comportamiento de los componentes. Más tarde, Synopsys y otros desarrollaron tecnología que podría traducir (un subconjunto de) estas descripciones en una lista neta de puertas, que a su vez puede usarse para producir hardware real.

VHDL y Verilog se denominan lenguajes de descripción de hardware (HDL) por razones históricas. Hoy en día se usan como lenguajes de diseño de hardware (mismo acrónimo).

Philippe
fuente
Bonito desarrollo basado en modelos de la vida real
Jaap
@ Mark Sí, VHDL es un circuito integrado de muy alta velocidad, lenguaje de descripción de hardware. Verilog es un lenguaje completamente diferente. Verilog a veces también se llama Verilog HDL. en.wikipedia.org/wiki/Verilog
Philippe
2
QHDL es muy similar a VHDL y se usa para describir circuitos para computadoras cuánticas. No puedo imaginar un idioma que se aleje tanto de sus orígenes.
Mark Booth
@ Mark Wow, eso es interesante "QHDL"! Google muestra mucho ruido. Tiene una referencia?
Philippe
1
Lo descubrí en la excelente sesión de "Black Quantum Computing for Programmers" de Paul Blacks en la conferencia ACCU 2011. Sus diapositivas están en accu.org/content/conf2011/…
Mark Booth
10

ML comenzó como un lenguaje para desarrollar y escribir un probador de teoremas. Era el "metalenguaje" del probador de teoremas.

Ryan Culpepper
fuente
Bien. Vale la pena señalar que la razón por la que esta es una respuesta válida es que su aplicación principal ahora es compiladores y otras herramientas de lenguaje similares (al menos hasta donde yo sé).
Jon Purdy
66
+1, pero decir que ML se volvió "muy popular" es un poco
exagerado
Quizás, pero además de sus usuarios directos de hoy, influyó en casi todos los idiomas escritos a continuación.
Ryan Culpepper
7

C
Originalmente fue desarrollado originalmente para su uso con el sistema operativo Unix. Pero el lenguaje se hizo tan popular que incluso Dennis Ritchie se sorprendió.
En su famoso libro El lenguaje de programación C . Ritchie afirma que "se ha extendido mucho más allá de sus orígenes como el lenguaje del sistema operativo UNIX". y lo sorprendido que estaba cuando se convirtió en un lenguaje popular para el desarrollo de aplicaciones.

Ranger
fuente
11
Bueno, originalmente fue diseñado para desarrollar sistemas y aplicaciones de bajo nivel de una manera multiplataforma. Se mantiene en consonancia con sus objetivos originales a pesar de su popularidad, por lo que no encaja.
Jon Purdy
3
@ Jon Bueno, se ajusta un poco, ya que superó su propósito al convertirse en la forma más fácil de dispararse en el pie.
Yannis
1
@ Yannis: Jaja, cierto. Pero estoy preguntando acerca de los idiomas cuyo propósito principal cambió por completo, no aquellos que simplemente crecieron para abarcar más propósitos.
Jon Purdy
Agregaría que C se hizo popular como uno de los principales lenguajes para concursos de código ofuscado.
Peter G.
¿No fue diseñado para implementar el sistema operativo?
Nikko
3

C ++ se diseñó originalmente como "C con clases" para facilitar la programación orientada a objetos en C ++.

Luego se proporcionaron plantillas en una versión posterior para permitir la implementación de clases de contenedor fuertemente tipadas. Más tarde se notó que estas plantillas en realidad constituyen un lenguaje de programación en tiempo de compilación completo de Turing.

Como consecuencia, muchas aplicaciones ahora usan C ++ no como un lenguaje de programación orientado a objetos, sino más bien como un lenguaje de programación dirigido por algoritmos que depende en gran medida del polimorfismo y la metaprogramación en tiempo de compilación.

Konrad Rudolph
fuente
77
Pero el C ++ está diseñado para fines generales y se utiliza como lenguaje de propósito general.
BenjaminB
@ Ubiquité No creo que C ++ realmente haya sido diseñado como un lenguaje de propósito general. O más bien, fue diseñado para ser utilizado con diferentes propósitos (pero en particular en la programación de sistemas). Pero fue no diseñado para trabajar con múltiples paradigmas .
Konrad Rudolph
En realidad, la naturaleza de múltiples paradigmas es inherente a su diseño, simplemente en virtud de atornillar las características de OO en C al tiempo que conserva la capacidad de utilizar sus características de procedimiento más apropiadas.
Jon Purdy
@ Jon OK, lo concederé. Sin embargo, la programación genérica y la metaprogramación de plantillas no estaban entre estas características. Y hoy en día C ++ es uno de los únicos (y posiblemente el principal) lenguaje que admite estas características.
Konrad Rudolph
Muy cierto. Demonios, soporte para programación genérica y constson las dos razones más importantes por las que uso C ++.
Jon Purdy
2

ADA - originalmente diseñado bajo contrato DoD para aviónica. Aunque todavía se usa en esa aplicación, también es popular, por ejemplo, para el middleware empresarial en tiempo real.

vartec
fuente
55
Fue construido como un lenguaje de propósito general. El DoD quería un lenguaje que se pueda usar para todo, para reducir la cantidad de lenguaje diferente utilizado.
BenjaminB
Eso es muy gracioso. Ada fue un lenguaje creado explícitamente con el objetivo de reducir la cantidad de idiomas diferentes que existen. Según esa métrica ("diseñada con un propósito, utilizada para otro"), Ada debería ser votada en la parte superior de la lista con Lisp, otro lenguaje anti-idioma.
Jared Updike
2

"¿El propósito de un lenguaje tiene alguna relación con cómo se usa realmente o si se vuelve popular?"

No creo que el propósito pretendido de un idioma tenga mucho que ver con su uso y popularidad reales: hay algunos lenguajes geniales que fueron diseñados desde el principio para ser innovadores, flexibles y versátiles, pero nunca se volvieron tan utilizados o populares, excepto en mercados verticales muy especializados, por ejemplo, Eiffel. OTOH, Basic, Pascal, C, etc., dominaron el paisaje durante años, aunque fueron diseñados originalmente para fines limitados y específicos.

Las consideraciones comerciales / financieras y de apoyo de la OMI siempre han desempeñado un papel importante en la difusión y extensión de ciertos idiomas. Por ejemplo: Borland presenta TurboPascal y paquetes, lo comercializa y lo admite. MS presenta C # y paquetes, lo comercializa y lo admite. Como resultado, estos lenguajes se hicieron populares, surgieron industrias de herramientas de terceros y cada vez más desarrolladores y empresas se subieron al carro.

Pero en los últimos años, los lenguajes y herramientas de código abierto están cambiando la dinámica y los idiomas ahora se vuelven populares basados ​​más en el 'mérito' que en el marketing, por ejemplo, Ruby, Python y Perl. Pero eso no se debe tanto a la 'intención' de los inventores como al potencial incorporado del lenguaje para la extensión y el uso oportuno.

Mikey
fuente
2

No creo que haya un lenguaje popular que no haya sido reutilizado de su intención original. Incluso C se escribió originalmente para hacer un sistema operativo portátil (unix).

Cualquier intento de escribir un lenguaje de programación verdaderamente genérico sin un objetivo específico en mente probablemente fracasaría miserablemente debido a la falta de moderación y enfoque.

Bill K
fuente
PostScript: es omnipresente (en casi todas las computadoras e impresoras), pero solo se utiliza para imprimir gráficos. Aunque, uno podría argumentar que fue reutilizado cuando se usa dentro de los archivos PDF.
13ren
1

Escuché que Ruby fue diseñado como un lenguaje para escribir poesía, ¡resultó que también puedes escribir un código hermoso!

Voy a ser sincero contigo. Quiero que llores Llorar. Para gemir dulcemente. Este libro es una guía conmovedora de Ruby. Eso significa un código tan hermoso que se derraman lágrimas. Eso significa cuentos galantes y verdades sombrías que te hacen despertar a la mañana siguiente en los brazos de este libro.

Tinco
fuente
2
Suena interesante. Alguna fuente?
Hasta
El enlace Ruby te lleva a un libro que fue escrito para enseñarle a Ruby de una manera artística. Mi respuesta es una broma en referencia a ese libro que afirma que escribir Ruby es como poesía. En realidad, se podría decir que Ruby fue diseñado para ser un lenguaje de programación de propósito general, pero inspiró a (algunas) personas a mirar el código de Ruby como poesía.
Tinco