5

Viele Programmiersprachen haben generische und sogar ziemlich universelle Funktionen. Wenn Sie beispielsweise Java, VB6, .NET, PHP und Python verglichen haben, würden Sie allgemeine Funktionen wie Kontrollstrukturen, numerische und Zeichenfolgenmanipulation etc. finden.Gibt es ein universelles Modell für Sprachen?

Was wurde getan, um diese Funktionen in einem Meta zu definieren Sprachniveau (oder sprachunabhängig)?

UML bietet eine beschreibende Referenz der Software in jeder Hinsicht, aber der reale Fokus scheinen Datenprozesse zu sein. Ist UML relevant?

Ich frage nicht "Warum haben wir keine einzige Sprache, die die aktuelle Fülle ersetzt." Wir brauchen viele verschiedene Werkzeuge (zumindest in diesem eon).

Ich frage nicht, dass alle Sprachen eine Vorlage passen - Assemblierung versus kompilierte Sprachen sind unterschiedlich genug, um das undurchführbar zu machen (und manche Leute nennen HTML eine Sprache, obwohl ich das nicht würde). Jeder Versuch würde mit einem angemessen engen Umfang beginnen. In Übereinstimmung damit würde ich nicht erwarten, dass das Modell auch nur eine kleine Auswahl mit voller Gültigkeit abdecken würde.

ich aber erwarten, dass ein solches Modell verwendet werden könnte, von einer Sprache in eine andere zu übertragen (mit begrenzter Ziele - man denke jist Übersetzung).

+0

UML ist kein "universelles Modell für Sprachen", es ist eine "universelle Programmiersprache". Es ist immer noch Sache des Entwicklers, die Modelle zu einem Programm zu machen (oder auszufüllen, wenn das UML-Tool Code generiert). –

Antwort

3

Was Sie beschreiben, klingt wie die formal semantics of programming languages. Es gibt eine Vielzahl von Ansätzen und jeder wird eine Möglichkeit bieten, die Bedeutung eines Programms in einer Programmiersprache formal zu spezifizieren.In einigen Fällen ist diese Spezifikation im Wesentlichen eine Übersetzung in eine andere Sprache wie Lambda-Kalkül oder Kompilierung für eine formal spezifizierte abstrakte Maschine wie SECD.

Es gibt so viel Arbeit hier ist es schwer, eine bestimmte Referenz zu wählen. Aber ich hoffe, ich habe Ihnen einige nützliche Schlüsselwörter gegeben, um Ihre Suche fortzusetzen.

+0

Das sieht nach dem besten aus 7 Antworten aus. Und entmutigend wie die meisten anderen - gewaltige Auswirkungen in meinem Scan des verlinkten Artikels. – Smandoli

+0

Ich habe this Buch zu Hause sitzen. Es ist alt und ein wenig veraltet, aber es scheint ein bisschen weniger beängstigend als die Papiere da draußen. Es arbeitet mit spezifischen Beispielen von Sprachen im Detail. Zum Beispiel eine vollständige Übersetzung einer (Teilmenge von) Prolog in Algol-68, die veranschaulicht, wie Algol-68 als eine universelle Sprache verwendet werden kann, um irgendeine andere darzustellen. – sigfpe

0

UML wird normalerweise verwendet, um Algorithmen/Code in einfacheren Begriffen zu definieren, bevor mit echtem Code fortgefahren wird.

Um zu beantworten, was ich vermute, um Ihre Frage zu sein, gibt es bereits eine definierte Menge von erforderlichen Teilen von Sprachen während, für, wenn, sonst ... Wird dies jemals als Standard festgelegt, oder in eine Basis Bibliothek, die von allen Sprachen verwendet wird: Nein, das liegt daran, dass die verschiedenen Entwickler von Sprachen es gerne selbst machen.

+0

"Es gibt bereits einen definierten Satz erforderlicher Teile" - Ich nehme an, ich suche nach mehr Informationen über dieses Bit. – Smandoli

+0

Um von Romain Hippeaus Antwort über die Vollständigkeit der Turing-Theorie zu sprechen, wäre es am primitivsten, wir brauchen die Zuordnung von if, goto und memory. Erweiterte Funktionen wie Funktionen, Loops und Datentypen werden aus diesen drei grundlegenden Ideen abgeleitet. – aepheus

4

Es gab viele Versuche, aber keine waren sehr erfolgreich. Das früheste, das ich kenne, ist UNCOL vor mehr als 50 Jahren.

Sie haben eine Liste von Sprachen angegeben, die viel gemeinsam haben, weil sie sich ziemlich ähneln - sie sind alle prozeduralen Sprachen mit gemeinsamen Wurzeln und einigen OO-Erweiterungen, was nicht allzu überraschend ist. Wenn Sie verschiedene Sprachen wie LISP, Haskell, Erlang, Prolog oder sogar SQL betrachten, sehen Sie sehr unterschiedliche Dinge.

+0

Ich hätte gerne diese große Perspektive. Ich bin froh, mehr darüber zu erfahren, wie klein meine ist. Was SQL betrifft, so ist es ein weiteres Beispiel dafür, wie der Begriff "Sprache" unzulänglich oder mehrdeutig ist (zumindest so, wie er von mir benutzt wird). Ich brauche ein reichhaltigeres Vokabular. – Smandoli

+0

Danke für die UNCOL-Referenz. Es ist eher ein Versuch der universellen Lösung als eines Modells .. Wikipedia: "UNCOL war eine ehrgeizige Anstrengung für die frühen 1960er Jahre. Ein Versuch, das Compiler-Schreibproblem zu lösen, scheiterte letztlich daran, dass Sprache und Compiler-Technologie noch nicht ausgereift waren. "Also ... was hat sich geändert, wirklich? Wenn es mehr Reife gibt, hat dies nicht zu weniger Vielfalt geführt. – Smandoli

0

ich glaube, die nächste Sie dies ohne Beschränkung der Allgemeinheit erhalten können, ist eine Turing-Maschine, die nicht sehr nützlich für praktische Zwecke ist. Wenn Sie jedoch zulassen, dass Turing-Maschinensprachen "etikettiert" und wiederverwendet werden, können Sie die Konzepte, die Sie benötigen, auf niedriger bis hoher Ebene aufbauen.

+0

Das muss jemand Abschlussarbeit sein, nicht wahr? – Smandoli

+1

@Smandoli, es ist wahrscheinlich eine * Menge * von Absolventen Abschlussarbeiten! – tloflin

+1

Nun, solange das Ergebnis etwas ist, das ein anständiges Spiel spielen kann. – Smandoli

0

Ich denke, dass MOF die universelle Sprache ist. Sie können zum Beispiel UML-Diagramme aus MOF über ein UML-Metamodell erstellen. Wenn Sie diese Metamodellinformationen in xmi speichern, können Sie die Informationen speichern, die Sie benötigen, und sogar mehr als in jeder anderen Sprache. Die XMI-Semantik ist so reich, dass ihrer Verwendung keine Grenzen gesetzt sind. Wenn Sie UML zu xmi oben auf einem Metamodell zuordnen und mit MOF synchronisieren, ist dies für mich die universelle Sprache.

0

Der Autor von Pattern Calculus scheint ein solches universelles Modell vorzuschlagen. Ich erwarte, dass es sich als ebenso nützlich erweisen wird wie frühere Versuche, ein universelles Modell zu definieren, das heißt gut in Teilen, aber nicht das letzte Wort.

Verwandte Themen