Lenguaje de programación de aprendizaje diseñado específicamente para esa empresa [cerrado]

10

¿Por qué alguien desarrollaría su propio lenguaje para usarlo solo dentro de esa empresa cuando tiene XY otros lenguajes que pueden ayudarlo con sus bibliotecas, lógica, etc.? ¿No es mucho más simple seguir la corriente con algo más que desarrollar tu propio idioma?

Josip Ivic
fuente
66
Una gran cantidad de lenguajes "nuevos" que tenemos en la naturaleza pueden usar bibliotecas diseñadas para lenguajes "más antiguos": por ejemplo: C ++ puede usar bibliotecas C, Scala Kotlin y otros pueden usar cualquier biblioteca que se ejecute en la JVM, Typecript puede usar bibliotecas JS. Así que tener un nuevo idioma no implica perder el apoyo de la biblioteca ...
Timothy Truckle
3
¿Por qué construirías un dragster para ir a las carreras de drag en lugar de hacerlo con un auto stock?
candied_orange
3
O realmente, investigue las razones y la racionalidad detrás de la creación de cualquier lenguaje de programación. Algunas personas creen que no eres un verdadero informático hasta que hayas creado tu propio idioma. Esto es similar a no ser un verdadero ingeniero químico hasta que haya creado pólvora (y haya volado una pequeña porción de su casa).
candied_orange
44
Erlang también nació de esta manera: si no me equivoco, inicialmente se desarrolló en Ericsson para uso interno.
Giorgio
3
Un lenguaje específicamente diseñado para una compañía es estúpido, por otro lado, un lenguaje específicamente diseñado para un dominio problemático en el que se encuentra la compañía, a veces puede ser bastante útil. Sabes que tienes lo último, en lugar de lo primero, cuando el diseño y la arquitectura del lenguaje están restringidos a lo que hace que el dominio del problema sea mucho más fácil de resolver / expresar, a veces a costa de ser útil para la programación de propósito general.
Lie Ryan

Respuestas:

25

Es mucho más fácil de entender cuando te das cuenta de que a menudo es producto de un proceso largo y no de alguien que simplemente dice "queremos hacer un nuevo lenguaje".

Por lo general, comienza con la idea de que se puede resolver algún problema utilizando un lenguaje simple específico del dominio. La intención a menudo es que los no expertos usen este lenguaje, por lo que es simple y a menudo carece de características como escritura y módulos fuertes.

Hasta ahora tan bueno. Pero luego, las personas comienzan a enfrentar problemas que el lenguaje no puede resolver. Así que se agregan lentamente nuevas "características" para resolver esos problemas. Y como el proceso es lento y las características son poco frecuentes, no hay motivación para diseñar esas nuevas características correctamente, siempre que se resuelvan los problemas.

Con el tiempo, el nuevo lenguaje adquiere características que lo convierten de un lenguaje simple de dominio específico a un lenguaje complejo de propósito "general", a menudo con una semántica conflictiva y confusa y reglas de sintaxis difíciles de seguir.

Y cuando las personas se dan cuenta de que crearon una bestia tan grande, ya es demasiado tarde para matarla y reemplazarla con un lenguaje diseñado adecuadamente.

Hay algunas lenguas que se desempeñó como este que no están obligados a compañías específicas tos JavaScript tos PHP tos .

Eufórico
fuente
10
Gran respuesta, y aunque JavaScript tiene sus problemas, no creo que sea justo ponerlo en la misma oración que PHP. Es como decir: "¡Tenemos que echar a Bill y Ted de nuestro vecindario, son criminales!" Pero, Bill (JavaScript) es un jaywalker, y Ted (PHP) es un asesino en serie.
TheCatWhisperer
12
@TheCatWhisperer No estoy de acuerdo. JavaScript es tan malo o incluso peor que PHP. Porque DEBE usar (o transpilar) JavaScript, mientras que PHP puede ignorarse de forma segura.
Eufórico
2
ese es un punto mayormente válido.
TheCatWhisperer
1
@Euphoric Esperemos a WASM , tal vez la escena cambie entonces ...
Kroltan
@Kroltan +1 para WASM!
CraigR8806
15

¿No es mucho más simple seguir la corriente con algo más que desarrollar tu propio idioma?

Claro, pero para seguir eso hasta un final absurdo, todos estaríamos escribiendo todo en conjunto si nadie desarrollara nuevos idiomas.

A veces no hay flujo. Los nuevos idiomas llegan a existir porque alguien tiene ganas de rascarse, ya sea un aficionado a los idiomas que solo quiere inventar algo nuevo o una empresa con una necesidad no satisfecha por lo que ya existe.

Esto es exactamente lo que sucedió cuando John Backus propuso el Sistema de traducción de fórmulas matemáticas de IBM en 1953. Quería una forma más fácil para que los usuarios científicos especificaran fórmulas matemáticas que escribiéndolas en conjunto. Ese producto patentado se convirtió en el primer lenguaje de programación que no era ensamblador, y lo conoce como Fortran.

Donde Fortran fue el primero en haber tomado esa ruta, Erlang es prácticamente el hijo del cartel. Ericsson quería mejorar la forma en que se desarrolló el software para sus conmutadores telefónicos e inventó un lenguaje para la creación de prototipos con características específicas de lo que necesitaban. Cuando lo exploré por primera vez, mi conclusión fue que fue desarrollada por personas con un problema real para resolver que no habría sido atendida por ninguno de los otros idiomas disponibles en 1986. Erlang siguió siendo un producto propio y propio como su colega encontrado hasta que fue de código abierto más de una década más tarde, y ahora es un lenguaje convencional.

Tanto Go como Scala son idiomas relativamente jóvenes en el gran esquema de las cosas, y es muy posible que el idioma en uso en la compañía de su colega sea anterior a ambos. Lo que debe hacer es preguntar sobre su historia, por qué llegó a existir y por qué continúa usándose.

Pasé la década entre 2003 y 2013 trabajando para una compañía que hizo un uso extensivo de un entorno específico de la industria que incluía su propio lenguaje que tiene sus raíces a fines de la década de 1970. Si bien algunos idiomas más nuevos podrían haber sido reemplazos más adecuados (y los ganchos para ellos fueron injertados con el tiempo), esa industria tuvo una inversión lo suficientemente grande y un gran cuerpo de código bien probado que simplemente no había un buen caso de negocios para cambiar a otra cosa.

Blrfl
fuente
-1

He visto esto antes. Nunca funciona bien Algunas personas tienen un complejo "no inventado aquí". Por lo general, hace que una empresa corra reinventando la rueda.

Piénsalo. Este nuevo lenguaje probablemente se rompe todo el tiempo. Entre un analizador, compilador, VM, enlazador, lo que sea ... Ahora hay miles de errores con los que las personas perderán horas depurando problemas aleatorios. Todo por lo que creen que necesitan que otros idiomas no tienen.

C / C ++ se usa para escribir sistemas operativos como, ya sabes, todos ellos. Y sin embargo, alguien pensó que necesitaba algo diferente.

usuario271591
fuente
77
Aparentemente nunca has visto a Kotlin. O Javascript o C #, para el caso. Fog Creek Software utilizó su propio lenguaje de programación llamado Wasabi (basado en VB) durante años (aunque es cierto que la deuda técnica finalmente los atrapó ). Entonces, ciertamente hay casos en los que funciona.
Robert Harvey
1
Hasta donde puedo recordar, C # nació después de que Microsoft había intentado crear una implementación de Java no compatible, Sun lo demandó y lo perdió. cnet.com/news/sun-microsoft-settle-java-suit Como ya no podían llamarlo Java, desarrollaron su propio lenguaje que, inicialmente, era muy similar a Java.
Giorgio
1
"Este nuevo lenguaje probablemente se rompe todo el tiempo": si el diseño de su lenguaje le permite evitar toda una clase de errores de aplicación, entonces esto puede ser una compensación aceptable
Eric
16
¿Has oído hablar de C? Según los informes, se desarrolló internamente solo para un único sistema operativo en una sola computadora. ¿Por qué K&R no usó algo probado que se usó para escribir sistemas operativos, como PL / 1, BCPL o Algol 68?
idrougge