Pergunta

Quer dizer, há uma linguagem codificada com estilo humano codificação? Por exemplo:

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

Eu sei que não é tão útil, mas pode ser interessante para criar tal gramática.

Foi útil?

Solução

COBOL é muito parecido com isso.

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

Outra amostra da Wikipedia:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

Curiosamente, porém, apesar de seu projeto para ser lido como Inglês, a maioria dos programadores minou completamente esta com convenções de nomenclatura bizarros:

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

Outras dicas

Como sobre LOLCODE ?

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

si Simplicidade!

Informar 7

Informe 7 é talvez a sensação língua que é mais apropriadamente projetado de forma a linguagem humana. É de aplicação específica bastante para escrever jogos de aventura.

É baseado em semântica baseados em regras, onde você escrever um monte de regras que descrevem a relação entre objetos e sua localização. Por exemplo, a seção abaixo é um programa Informe 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.

exemplo citado da Wikipedia

AppleScript é muito parecido com que, no entanto, que é, obviamente, dependente de plataforma.

Aqui está um script para abrir o iTunes e jogar uma lista de reprodução

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

Fonte: AppleScript Exemplos

Projetos promovendo programação em "Linguagem natural" são intrinsecamente fadado ao fracasso.

- Edsger W.Dijkstra, Como podemos dizer verdades que pode machucar?

Esta foi "a próxima grande coisa" em torno sobre o início de 1980 e eu passei muito do meu primeiro par de anos como aa codificador trabalhando em "natural", que era o supostamente o melhor da nova safra de 4GLs (quarta geração línguas) que foram projetados para tornar o acesso de dados (neste caso, para um banco de dados ADABAS) legível.

Claro que não fez absolutamente nada do tipo. Tudo o que acabamos com foi detalhado mal estruturado código. Ambos os produtos ainda estão por aí, mas você nunca ouviu falar deles, que tipo de prova a que é um beco sem saída que era.

Na verdade, naquela época, parecia haver um desejo geral de ir além de 'programação' em algum tipo de 2,001 inspirado AI céu. A Oracle foram realmente interessado em geração de código e lembro-me com algum interesse um produto chamado 'o último' que estava sendo comercializado para os gestores como um produto que iria gerar automaticamente qualquer programa que você queria e fazer toda a sua equipe de programação redundante. não parece ter correspondido às expectativas; -)

Vale a pena lembrar para que o SQL foi originalmente comercializado em alguns setores, como forma de permitir a gestão de consultar directamente os seus dados. I foi mesmo enviado em um curso para aprender SQL básico (em uma grande organização nacional de transporte que corria sobre trilhos - a variedade de aço), onde tipos de gestão júnior foram incluídos porque eles tinham planos para colocar ferramentas básicas de consulta em suas mãos. O que um desastre que era.

Talvez ele pode ser diferente em 50 anos, mas no atual estágio de jogo de codificação exige uma certa clareza de pensamento e de implementação que é melhor mediada através de uma sintaxe dedicado projetado para esses fins, e não qualquer aproximação a uma linguagem natural, que é obscura e ambígua. A aproximação mais próxima é possivelmente física, onde a essência do assunto é na matemática utilizados (acho que uma linguagem de programação para a física) não detalhado wordage.

ADICIONADO

Eu estava esquecendo, além de COBOL também houve PL / 1, em algum momento creditado com permitindo NASA para colocar um homem na Lua era apenas tão longos quanto COBOL e tentou ainda mais difícil de ser 'Gestor de leitura'. É por isso que ninguém tem realmente ouvido falar dele agora, quer: -)

Chef ! Qualquer um pode ler receitas certo? Eis Olá 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.

Desculpe se não é uma resposta séria, mas esta é maneira impressionante. : -)

Todas as línguas são 'legível'. :) De que outra forma alguém ser capaz de criá-la? Dito isto, as línguas que DSLs de apoio pode ser incrivelmente intuitiva, como Boo .

Ter uma linguagem de programação ler como um (detalhado) linguagem normal, seria como exigir que as pessoas conversam o tempo todo em juridiquês. Tudo o palavreado extra só fica no caminho.

Uma linguagem de programação ideal deve ter sintaxe que é o mais transparente possível e deixar que os conceitos por trás do programa se destacam. Obviamente, há um trade-off entre ter uma curva de aprendizagem rápida e ter sintaxe mínima, mas obscura (pense Perl, ou mesmo K).

Ao criar um conjunto de regras, é possível fazer a programação lógica na Prolog como isto. Você pode construir uma gramática (ou baixar um) para um domínio particular, criar uma base de conhecimento e depois consultá-lo. Depois de definir a sua gramática que você poderia fazer 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

Eu vejo a Shakespeare ainda têm de ser mencionado.

Estes programas são codificados para se parecer com peças Shakespear, os personagens individial no jogo sendo variáveis ??que podem armazenar números e as várias frases no jogo manipular os personagens e o número que possuem. Por exemplo, "fale sua mente" ordens de um personagem para a saída de seu 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

Eu posso ler C. Isso significa que é legível (porque eu sou um ser humano). É muito concisa para a pessoa média. O conceito geral de linguagens de programação é maximizar as informações sobre a forma como o computador deve operar em uma determinada linha.

É por isso que Ruby é tão popular; maximiza a funcionalidade no texto mínimo. Inglês (ou qualquer outra outra língua natural) é um muito imprecisa, baixa informação / idioma personagem.

Em suma, é: (i) feito antes e (ii) uma idéia conhecida mais fraca.

Este é realmente um tema quente.

Para começar - o que é humano legível

?

Um chinês-leitor não pode ler russo e vice-versa. É você restringir seu domínio por exemplo, para os farmacêuticos chineses que escreve um perscription você poderia projetar uma linguagem em torno disso. E isso seria legível .

Tal como linguagem cairia sob um guarda-chuva de domínio específico Línguas .

SQL

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

Sim. É chamado COBOL , e as pessoas geralmente detestam-lo.

Inform 7 é o mais bem sucedido sistema desse tipo que já vi. Ele tem duas vantagens sobre os sistemas mais cruas listados em outras respostas aqui: é para um domínio particularmente apropriado para a linguagem natural (ficção interativa), e faz uma análise mais extravagante do código de entrada com base em mais computacionais-lingüística Lore, não apenas um convencional gramática da linguagem de programação que acontece de usar palavras em inglês em vez de chaves, etc.

Perl, algumas pessoas afirmam.

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

Faça uma busca no Google por "programação de linguagem natural" e você vai encontrar muita informação (incluindo por que isso é uma má idéia).

clareza de expressão é importante.

Mas a clareza de pensamento é muito, muito mais importante.

HyperTalk e seu descendente AppleScript foram projetados para ser semelhante ao idioma Inglês.

VB é o mais perto que eu posso pensar em um:

Se MyLife.Sucks Então 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).

Eu sou um ser humano, é uma linguagem de programação, e eu posso lê-lo. Eu não sei o que nada disso significa, mas eu vejo um monte de palavras inglesas lá, eu acho.

(língua firmemente na bochecha.)

DSLs podem ser muito com aparência natural. Consulte este exemplo criado com 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 foi concebido para ser lido pelos gestores, e tem "palavras de ruído" para fazer -lo mais legível.

O engraçado é que ele lê um pouco como um DSL detalhado.

Sendo mais legível do que a maioria foi um dos pontos de venda iniciais de Ada. Acho que é um argumento tolo estes dias, como qualquer tarefa sufficently complexo no qualquer Idioma vai exigir um praticante competente para entender. No entanto, ele bater as bejeezus fora das linguagens C-sintaxe. Seus estilos de codificação dominantes pode melhorar este efeito também. Por exemplo, comparando laços em uma instrução 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;
   }
}

O código C ficaria ainda pior se eu usasse notação húngara como a Microsoft, mas eu estou tentando ser legal. : -)

É uma pergunta interessante. Sua pergunta pode ser lido como " Existe alguma linguagem de programação que é facilmente legível por seres humanos ?", Ou então como " Existe uma linguagem humana que pode ser usado para a programação ?". Todas as respostas aqui têm-se centrado sobre o ex, então deixe-me tentar responder a esta última.

Você já ouviu falar do sânscrito? É uma língua indiana antiga em que as modernas línguas indianas como Hindi são baseados.

wiki / sânscrito

Eu tenho ouvido há anos que é suficiente preciso e completo a ser utilizado, como ele é, como uma linguagem de alto nível em um computador. Claro, você precisa de um compilador para converter instruções sânscrito para linguagem de máquina. Eu sei o script e sim, é preciso (inteiramente fonética, assim você nunca tem que perguntar "como se escreve isso"), mas eu não sei a gramática bem o suficiente.

Esta é anedótica completeley, então eu não garante a correcção desta. Só queria compartilhar o que eu sei sobre isso. : -)

Eu concordo com o consenso geral aqui. "Legíveis a olho nu" uso geral linguagens de programação são principalmente uma má idéia, mas humanos legíveis Domain Specific Languages ??são muito vale a pena.

REBOL tem um ótimo sistema para a criação de DSLs.

GradStudent

Ele tem apenas uma declaração: "você - escreva-me um programa para fazer x"
É válido para todos os valores de X e tem a vantagem de que x não tem de ser definida e pode ser alterado depois que o programa é escrito.

Um dialeto comercial está disponível chamado estagiário: custo de desenvolvimento é menor, mas não é garantido que funcione

Cobol era como isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top