tipos son sintaxis semantica programacion nivel los lenguajes lenguaje existen ejemplos cuantos cuales caracteristicas alto parsing compiler-construction programming-languages nlp

parsing - son - sintaxis y semantica de un lenguaje de programacion



¿Hay un lenguaje de programación con semántica cercana al inglés? (5)

Algunos diseñadores de ficción interactiva usan una sintaxis de lenguaje extremadamente cercana al idioma inglés. Aquí hay algunos códigos de Inform 7 , que puedes jugar en línea :

The foyer is a room. The apple is in the foyer. It is edible. The description is "This is a ripe, green granny smith apple." The apple core is a thing. The description is "This apple core all that is left of that granny smith apple you just consumed." After eating the apple: now the apple core is in the player; say "You gobble down the apple careful not to eat any of those cyanide- laced seeds you heard about."

Tuteé un curso que usó Inform 7. Uno de los tutores tuvo la impresión de que la tarea era diseñar, no escribir un juego. Entonces marcó los programas leyéndolos, sin darse cuenta de que eran programas reales.

La mayoría de los lenguajes permiten "explorar" ciertas partes de la sintaxis ( C ++ , C # ) y / o semántica que usará 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 toda la sintaxis y definir la semántica?

Ejemplo de lo que quiero hacer es básicamente del código C # a continuación:

foreach(Fruit fruit in Fruits) { if(fruit is Apple) { fruit.Price = fruit.Price/2; } }

Quiero poder escribir el código anterior en mi lenguaje perfecto como este:

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:

  1. Está muy claro lo que está sucediendo (autodescriptivo): es sencillo, después de todo, incluso los niños entenderían mi programa.
  2. Oculta todas las complejidades que tengo que escribir en C #. Pero ¿por qué debería importarme aprender si las declaraciones, los operadores aritméticos, etc. ya que ya están implementados?

Las desventajas que veo para un programador que mantendrá este programa son:

  1. Quizás expreses este programa de forma diferente a mí, por lo que es posible que no obtengas toda la información que he expresado en mi oración
  2. Los programas pueden ser muy detallados y difíciles de depurar, pero si es posible incluso aproximarnos a este tipo de sintaxis, tal vez más personas comiencen a programar ¿no? Eso sería increíble, creo. Puedo ir a trabajar y simplemente escribir un ensayo para dibujar un cuadrado en un winform como este:

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 quiero usar el cuadrado sin nombre de la oración anterior, sería difícil escribir un analizador inteligente así, 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 manejador de eventos 2) verificar si hay algún cuadrado en el medio del formulario y si hay - 3) esconder el formulario y mostrar otro formulario

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 y es básicamente lo mismo que tiene que hacer de alguna manera cuando se agrega incluso en c # a.MyEvent=+handler; así que no veo un problema aquí) entonces, ¿estoy pensando que quizás 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? - su programa se bloqueará, por lo que debe volver a redactarlo :)


Intente utilizar el lenguaje de programación llamado ''Google'': tiene una interfaz natural en inglés y su fragmento de código le devuelve todas las respuestas que está sugiriendo. Curiosamente, solo seis minutos después de haber hecho esta pregunta, esta misma página es la número 1 para la consulta:

Comprueba si alguna fruta es manzana Macintosh y descuenta el precio en un 50%

Use la API de Google y creo que tiene la base de un lenguaje de programación natural en inglés.


No creo que esta sea una tarea fácil ni creo que vaya a hacer la vida más fácil para la depuración

¿Cómo lidiarías con estos problemas?

  • faltas de ortografía
  • diferentes dialectos en diferentes partes del mundo
  • diferentes dialectos en la misma parte del mundo
  • sinónimos
  • ¿Qué parte de la oración analizas primero?
  • rasgar (rasgar) y rasgar (del ojo) ambas palabras deletrean son las mismas pero significan dos cosas diferentes.

Devuelve COBOL o puedes recordar "Walk West", "Examine Door", "Push Door", "Open Door", "Use key on door" :)

editar - ¿cómo escribirías esto fuertemente?


Revisa:

La orden osmosiana de los programadores de inglés simple

Ejemplo de código:

The background is a picture. A button has a box and a name. To clear the status: Clear the status'' string. Show everything. To create the background: Draw the screen''s box with the white color. Loop. Pick a spot anywhere in the screen''s box. Pick a color between the lightest gray color and the white color. Dab the color on the spot. If a counter is past 80000, break. If the counter is evenly divisible by 1000, refresh the screen. Repeat. Extract the background given the screen''s box. /or Create the background from the screen. Or something.


Escribí un compilador extensible de inglés a Python llamado EngScript , que convierte el inglés estructurado en código Python funcional.

Este es un ejemplo de código EngScript:

print{create a string from the file called "README.txt"} print{save the string "Woohoo!" to a file called "ExampleText.txt"} print{the first 3 letters of "EngScript"}

Este es el resultado generado por el compilador EngScript:

print(pythonFunctions.stringFromTextFile("README.txt")) print(pythonFunctions.writeStringToFile("ExampleText.txt", "Woohoo!")) print("EngScript"[0:(3 - 1)+1])