Programmiersprachen, Positionssprachen und natürliche Sprachen

8

Einige Programmiersprachen sind dem Maschinencode nachempfunden, z. B. Assemblersprachen. Andere Sprachen basieren auf einer natürlichen Sprache, der englischen Sprache. Andere sind weder dem Maschinencode noch der natürlichen Sprache nachempfunden. Sprachen wie beispielsweise PROLOG folgen keinem der beiden Modelle.

Ich bin auf dieses Perl-Modul Lingua :: Romana :: Perligata gestoßen , mit dem Programme mit einer Syntax geschrieben werden können, die der lateinischen sehr ähnlich ist.

Gibt es Programmiersprachen mit weniger Positionssyntax?

Gibt es andere Sprachen oder Module, mit denen Sie in Syntaxen schreiben können, die von anderen natürlichen Sprachen wie Französisch, Hebräisch oder Persisch inspiriert sind? Es gibt eine sehr lange Liste auf Wikipedia , aber die meisten dieser Projekte sind tot.

Es gibt eine verwandte Frage zu StackOverflow . Die Antwort, die akzeptiert wurde, lautet "Google verwenden".

Виталий Олегович
quelle
1
Nicht vollständig verwandt, aber viele der Antworten beziehen sich auf Sprachen, die Syntaxänderungen unterstützen, und sind daher möglicherweise genau das, wonach Sie suchen: http://programmers.stackexchange.com/questions/145751/has-whitespace-in-identifiers-ever -been-idiomatisch
Telastyn
2
Einige Programmiersprachen sind weder dem Maschinencode noch der natürlichen Sprache nachempfunden. Sprachen wie PROLOG zum Beispiel folgen keinem Modell ...
Andres F.
Sie sollten auch Programmiersprachen beachten, die hauptsächlich von Mathematik inspiriert sind. Zumindest in der PL-Forschung sind diese ziemlich häufig.
Tikhon Jelvis
@TikhonJelvis meinst du, dass es für eine Programmiersprache wichtiger ist, mathematische Strukturen und Konzepte auszudrücken, als natürlichen Sprachen ähnlich zu sein?
Виталий Олегович
Art von. Insbesondere denke ich an Sprachen, in denen Sie Berechnungen hauptsächlich mit mathematischen Ideen darstellen. Meist funktionale Programmiersprachen wie Haskell. Es drückt also nicht nur mathematische Konzepte aus, sondern verwendet sie tatsächlich für alles wie die Darstellung von Zustand und E / A. Es ist auch näher an der mathematischen Notation als eine natürliche Sprache.
Tikhon Jelvis

Antworten:

2

Die einzige derzeit verwendete geschriebene Programmiersprache, die ich mir vorstellen kann, ist HTML. Abhängig von Ihrer Definition der Programmiersprache kann dies nun zählen oder auch nicht.

Um zu verstehen, warum es nicht viele häufig verwendete Programmiersprachen mit weniger Positionssyntax gibt, müssen Sie verstehen, wie die meisten Programmiersprachen entworfen sind. Die meisten Programmiersprachen basieren auf eindeutigen Grammatiken, hauptsächlich unter Verwendung von LL- und LR-Grammatiken. Um die Grammatik eindeutig zu halten, basiert der größte Teil der Technologie auf der Reihenfolge der Symbole und Wörter, z. B. Terminals, um die Eingabe eindeutig zu machen. Was Sie suchen, sind Sprachen, die ihre Position aufgeben, um die Grammatik eindeutig zu machen. Wenn die Compiler die Position nicht verwenden können, um zu entscheiden, ob die Grammatik eindeutig ist, benötigt der Compiler einige andere Hinweise, um die Grammatik eindeutig zu machen, also Präfixe wie #,%, 'und ". Eine andere Technik besteht darin, jedem Wert Schlüsselwörter zuzuordnen, d. H. width = 10, genau das macht HTML.

Deklarative Sprachen wie PROLOG und SQL sind mir im Allgemeinen am nächsten, erfordern jedoch die Verwendung einiger Positionswerte.

Die einzigen anderen Sprachen, die mir in den Sinn kommen, sind gesprochene Sprachen in KI-Systemen, die die Eingabe verarbeiten, wie z. B. Watson. Betrachten Sie dies jedoch erneut als Programmiersprache. Wenn Sie SQL als Programmiersprache betrachten, warum dann nicht eine verbale Abfrage für Watson?

Guy Coder
quelle
Vielen Dank für die tolle Erklärung! Ich denke, auf diese Weise muss die HTML-Sprache eine große Anzahl von Schlüsselwörtern haben. Ich denke, dass regelmäßige Expeditionen auf Token verwendet werden könnten, um den Typ eines Tokens zu bestimmen. Das würde den Compiler natürlich viel langsamer machen.
Виталий Олегович
Durch die Erweiterung könnte auch XML in Betracht gezogen werden.
Alfa64
3
Könnte Forth in Betracht ziehen, das nicht viel Grammatik hat.
Gort the Robot
1
AFAIK HTML ist keine Programmiersprache.
JCora
3
HTML ist eine Auszeichnungssprache . Dafür steht das M , es ist keine Programmiersprache, weil es nicht vollständig ist! XML ist definitiv auch keine Programmiersprache. Sie sind Datencodierungsformate ! Dies ist wie zu sagen, dass ein JPEG eine Programmiersprache ist!
2

In Oracle Policy Automation sind Geschäftsregeln in natürlicher Sprache codiert. Es ist einen Blick wert.

Ein Beispiel ist:

Human Resources Policy 100 – Maternity Leave 

100.1. The employee is eligible for maternity leave if

a. The employee is female and
b. Either
 i. The employee has given birth to a natural child or
 ii. The employee has taken legal custody of an adopted child
 and
c. The employee is a full time employee and
d. The employee has been employed for at least 12 months continuously

Die ursprüngliche Quelle des Beispiels.

Die offizielle Oracle-Dokumentation finden Sie hier .

Paul Fowler
quelle