Lenguajes de programación, lenguajes posicionales y lenguajes naturales.

8

Algunos lenguajes de programación están modelados en código máquina, como los lenguajes ensambladores. Otros idiomas están modelados en un idioma natural, el idioma inglés. Otros no están modelados en código máquina o lenguaje natural. Los lenguajes como PROLOG, por ejemplo, no siguen ninguno de los modelos.

Encontré este módulo de Perl Lingua :: Romana :: Perligata , que permite escribir programas usando una sintaxis que es muy similar al latín.

¿Hay lenguajes de programación que tengan menos sintaxis posicional?

¿Existen otros idiomas o módulos que le permitan escribir en sintaxis inspiradas en otros idiomas naturales, como el francés, el hebreo o el farsi? Hay una lista muy larga en Wikipedia , pero la mayoría de esos proyectos están muertos.

Hay una pregunta relacionada con StackOverflow . La respuesta que se aceptó es "Usar Google".

Виталий Олегович
fuente
1
No está completamente relacionado, pero muchas de las respuestas involucran lenguajes que admiten la modificación de sintaxis y, por lo tanto, pueden ser lo que está buscando: http://programmers.stackexchange.com/questions/145751/has-whitespace-in-identifiers-ever -been-idiomatic
Telastyn
2
Algunos lenguajes de programación no están modelados ni en código de máquina ni en lenguaje natural. Los idiomas como PROLOG, por ejemplo, no siguen ninguno de los modelos ...
Andres F.
También debe tener en cuenta los lenguajes de programación que se inspiran principalmente en las matemáticas. Al menos en la investigación de PL, estos son bastante comunes.
Tikhon Jelvis
@TikhonJelvis, ¿quiere decir que para un lenguaje de programación poder expresar estructuras y conceptos matemáticos se considera más importante que ser similar a los lenguajes naturales?
Виталий Олегович
Algo así como. Particularmente, estoy pensando en lenguajes donde representas la computación principalmente usando ideas matemáticas. Principalmente lenguajes de programación funcionales como Haskell. Por lo tanto, no solo expresa conceptos matemáticos, en realidad los usa para todo, como representar estado e IO. También está más cerca de la notación matemática que un lenguaje natural.
Tikhon Jelvis

Respuestas:

2

El único lenguaje de programación escrito actualmente utilizado que puedo pensar fuera de mi cabeza es HTML. Ahora, dependiendo de su definición de lenguaje de programación, esto puede o no contar.

Para ayudarlo a comprender por qué no hay muchos lenguajes de programación de alto uso que tengan menos sintaxis posicional, debe comprender cómo están diseñados la mayoría de los lenguajes de programación. La mayoría de los lenguajes de programación se basan en gramáticas inequívocas, principalmente mediante el uso de gramáticas LL y LR. Para mantener las gramáticas inequívocas, la mayoría de la tecnología se basa en el uso de la ordenación de los símbolos y palabras, por ejemplo, terminales, para que la entrada no sea ambigua. Lo que está buscando son idiomas que abandonen la posición para que la gramática sea inequívoca. Si los compiladores no pueden usar la posición para decidir si la gramática es inequívoca, entonces el compilador necesita algunos otros consejos para que la gramática no sea ambigua, por lo tanto, prefijos como #,%, 'y ". Otra técnica es asociar palabras clave con cada valor, es decir ancho = 10, que es lo que hace HTML.

Los lenguajes declarativos son los más cercanos en general que conozco, como PROLOG y SQL, pero nuevamente requieren el uso de algunos valores posicionales.

Los únicos otros idiomas que vienen a la mente son los idiomas hablados en los sistemas de inteligencia artificial que procesan la entrada, como Watson , pero nuevamente, ¿considera que es un lenguaje de programación? Si considera que SQL es un lenguaje de programación, ¿por qué no una consulta verbal para Watson?

Guy Coder
fuente
Gracias por la gran explicación! Supongo que de esta manera el lenguaje HTML debe tener una gran cantidad de palabras clave. Supongo que las expresiones regulares en tokens podrían usarse para decidir el tipo de token. Por supuesto, eso haría que el compilador sea mucho más lento.
Виталий Олегович
también, por extensión, XML podría ser considerado.
alfa64
3
Podría considerar Forth, que no tiene mucha gramática.
Gort the Robot
1
AFAIK HTML no es un lenguaje de programación.
jcora
3
HTML es un lenguaje de marcado ; eso es lo que significa la M , ¡no es un lenguaje de programación porque no está completo! XML definitivamente tampoco es un lenguaje de programación. ¡Son formatos de codificación de datos ! ¡Esto es como decir que un JPEG es un lenguaje de programación!
2

Oracle Policy Automation tiene reglas comerciales codificadas en lenguaje natural. Vale la pena echarle un vistazo.

Un ejemplo es:

Human Resources Policy 100 – Maternity Leave 

100.1. The employee is eligible for maternity leave if

a. The employee is female and
b. Either
 i. The employee has given birth to a natural child or
 ii. The employee has taken legal custody of an adopted child
 and
c. The employee is a full time employee and
d. The employee has been employed for at least 12 months continuously

La fuente original del ejemplo.

La documentación oficial de Oracle está aquí .

Paul Fowler
fuente