¿Existe un lenguaje de programación legible por humanos? [cerrado]


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 una gramática así.

 51
Author: Enreeco, 2008-10-15

30 answers

COBOL se parece mucho a eso.

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.

Por extraño que parezca, a pesar de su diseño para ser legible como inglés, la mayoría de los programadores socavaron completamente esto con extrañas convenciones de nomenclatura:

SET VAR_00_MYVAR_PIC99 TO 10.
EXECUTE PROC_10_MYMETHOD with 10, VAR_00_MYVAR_PIC99.
 102
Author: James Curran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-20 12:19:49

¿Qué tal LOLCODE?

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

La simplicidad misma!

 120
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-11 15:57:01

Informar 7

Inform 7 es quizás el lenguaje que siento que está más apropiadamente diseñado en una forma de lenguaje humano. Es bastante aplicación específica para escribir juegos de aventura.

Se basa en la semántica basada en reglas, donde se escriben muchas reglas que describen la relación entre los objetos y su ubicación. Por ejemplo, la siguiente sección es un programa Inform 7:

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase."  Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman: 
    say "The salesman bores you with a discussion of life  insurance policies.  From his briefcase he pulls some paperwork which he hands to you.";
    move the insurance paperwork to the player.

Ejemplo citado de Wikipedia

 97
Author: tovare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-28 17:42:10

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

 42
Author: Chris Serra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 14:57:39

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

Ed Edsger W. Dijkstra, ¿Cómo decimos verdades que podrían doler?

 32
Author: Mauricio Scheffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-02 19:09:14

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

Por supuesto que no hizo absolutamente nada de ese tipo. Todo lo que terminamos con fue un código mal estructurado y detallado. Ambos productos todavía existen, pero tienes nunca he oído hablar de ellos, lo que prueba el callejón sin salida que era.

En realidad, en ese período parecía haber un deseo general de ir más allá de la "programación" hacia una especie de cielo inspirado por la IA del 2001. Oracle estaba muy interesado en la generación de código y recuerdo con cierto interés un producto llamado 'the last one' que se estaba comercializando a los gerentes como un producto que generaría automáticamente cualquier programa que quisiera y haría redundante a todo su personal de programación. Parece no tener a la altura de las expectativas; -)

Vale la pena recordar que SQL se comercializó originalmente en algunos sectores 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 sobre rieles - la variedad steel) donde se incluyeron tipos de gestión junior porque tenían planes de poner herramientas de consulta básicas en sus manos. Qué desastre fue.

Tal vez podría ser diferente en 50 años, pero en la etapa actual de la codificación de juego exige una cierta claridad de pensamiento y la implementación que es mejor mediada a través de una sintaxis dedicada diseñada para esos fines, no cualquier aproximación a un lenguaje natural que es poco claro y ambiguo. La aproximación más cercana es posiblemente la física donde la esencia del tema está en las matemáticas utilizadas (piense en un lenguaje de programación para la física) no verbosa wordage.

AÑADIDO

Me estaba olvidando, aparte de COBOL allí también fue PL / 1, en algún momento acreditado con permitir a la NASA para poner a un hombre en la luna era tan verboso como COBOL y trató aún más difícil de ser "Gerente legible". Es por eso que nadie ha oído hablar de él ahora tampoco: -)

 30
Author: Cruachan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-14 06:14:06

Chef! Cualquiera puede leer recetas de la derecha? He aquí 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. :-)

 18
Author: Mauricio Scheffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 00:29:06

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

 17
Author: David Freitas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-15 19:16:49

Tener un lenguaje de programación leído como un lenguaje normal (verboso), sería como requerir que la gente converse todo el tiempo en jerga legal. Toda la verborrea extra se interpone en el camino.

Un lenguaje de programación ideal debe tener una sintaxis lo más transparente posible y dejar que los conceptos detrás del programa 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 K).

 15
Author: Rob Walker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 21:04:01

Creando un conjunto de reglas, es posible hacer programación lógica en Prolog así. 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
 13
Author: b3.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 21:07:30

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

Estos programas están codificados para parecerse a las obras de shakespeare, los caracteres individuales en la obra son variables que pueden contener números y las diversas frases en la obra manipulan los caracteres y el número que contienen. Por ejemplo, "Di lo que piensas" ordena a un personaje que emita su valor.

 13
Author: Christian Vest Hansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-18 23:18:20

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
 9
Author: Bob King,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-21 22:12:14

Puedo leer C. Eso significa que es legible por humanos(porque soy humano). Es demasiado conciso para la persona promedio. El concepto general de los lenguajes de programación es maximizar la información acerca de cómo el ordenador debe operar en una línea dada.

Esta es la razón por la que Ruby es tan popular; maximiza la funcionalidad en texto mínimo. El inglés (o cualquier otro idioma natural) es un lenguaje bastante impreciso, de baja información / carácter.

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

 7
Author: Paul Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 21:29:14

Este es en realidad un tema candente.

Para empezar - ¿Qué es legible por el ser humano?

Un lector chino no puede leer ruso y viceversa. Es que estrecha su dominio por ejemplo a China farmacéuticos escribir una receta podría diseñar un lenguaje en torno a eso. Y eso seríalegible por humanos .

Como el lenguaje caería bajo el paraguas de Lenguajes Específicos de Dominio.

 7
Author: Johnno Nolan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 22:22:52

SQL

SELECT name, address FROM customers WHERE region = 'Europe'
 7
Author: Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-20 10:47:34

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

 6
Author: Kirk Strauser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:57:08

Inform 7 es el sistema más exitoso que he visto. Tiene dos ventajas sobre los sistemas más crudos enumerados en otras respuestas aquí: es para un dominio particularmente apropiado para el lenguaje natural (ficción interactiva), y hace un análisis más elegante del código de entrada basado en más conocimientos de lingüística computacional, no solo una gramática de lenguaje de programación convencional que utiliza palabras en inglés en lugar de llaves, etc.

 6
Author: Darius Bacon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-22 08:35:38

Perl, algunas personas afirman.

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";
 5
Author: Robert P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:53:16

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

 5
Author: BoltBait,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:54:57

La claridad de expresión es importante.

Pero la claridad del Pensamiento es mucho, mucho más importante.

 5
Author: SquareCog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 21:38:07

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

 5
Author: Ken Liu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-23 14:12:02

VB es lo más cercano que puedo pensar de uno:

Si MyLife.Apesta Entonces Mi Vida.Final Más MyLife.Continuar

 4
Author: Kon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:54:54

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 se lo que significa, pero creo que veo muchas palabras en inglés.

(Lengua firmemente en la mejilla.)

 4
Author: Robert S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 15:02:13

Los DSL pueden tener un aspecto muy natural. Ver 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
 4
Author: Mauricio Scheffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-13 19:03:57

COBOL fue pensado para ser leído por los gerentes, y tiene "palabras de ruido" para hacerlo más legible.

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

 3
Author: Michael Easter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:59:50

Ser más legible que la mayoría fue uno de los primeros puntos de venta de Ada. Me parece un argumento tonto en estos días, ya que cualquier tarea suficientemente compleja en cualquier lenguaje va a requerir un practicante competente para entender. Sin embargo, supera al bejeezus de los lenguajes C-syntax. Sus estilos de codificación dominantes también pueden mejorar este efecto. Por ejemplo, comparar 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 Notación húngara como Microsoft, pero estoy tratando de ser agradable. :-)

 3
Author: T.E.D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-13 19:36:19

Pregunta Interesante. Su pregunta puede leerse como " ¿Hay algún lenguaje de programación que sea fácilmente legible por los humanos?", O BIEN como " ¿Existe un lenguaje humano que pueda ser usado para programar?". Todas las respuestas aquí se han centrado en la primera, así que permítanme tratar de responder a la segunda.

¿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 estado escuchar durante años que es lo suficientemente preciso y completo para ser utilizado, como lo es, como un lenguaje de alto nivel en un ordenador. Por supuesto, necesita un compilador para convertir las instrucciones en sánscrito al lenguaje máquina. Conozco el guión y sí, es preciso (completamente fonético, así que nunca tendrás que preguntar "cómo se escribe eso"), pero no conozco el grammer lo suficientemente bien.

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

 3
Author: OceanBlue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-29 14:41:16

Estoy de acuerdo con el consenso general aquí. Los lenguajes de programación" legibles por humanos " de propósito general son en su mayoría una mala idea, pero los Lenguajes Específicos de Dominio legibles por humanos valen la pena.

REBOL tiene un gran sistema para crear DSL.

 2
Author: Gregory Higley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 02:43:23

GradStudent

Solo tiene una declaración: "me escribes un programa para hacer x"
Es válido para todos los valores de X y tiene la ventaja de que x no tiene que ser definido y puede ser cambiado después de que el programa es escrito.

Un dialecto comercial está disponible llamado intern: el costo de desarrollo es menor, pero no se garantiza que funcione

 2
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-20 02:46:15

Cobol era algo así.

 1
Author: mike511,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-14 20:55:31