5

Muchos lenguajes de programación comparten características genéricas e incluso bastante universales. Por ejemplo, si comparas Java, VB6, .NET, PHP, Python, entonces encontrarás funciones comunes como estructuras de control, manipulación numérica y de cadenas, etc.¿Existe un Modelo Universal para Idiomas?

Qué se ha hecho para definir estas características en un meta -nivel de lenguaje (o idioma-agnóstico)?

UML ofrece una referencia descriptiva de software en todos los aspectos, pero el enfoque en el mundo real parece ser el proceso de datos. ¿Es UML relevante?

No estoy preguntando "¿Por qué no tenemos un solo idioma que reemplace la plétora actual". Necesitamos muchas herramientas diferentes (al menos en este momento).

No estoy pidiendo que todos los idiomas se ajusten a una plantilla: el ensamblaje frente a los lenguajes compilados son lo suficientemente diferentes para hacerlo inviable (y algunas personas llaman HTML a un lenguaje, aunque yo no lo haría). Cualquier intento comenzaría con un alcance adecuado. De acuerdo con esto, no esperaría que el modelo cubra ni siquiera una pequeña selección con plena validez.

Sin embargo, cabría esperar que dicho modelo se pudiera utilizar para transponer de un idioma a otro (con objetivos limitados - traducción de think jist).

+0

UML no es un "Modelo universal para idiomas", es un "Lenguaje universal para modelado". Depende del desarrollador convertir los modelos en un programa (o completarlos, si la herramienta UML genera código). –

Respuesta

3

Lo que está describiendo suena como formal semantics of programming languages. Hay una variedad de enfoques y cada uno dará una forma de especificar formalmente el significado de un programa en algún lenguaje de programación.En algunos casos, esta especificación es esencialmente una traducción a otro idioma, como el cálculo lambda, o compilación para una máquina abstracta especificada formalmente, como SECD.

Hay tanto trabajo aquí que es difícil elegir una referencia específica. Pero espero haberle dado algunas palabras clave útiles para continuar su búsqueda.

+0

Esta parece ser la mejor de las 7 respuestas hasta el momento. Y desalentador como la mayoría de los demás: formidables implicaciones en mi escaneo del artículo vinculado. – Smandoli

+0

Tengo this libro sentado en casa. Es viejo y está un poco desactualizado, pero parece un poco menos aterrador que los papeles que hay. Funciona a través de ejemplos específicos de idiomas en detalle. Por ejemplo, una traducción completa de un (subconjunto de) Prolog en Algol-68, que ilustra cómo Algol-68 puede usarse como un lenguaje universal para representar a cualquier otro. – sigfpe

0

UML se utiliza generalmente para definir algoritmos/código en términos más simples antes de pasar a código real.

Para responder a lo que supongo que es su pregunta, ya existe un conjunto definido de partes requeridas de los idiomas, mientras que, para, si, else ... ¿Se establecerá alguna vez como estándar o se convertirá en una base? biblioteca que utilizan todos los idiomas: no, esto se debe a que a los diferentes desarrolladores de idiomas les gusta hacerlo ellos mismos.

+0

"ya hay un conjunto definido de partes necesarias" - Supongo que estoy buscando más información sobre ese bit. – Smandoli

+0

Para extraer de la respuesta de Romain Hippeau acerca de la completitud de la totalidad, parecería que es lo más primitivo, necesitamos asignación de memoria y goto. Funciones más avanzadas como funciones, bucles y tipos de datos se basan en esas tres ideas básicas. – aepheus

4

Ha habido muchos intentos en esto, pero ninguno ha sido muy exitoso. Lo primero que sé es UNCOL hace más de 50 años.

Has dado una lista de idiomas que tienen mucho en común porque son bastante similares: todos son lenguajes de procedimiento con raíces comunes y algunas extensiones de OO, por lo que no es demasiado sorprendente. Si comienzas a buscar diferentes idiomas como LISP, haskell, erlang, prolog o incluso SQL, comienzas a ver cosas muy diferentes.

+0

Me encantaría tener esa gran perspectiva. Me complace saber más sobre lo pequeña que es la mina. En cuanto a SQL, es otro ejemplo de cómo el término "lenguaje" es inadecuado o ambiguo (al menos como lo uso yo). Necesito un vocabulario más rico. – Smandoli

+0

Gracias por la referencia de UNCOL. Es un intento de solución universal, en lugar de modelo. Wikipedia: "UNCOL fue un esfuerzo ambicioso para la década de 1960. Un intento de resolver el problema de compilación del compilador, finalmente falló porque la tecnología del lenguaje y del compilador aún no estaba madura. "Entonces ... ¿Qué ha cambiado, realmente? Si hay más madurez, no ha resultado en menos diversidad. – Smandoli

0

Creo que lo más cerca que puede llegar a esto sin perder la generalidad es una máquina de Turing, que no es muy útil para fines prácticos. Pero si permite que los lenguajes de la máquina de Turing sean "etiquetados" y reutilizados, puede desarrollar los conceptos que necesita, trabajando de bajo a alto nivel.

+0

Esa tiene que ser la tesis de posgrado de alguien, ¿no es así? – Smandoli

+1

@Smandoli, ¡es probable que sea un * lote * de tesis de postgrado de la gente! – tloflin

+1

Bueno, siempre y cuando el resultado sea algo que pueda jugar un juego decente. – Smandoli

0

Creo que MOF es el lenguaje universal. Puede, por ejemplo, crear diagramas UML de MOF a través de un metamodelo UML. Si guarda esta información del metamodelo en xmi, puede guardar la información que necesite e incluso más que en cualquier idioma. La semántica XMI es tan rica que no hay límite para su uso. Si mapeas UML a xmi en la parte superior de un metamodelo en vivo sincroniza con MOF, entonces este es para mí el lenguaje universal.

0

El autor de Pattern Calculus parece proponer un modelo tan universal. Espero que resulte tan útil como los intentos previos de definir un modelo universal, es decir, bueno en partes pero no en la última palabra.

Cuestiones relacionadas