Frage

Ich meine, gibt es eine codierte Sprache, die mit der menschlichen Stil Programmieren?Zum Beispiel:

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

Ich weiß, es ist nicht so nützlich, aber es kann interessant sein, zu schaffen, wie eine Grammatik.

War es hilfreich?

Lösung

COBOL ist viel wie das.

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

Eine andere Probe von Wikipedia:

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

Seltsamer aber trotz seiner Gestaltung als Englisch, die meisten Programmierer völlig untergraben diese mit bizarren Namenskonventionen lesbar zu sein:

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

Andere Tipps

Wie wäre es LOLCODE ?

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

Einfachheit selbst!

Inform 7

Inform 7 ist vielleicht die Sprache, die ich fühle mich ist am zweckmäßigsten in einer menschlichen Sprache Art und Weise gestaltet. Es ist durchaus anwendungsspezifische Abenteuerspiele für das Schreiben.

Es basiert auf regelbasierte Semantik, wo Sie eine Menge von Regeln, die beschreiben, die die Beziehung zwischen Objekten und ihrem Standort zu schreiben. Zum Beispiel ist der Abschnitt weiter unten ein Inform 7-Programm:

"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.

Beispiel zitiert aus Wikipedia

Applescript ist ziemlich nahe, dass, obwohl das offensichtlich Plattform abhängig ist.

Hier ist ein Skript für iTunes öffnen und eine Wiedergabeliste

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

Quelle: Apple Beispiele

  

Projekte zur Förderung der Programmierung in   „Natürliche Sprache“ intrinsisch   zum Scheitern verurteilt.

- Edsger W.Dijkstra, Wie sagen wir Wahrheiten, könnte weh tun?

Das war „das nächste große Ding“ um etwa Anfang der 1980er Jahre, und ich verbrachte viel meiner ersten paar Jahre als aa Coder in „natürlichen“ arbeiten, die die angeblich das Beste aus der neuen Ernte von 4GLs (vierter Generation war Sprachen), die (in diesem Fall zu einer Adabas-Datenbank) für Menschen lesbares wurden entwickelt, um den Datenzugriff zu machen.

Natürlich ist es tut absolut nichts von der Art. Alle beendeten wir mit ausführlichen wurde schlecht strukturierte Code auf. Beide Produkte sind immer noch rund, aber Sie haben noch nie davon gehört, welche Art beweist das, was eine Sackgasse war.

Eigentlich gab in dieser Zeit erschien einen allgemeinen Wunsch, über ‚Programmierung‘ in eine Art von 2001 inspiriert AI Himmel zu bewegen. Oracle war auf Codegenerierung gerade sehr daran interessiert und ich erinnere mich mit einigem Interesse eines ‚den letzten‘ genannt Produkt, das als Produkt Manager vermarktet wurde, dass jedes Programm automatisch generieren würden Sie wollten, und machen Sie alle Ihre Programmierung Personal überflüssig. Scheint nicht die Erwartungen erfüllt zu haben; -)

Es lohnt sich zu diesem SQL erinnert wurde ursprünglich in einigen Kreisen als eine Möglichkeit, vermarktet Management direkt zu ermöglichen, ihre Daten abzufragen. Ich war auch auf einem Kurs geschickt grundlegende SQL zu lernen (in einer großen nationalen Transportorganisation, die auf Schienen lief - die Stahlsorte), wo Junior-Management-Typen enthalten waren, weil sie Pläne hatten in ihren Händen grundlegende Abfrage-Tools zu setzen. Was für eine Katastrophe, die war.

Vielleicht in 50 Jahren könnte es anders sein, aber in der derzeitigen Phase des Spiel Codierung verlangt eine gewisse Klarheit des Denkens und die Umsetzung, die am besten über eine spezielle Syntax für diese Zwecke entworfen vermittelt wird, nicht jede Annäherung an eine natürliche Sprache, die ist unklar und mehrdeutig. Die nächste Annäherung ist möglicherweise Physik, wo das Wesen des Subjekts in der Mathematik verwendet (man denke an eine Programmiersprache für Physik) nicht ausführliche wordage.

ADDED

Ich war zu vergessen, abgesehen von COBOL gibt es auch PL / 1, einmal gutgeschrieben so dass die NASA einen Mann auf dem Mond bringen als COBOL nur so ausführlich war und versuchte, noch härter ‚Manager-lesbare‘ zu sein. Welches ist, warum hat niemand wirklich davon gehört nun entweder: -)

Chef ! Jeder kann Rezept richtig gelesen? Siehe, Hallo Welt !

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.

Sorry, wenn es nicht eine ernsthafte Antwort ist, aber dies ist Art und Weise genial. : -)

Alle Sprachen sind ‚Menschen lesbare‘. :) Wie sonst würde jemand in der Lage sein, es zu schaffen? Aber sagen, dass Sprachen, die DSLs unterstützen kann unglaublich intuitiv wie Boo .

eine Programmiersprache lesen sich wie eine (ausführliche) normale Sprache zu haben, wäre wie Menschen erfordern die ganze Zeit in Juristensprache zu unterhalten. Alle zusätzlichen verbiage bekommt nur im Weg.

Eine ideale Programmiersprache soll Syntax haben, die so transparent wie möglich ist, und lassen Sie die Konzepte hinter dem Programm abheben. Offensichtlich gibt es einen Kompromiss zwischen einer schnellen Lernkurve und eine minimale, aber obskure Syntax (man denke Perl oder sogar K).

eine Reihe von Regeln Durch die Schaffung ist es möglich, Logikprogrammierung in Prolog zu tun, wie diese. Sie können eine Grammatik (oder laden Sie ein) für eine bestimmte Domäne bauen, eine Wissensbasis erstellen und abfragen es dann. Nachdem Sie Ihre Grammatik definieren könnte man so etwas tun:

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

Ich sehe den Shakespeare Programmiersprache Noch erwähnt werden.

Diese Programme codieren wie Shakespeare Stücke zu sehen, die individial Zeichen in den Spielvariablen zu sein, die Zahlen und die verschiedenen Sätze im Spiel die Zeichen manipulieren und die Nummer, die sie halten, halten kann. Zum Beispiel: „Sprechen Sie Ihren Verstand“ befiehlt ein Zeichen ausgegeben seinen Wert.

Apple :

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

Ich kann C. lesen Das heißt, es den Menschen lesbaren ist (weil ich ein Mensch bin). Es ist einfach zu knapp für die durchschnittliche Person. Das allgemeine Konzept der Programmiersprachen ist es, die Informationen zu maximieren, wie der Computer in einer bestimmten Zeile arbeiten soll.

Aus diesem Grunde Rubin so beliebt ist; es maximiert die Funktionalität in minimalem Text. Englisch (oder jede andere andere natürliche Sprache) ist eine ziemlich ungenau, Low-Information / Zeichensprache.

In der Summe ist es: (i) vorher getan und (ii) eine bekannte schwächer Idee.

Dies ist tatsächlich ein heiß diskutiertes Thema.

Für den Anfang - Was ist der Mensch lesbar?

Ein Chinesisch-reader kann nicht gelesen werden russische und Umgekehrt.Es Grenzen Sie Ihre domain zum Beispiel der chinesischen Apotheker schreiben Sie eine perscription Sie könnte design eine Sprache herum.Und das wäre human readable.

Wie Sprache fallen unter dem Dach von Domain Specific Languages.

SQL

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

Ja. Es COBOL genannt, und die Menschen im Allgemeinen verabscheuen es.

Inform 7 das erfolgreichste solchen System, das ich je gesehen habe. Es hat zwei Vorteile gegenüber den gröberen Systemen in anderen Antworten hier aufgeführt: es für eine Domain ist besonders geeignet für natürliche Sprache (interactive fiction), und es hat eine schickere Analyse der Codeeingabe auf mehr Rechenlinguistik lore basiert, nicht nur ein herkömmliches programmiersprachen Grammatik, die englischen Worte statt Klammern zu verwenden, geschieht, etc.

Perl, einige Leute behaupten.

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

Führen Sie eine Google-Suche nach „natürlicher Sprache Programmierung“ und Sie werden viele wichtige Informationen (einschließlich, warum dies eine schlechte Idee ist).

Klarheit des Ausdrucks ist wichtig.

Aber Klarheit des Denkens ist viel, viel wichtiger.

Hypertalk und sein Nachkomme Apple entworfen wurden, ähnlich der englischen Sprache zu sein.

VB ist so nah wie ich eines denken kann:

Wenn MyLife.Sucks Dann MyLife.End Else MyLife.Continue

Sicher, 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).

Ich bin ein Mensch, es ist eine Programmiersprache, und ich kann es lesen. Ich weiß nicht, was irgendetwas davon bedeutet, aber ich sehe eine Menge von englischen Wörtern in dort, glaube ich.

(Zunge fest in die Wange.)

DSLs kann sehr natürlich aussehende sein. Siehe dieses Beispiel mit = "http://msdn.microsoft.com/en-us/library/dd129869.aspx" rel = "nofollow noreferrer"> 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 gedacht wurde von den Managern zu lesen, und hat „Füllwörter“ zu machen es besser lesbar.

Das Komische ist, ist es ein bisschen wie eine ausführliche DSL liest.

Als mehr Menschen lesbare als die meisten war einer der ersten Verkaufsstellen von Ada. Ich finde es ein dummes Argument in diesen Tagen, wie jede sufficently komplexe Aufgabe in jeder Sprache einen kompetenten Behandler erfordern wird, zu verstehen. Allerdings ist es die bejeezus aus C-Syntax Sprachen schlagen. Seine dominante Codierung Stile können diesen Effekt verstärken. Zum Beispiel vergleichen Schleifen in einer if-Anweisung: 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;
   }
}

Der C-Code aussehen würde, noch schlimmer, wenn ich ungarische Notation wie Microsoft verwendet, aber ich versuche, nett zu sein. : -)

Interessante Frage. Ihre Frage kann gelesen werden als „ Gibt es eine Programmiersprache, die durch die Menschen leicht lesbar ist ?“ Oder auch als „ Gibt es eine menschliche Sprache, die für die Programmierung verwendet werden kann, ?“. Alle hier Antworten werden auf dem ehemaligen konzentriert, so lassen Sie mich versuchen, die letztere zu beantworten.

Haben Sie schon von Sanskrit gehört? Es ist eine alte indische Sprache, auf dem modernen indischen Sprachen wie Hindi basieren.

wiki / Sanskrit

Ich habe seit Jahren gehört, dass es präzise und vollständig genug ist, um verwendet zu werden, wie es ist, als Hochsprache auf einem Computer. Natürlich steht, benötigen Sie einen Compiler Sanskrit Anweisungen in Maschinensprache zu konvertieren. Ich weiß, dass das Skript & ja, es ist präzise (ganz Laut so müssen Sie sich niemals fragen: „Wie schreibt man das“), aber ich weiß nicht, die grammer gut genug.

Das ist ganz herunter anekdotisch, so dass ich nicht für die Richtigkeit dieser bürgen. Ich wollte nur teilen, was erkennen ich, in Bezug auf. : -)

Ich Stimme der Allgemeine Konsens hier."Human-readable" general purpose Programmiersprachen sind meist eine schlechte Idee, aber Menschen lesbaren Domain-Spezifische Sprachen sind sehr lohnenswert.

REBOL ist eine große system für die Erstellung von DSLs.

GradStudent

Es hat nur eine Anweisung: "Sie - schreiben Sie mir ein Programm zu tun x"
Es ist gültig für alle Werte von X und hat den Vorteil, dass x nicht definiert werden muss und kann geändert werden, nachdem das Programm geschrieben wird.

Ein kommerzieller Dialekt wird intern verfügbar genannt: Entwicklungskosten sind niedriger, aber es wird nicht funktionieren

garantiert

Cobol war Art ähnlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top