Pregunta

Quiero decir, ¿hay un lenguaje codificado con codificación de estilo humano? Por ejemplo:

Create an object called MyVar and initialize it to 10;
Take MyVar and call MyMethod() with parameters. . .

Sé que no es tan útil, pero puede ser interesante crear esa gramática.

¿Fue útil?

Solución

COBOL es muy parecido.

SET MYVAR TO 10.
EXECUTE MYMETHOD with 10, MYVAR.

Otra muestra de Wikipedia:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.
Sin embargo, aunque parezca extraño, a pesar de que su diseño se puede leer en inglés, la mayoría de los programadores lo han socavado por completo con extrañas convenciones de nomenclatura:

SET VAR_00_MYVAR_PIC99 TO 10.
EXECUTE PROC_10_MYMETHOD with 10, VAR_00_MYVAR_PIC99.

Otros consejos

¿Qué te parece LOLCODE ?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

Simplicidad en sí misma

AppleScript está bastante cerca de eso, aunque obviamente depende de la plataforma.

Aquí hay un script para abrir iTunes y reproducir una lista de reproducción

tell application "iTunes"
    activate
    play playlist "Party Shuffle"
end tell

Fuente: Ejemplos de AppleScript

  

Proyectos que promueven la programación en   " lenguaje natural " son intrínsecamente   condenado al fracaso.

- Edsger W.Dijkstra, ¿Cómo podemos decirle a las verdades que podría doler?

Esto fue " la próxima gran cosa " Aproximadamente a principios de la década de 1980, pasé gran parte de mi primer par de años como un programador trabajando en "NATURAL", que supuestamente era el mejor de la nueva cosecha de 4GL (lenguajes de cuarta generación) diseñados para hacer el acceso a datos ( en este caso a una base de datos ADABAS) legible por humanos.

Por supuesto que no hizo absolutamente nada del tipo. Todo lo que terminamos con fue un código verbalmente mal estructurado. Ambos de estos productos todavía existen, pero nunca has oído hablar de ellos, lo que demuestra que fue un callejón sin salida.

En realidad, en ese período parecía haber un deseo general de ir más allá de la "programación" hacia algún tipo de AI heaven inspirado en 2001. Oracle estaba realmente interesado en la generación de código y recuerdo con un cierto interés un producto llamado "el último" que se estaba comercializando a los gerentes como un producto que generaría automáticamente cualquier programa que quisiera y haría que todo su personal de programación fuera redundante. Parece no haber estado a la altura de las expectativas ;-)

Vale la pena recordar que el SQL se comercializó originalmente en algunos trimestres como una forma de permitir a la administración consultar directamente sus datos. Incluso me enviaron a un curso para aprender SQL básico (en una gran organización nacional de transporte que funcionaba en rieles, la variedad de acero) donde se incluían los tipos de administración junior porque tenían planes de poner herramientas de consulta básicas en sus manos. Qué desastre que fue.

Tal vez sea diferente en 50 años, pero en la etapa actual de juego, la codificación exige una cierta claridad de pensamiento e implementación que se realiza mejor mediante una sintaxis dedicada diseñada para esos fines, no una aproximación a un lenguaje natural que es confuso y ambiguo. La aproximación más cercana es posiblemente la física, donde la esencia del tema se encuentra en las matemáticas utilizadas (piense en un lenguaje de programación para la física) y no en un vocabulario detallado.

ADDED

Estaba olvidando que, aparte de COBOL, también había PL / 1, en algún momento se le atribuyó el hecho de permitir que la NASA pusiera a un hombre en la luna. Era tan detallado como COBOL e intentaba aún más difícil ser 'legible para el administrador'. Es por eso que nadie ha oído hablar de eso ahora :-)

Chef ! Cualquiera puede leer recetas ¿verdad? ¡Mira hola mundo !

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. 
Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. 
Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. 
Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. 
Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. 
Pour contents of the mixing bowl into the baking dish.

Lo siento si no es una respuesta seria, pero esto es increíble. :-)

Todos los idiomas son 'legibles para humanos'. :) ¿De qué otra manera podría alguien crearlo? Dicho esto, los idiomas que admiten DSL pueden ser increíblemente intuitivos, como Boo .

Tener un lenguaje de programación leído como un lenguaje normal (detallado) sería como requerir que las personas conversen todo el tiempo en términos legales. Toda la verborrea adicional se interpone en el camino.

Un lenguaje de programación ideal debería tener una sintaxis lo más transparente posible y permitir que los conceptos detrás del programa se destaquen. Obviamente, hay un intercambio entre tener una curva de aprendizaje rápida y tener una sintaxis mínima pero oscura (piense en Perl, o incluso en K).

Al crear un conjunto de reglas, es posible realizar la programación lógica en Prolog como esta. Puede crear una gramática (o descargar una) para un dominio en particular, crear una base de conocimientos y luego consultarla. Después de definir tu gramática, podrías hacer algo como:

bob is a parent of tim.
mary is a parent of bob.

?- X is a grandparent of tim.
X = mary

?- jim is a parent of bob.
false

Veo que el el lenguaje de programación Shakespeare aún no se ha mencionado.

Estos programas están codificados para que parezcan jugadas con temblores, los caracteres individuales en la jugada son variables que pueden contener números y las diversas frases en la obra manipulan a los personajes y el número que tienen. Por ejemplo, " Diga lo que piensa " ordena a un personaje que emita su valor.

Applescript :

tell application "Finder"
 set the percent_free to ¬
 (((the free space of the startup disk) / (the capacity of the startup disk)) * 100) div 1
end tell
if the percent_free is less than 10 then
 tell application (path to frontmost application as text)
 display dialog "The startup disk has only " & the percent_free & ¬
 " percent of its capacity available." & return & return & ¬
 "Should this script continue?" with icon 1
 end tell
end if

Puedo leer C. Eso significa que es legible para humanos (porque soy un humano). Es demasiado conciso para la persona promedio. El concepto general de los lenguajes de programación es maximizar la información sobre cómo debe funcionar la computadora en una línea determinada.

Por eso Ruby es tan popular; Maximiza la funcionalidad en texto mínimo. El inglés (o cualquier otro idioma natural) es un lenguaje bastante impreciso, con poca información / carácter.

En resumen, es: (i) hecho antes y (ii) una idea más débil conocida.

Este es realmente un tema candente.

Para empezar, ¿qué es legible para humanos?

Un lector chino no puede leer ruso y viceversa. Si limita su dominio, por ejemplo, a los farmacéuticos chinos que escriben una descripción, puede diseñar un lenguaje para eso. Y eso sería legible por humanos .

Por ejemplo, el lenguaje quedaría bajo el paraguas de Idiomas específicos del dominio .

SQL

SELECT name, address FROM customers WHERE region = 'Europe'

Sí. Se llama COBOL , y la gente generalmente lo detesta.

Inform 7 es el sistema más exitoso que he visto. Tiene dos ventajas sobre los sistemas más toscos que se enumeran en otras respuestas aquí: es para un dominio particularmente apropiado para el lenguaje natural (ficción interactiva), y realiza un análisis más sofisticado del código de entrada basado en más conocimientos lingüísticos computacionales, no solo convencionales. gramática del lenguaje de programación que usa palabras en inglés en lugar de llaves, etc.

Perl, afirman algunas personas.

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";

Realice una búsqueda en Google para " programación en lenguaje natural " y encontrarás mucha información (incluyendo por qué es una mala idea).

La claridad de expresión es importante.

Pero la claridad de pensamiento es mucho, mucho más importante.

HyperTalk y su descendiente AppleScript fueron diseñados para ser similares al idioma inglés.

VB es lo más cerca que puedo pensar de una:

Si MyLife.Sucks Then MyLife.End Else MyLife.Continue

Claro, Erlang.

-module(listsort).
-export([by_length/1]).

 by_length(Lists) ->
    F = fun(A,B) when is_list(A), is_list(B) ->
            length(A) < length(B)
        end,
    qsort(Lists, F).

 qsort([], _)-> [];
 qsort([Pivot|Rest], Smaller) ->
     qsort([ X || X <- Rest, Smaller(X,Pivot)], Smaller)
     ++ [Pivot] ++
     qsort([ Y ||Y <- Rest, not(Smaller(Y, Pivot))], Smaller).

Soy un humano, es un lenguaje de programación y puedo leerlo. No sé qué significa nada de eso, pero creo que veo muchas palabras en inglés allí.

(Lengua firmemente en la mejilla)

Los DSL pueden tener un aspecto muy natural. Consulte este ejemplo creado con MGrammar :

test "Searching google for watin"
    goto "http://www.google.se"
    type "watin" into "q"
    click "btnG"
    assert that text "WatiN Home" exists
    assert that element "res" exists
end

COBOL fue pensado para que lo lean los gerentes, y tiene "quot" palabras de ruido " para hacerlo más legible.

Lo curioso es que se lee un poco como un DSL detallado.

Ser más legible para los humanos que la mayoría fue uno de los primeros puntos de venta de Ada. Me parece un argumento estúpido en estos días, ya que cualquier tarea suficientemente compleja en el lenguaje cualquier va a requerir que un practicante competente lo comprenda. Sin embargo, supera al bejeezus de los lenguajes C-sintaxis. Sus estilos de codificación dominantes también pueden mejorar este efecto. Por ejemplo, comparando bucles en una sentencia if: Ada:

if Time_To_Loop then
   for i in Some_Array loop
      Some_Array(i) := i;
   end loop;
end if;

C:

if (timeToLoop != 0) {
   for (int i=0;i<SOME_ARRAY_LENGTH;i++) {
      someArray[i] = i;
   }
}

El código C se vería aún peor si usara la notación húngara como Microsoft, pero estoy tratando de ser amable. :-)

Pregunta interesante. Su pregunta puede leerse como " ¿Hay algún lenguaje de programación que los humanos puedan leer fácilmente ? & Quot ;, O ELSE como " ¿Existe un lenguaje humano que se pueda usar para programar ? " ;. Todas las respuestas aquí se han centrado en las primeras, así que déjame intentar responder a las últimas.

¿Has oído hablar del sánscrito? Es una antigua lengua india en la que se basan las lenguas indias modernas como el hindi.

wiki / sánscrito

He escuchado durante años que es lo suficientemente preciso y completo como para usarlo como lenguaje de alto nivel en una computadora. Por supuesto, necesita un compilador para convertir las instrucciones sánscritas al lenguaje de máquina. Conozco el guión & amp; sí, es preciso (completamente fonético, así que nunca tienes que preguntar "cómo se deletrea"), pero no conozco a la gramática lo suficiente.

Esto es completamente anecdótico, así que no respondo por la exactitud de esto. Solo quería compartir lo que sé sobre esto. :-)

Estoy de acuerdo con el consenso general aquí. " legible para humanos " Los lenguajes de programación de propósito general son en su mayoría una mala idea, pero los lenguajes específicos de dominio legibles por humanos son muy valiosos.

REBOL tiene un gran sistema para crear DSL.

GradStudent

Solo tiene una declaración: " tú: escríbeme un programa para hacer x "
Es válido para todos los valores de X y tiene la ventaja de que x no tiene que definirse y puede cambiarse después de que se escribe el programa.

Hay disponible un dialecto comercial llamado interno: el costo de desarrollo es menor, pero no se garantiza que funcione

Cobol fue algo así.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top