La mayoría de los idiomas permiten 'tweek' para extender ciertas partes de la sintaxis (C++, C#) y/o la semántica que utilizará en su código (Katahdin, lua). Pero no he oído hablar de un lenguaje que pueda definir completamente cómo se verá su código. Entonces, ¿no existe algún lenguaje que ya exista que tenga tales capacidades para anular todos sintaxis & definir semántica?¿Hay un lenguaje de programación con semántica cerca de inglés?
ejemplo de lo que quiero hacer es, básicamente, a partir del código C# a continuación:
foreach(Fruit fruit in Fruits)
{
if(fruit is Apple)
{
fruit.Price = fruit.Price/2;
}
}
quiero no ser capaz de escribir el código anterior en mi lengua perfecta como esta:
Check if any fruits are Macintosh apples and discount the price by 50%.
Las ventajas que me vienen a la mente mirando desde la perspectiva de un codificador en este lenguaje "imaginario" son:
- Es muy claro wh at is on (autodescriptivo) - es sencillo English después de todo, incluso el niño entendería mi programa
- Oculta todas las complejidades que tengo que escribir en C#. Pero, ¿por qué me debe importar al saber que si las declaraciones, los operadores aritméticos, etc. puesto que ya están implementados
Las desventajas que veo para un codificador que van a mantener este programa son:
- Tal vez lo haría expresar este programa de manera diferente a mí, por lo que es posible que no obtenga toda la información que he expresado en mi oración
- Los programas pueden ser bastante detallados y difíciles de depurar, pero si es posible aproximar este tipo de sintaxis, quizás más personas lo harían comenzar a programar ¿verdad? Eso sería increíble, creo. Puedo ir a trabajar y acaba de escribir un ensayo para dibujar un cuadrado en un WinForm así:
Create a form called MyGreetingForm. Draw a square with in the middle of MyGreetingFormwith a side of 100 points. In the middle of the square write "Hello! Click here to continue" in Arial font.
En el código anterior el analizador básicamente debe adivinar que yo quiero usar la plaza sin nombre de En la oración anterior, sería difícil escribir un analizador tan inteligente, supongo, pero es tan simple lo que quiero hacer.
If the user clicks on square in the middle of MyGreetingForm show MyMainForm.
En el código anterior 'básicamente' el compilador debe: 1) generar un controlador de eventos 2) comprobar si hay alguna plaza en el centro de la forma y si hay - 3) ocultar el formulario y mostrar otra forma
Parece muy difícil de hacer, pero no me parece imposible IMO para mí al menos aproximado (personalmente puedo generar un analizador para realizar los 3 pasos anteriores np & es básicamente el mismo que tiene para hacer de cualquier manera cuando agregas incluso en C# a.MyEvent=+handler;
así que no veo un problema aquí) así que estoy pensando que tal vez alguien ya hizo algo como esto? ¿O existe una carga práctica de complejidad para crear un lenguaje de programación de "estilo ensayo" que no puedo ver? Quiero decir, ¿qué es lo peor que puede pasar si el analizador no es tan bueno?- el programa se bloqueará por lo que tiene que volver a la palabra de él :)
Conozco a un montón de gente que habla en LOLspeak –
No tienen Hubo muchos intentos de "lenguajes semánticos", y solo 2 cosas son consistentes: 1.) parecían un desastre, y 2.) nunca fueron realmente semánticas. –
En mi opinión, su "lenguaje perfecto" no está nada claro. Leí el primer ejemplo como "si alguna fruta es manzanas Macintosh, entonces descuenta el precio total en un 50%", no como "para cada fruta que es una manzana Macintosh, descontar su precio en un 50%". El código C#, por otro lado, está perfectamente claro. –