Bisher kenne ich die wichtigsten Unterschiede zwischen diesen drei nicht. Wenn mich jemand danach fragt, sage ich ihm nur, dass C # eine Programmiersprache ist, HTML und XML Auszeichnungssprachen sind und JavaScript und VBScript Skriptsprachen sind. Aber was sind die Hauptunterschiede, die sie voneinander unterscheiden?
38
Antworten:
Lassen Sie mich versuchen, eine Trennlinie zwischen diesen drei Arten von Sprache zu finden. Natürlich wird es zahlreiche Ausnahmen und Gegenbeispiele geben, da dies nur meine Meinung ist.
Eine Auszeichnungssprache wird verwendet, um die Darstellung von Daten zu steuern , z. B. "Diese Benutzernamen als Aufzählungszeichen oder als Tabelle darstellen".
Eine Skriptsprache wird verwendet, um zwischen Programmen zu vermitteln , um Daten zu generieren. Dies gilt insbesondere für Shell-Skriptsprachen wie Bash, aber wenn Sie darüber nachdenken, kam auch Python oder Perl von der Notwendigkeit, Aufgaben unter UNIX auszuführen, ohne ein Programm in C zu schreiben. Das Programm, das Sie die meiste Zeit in diesen Sprachen steuern ist der Dolmetscher der Sprache selbst , der allgemeine Aufgaben für Sie erledigt. Andere typische Programme, mit denen Sie interagieren, sind Datenbankserver oder Webserver.
Kehren Sie zur Benutzerlisten-Metapher zurück und fragen Sie in einer Skriptsprache die Datenbank nach "Gib mir alle Benutzernamen" und dann den Webserver nach "Sende diese Benutzerliste an diesen Anforderer".
Eine Programmiersprache wird zum Transformieren von Daten verwendet . Dazu werden CPU-Anweisungen erstellt, mit denen die Eingabedaten in die Ausgabe geschrieben werden. hoffentlich die gewünschte Ausgabe. Beispiele für das Transformieren von Daten sind das Berechnen einer Summe aus einer Anzahl von Addenden oder das Lösen eines Differentialgleichungssystems aus einer Reihe von Bedingungen oder das konsistente Schreiben und Lesen aus einer baumartigen Struktur bei einer Folge von möglicherweise gleichzeitigen Abfragen .
Wenn Sie zur Benutzerlisten-Metapher zurückkehren, schreiben Sie in einer Programmiersprache, wie Sie eine Datensatztabelle durchlaufen, aus jedem Datensatz das Feld "Name" extrahieren und alle an den Anforderer zurückgeben.
Beachten Sie, dass Skriptsprachen eine Untergruppe von Programmiersprachen sind, dh eine Sprache kann sowohl "Skriptsprache" als auch "Programmiersprache" sein: Python wird regelmäßig zum "Vermitteln zwischen Programmen" und auch zum "Transformieren von Daten" verwendet. Es gibt andere Sprachen wie Java, die selten verwendet werden, um "zwischen Programmen zu vermitteln", nicht weil dies unmöglich ist, sondern weil sie nicht dafür ausgelegt sind, dies zu vereinfachen. Das Hauptmerkmal einer Skriptsprache ist, dass sie andere Programme orchestrieren kann, genau wie ein Skript einem Schauspieler den Anstoß gibt, seinen Teil zu beginnen.
quelle
Eine Auszeichnungssprache ist eine Sprache, die zur Darstellung strukturierter Daten verwendet wird. Mit HTML kann beispielsweise angegeben werden, dass ein Teil des Dokuments ein Titel oder ein anderer Teil eine Liste ist, verglichen mit einem flachen Textdokument.
Auszeichnungssprachen gelten nicht als Programmiersprachen¹.
Der Unterschied zu Programmiersprachen ist nicht immer offensichtlich. Beispielsweise ist XSLT eine Turing-vollständige Sprache², basiert jedoch auf XML, einer Auszeichnungssprache.
Wikipedia selbst unternimmt wichtige Anstrengungen, um XSLT nicht als Programmiersprache oder Auszeichnungssprache zu qualifizieren. Es wird lediglich angegeben, dass es sich um eine deklarative Sprache handelt und dass „Optimierungstechniken verwendet werden, die in funktionalen Programmiersprachen und Datenbankabfragesprachen zu finden sind“.
Eine Skriptsprache ist eine Programmiersprache, die interpretiert und nicht kompiliert wird. Das bedeutet, dass Skriptsprachen eine Teilmenge aller Programmiersprachen darstellen.
Es ist nicht immer offensichtlich, ob eine Programmiersprache eine Skriptsprache ist, so wie es nicht immer offensichtlich ist, ob eine Sprache kompiliert oder interpretiert wird. Zum Beispiel PHP kann auf Zwischen bytecode³ kompiliert werden und dann in Maschinencode durch JIT - Compiler ranslated, während nach wie vor als scripting language⁴ betrachtet.
Siehe auch: Splitting Meta-Hairs von Steven Lott.
¹ “XML ist keine Programmiersprache”. Siehe XML in 10 Punkten .
² „XSLT ist eine Turing-vollständige Sprache“ Siehe XSLT auf Wikipedia
³ “HHVM kompiliert Hack und PHP in einen Zwischenbytecode. Dieser Bytecode wird dann zur Laufzeit von einem Just-in-Time-Compiler (JIT) dynamisch in x64-Maschinencode übersetzt. “Siehe HHVM .
⁴ Skriptsprachen in Liste der Programmiersprachen nach Typ in Wikipedia.
quelle
TypeError
! Jede Sprache kann von einem Interpreter implementiert werden, jede Sprache kann von einem Compiler implementiert werden.Um eine Taxonomie zu erstellen, müssen Sie sich zunächst einige Fragen stellen:
Wenn Sie eine Frage wie die von Ihnen gestellte hören, gehen Sie in der Regel von mehreren Annahmen aus. Zum Beispiel ist es selbstverständlich anzunehmen, dass alle diese Sprachen eine Hierarchie unter einem allgemeineren Sprachbegriff bilden müssen, oder dass sie den Raum aller Sprachen aufteilen oder dass sie Teilmengen voneinander sind.
Programmiersprachen
Leider scheint keine der obigen Aussagen zu stimmen. Vielleicht haben nur die Programmiersprachen eine Definition, über die sich die meisten einig sind. Programmiersprachen sind Sprachen, die Programme codieren. Codierung bedeutet, dass ein Wort in der Sprache als Programm interpretiert werden kann (eine Abfolge von Aktionen). Computerprogrammiersprachen sind eine Teilmenge davon. Beispiele für Nicht-Computer-Programmiersprachen: eine Einkaufsliste, die als Anweisungen für einen Käufer in einem Supermarkt interpretiert wird, DNA, die durch Transkription von Peptiden interpretiert wird, eine analoge Musikaufzeichnung, die als Programm für ein Tonbandgerät dient.
Computerprogrammiersprachen sind also diejenigen, die Computer programmieren.
Skriptsprachen
Sind nicht gut definiert. Es ist offen zu interpretieren, was dieser Begriff bedeutet. Historisch gesehen scheint es, dass Programmiersprachen, die keinen Compiler zur Erzeugung von Maschinencode hatten, so genannt wurden. Nach heutigen Maßstäben würde dies jede beliebte Programmiersprache ohne Assembler in diese Kategorie einordnen. Selbst die sogenannten Low-Level-Sprachen wie C benötigen eine Laufzeit mit bereits vorhandenen Prozeduren, so dass die durch das Kompilieren eines C-Programms erhaltenen Binärdateien nicht nur Maschinencode sind, sondern auch ab und zu die Laufzeit aufrufen.
Auszeichnungssprachen
Sind nicht gut definiert. Wann immer der Begriff verwendet wird, scheint es die Absicht zu sein, eine Programmiersprache mit sehr begrenztem Lexikon zu beschreiben, die hauptsächlich zur Erzeugung von visuellen oder akustischen Bildern verwendet wird. Es mag schwierig sein, XML als Programmierelement anzusehen, aber wenn Sie sich Man- oder TexInfo-Markups ansehen, werden Sie feststellen, dass die "Sonderzeichen" tatsächlich Anweisungen des Interpreters sind.
Es ist auch möglich, eine "Programmier" -Interpretation für die XML-Sprache zu geben. Dies könnte folgendermaßen aussehen:
Fazit: Diese heutige Unterteilung scheint nicht sehr aussagekräftig zu sein. Sie kann Ihnen nur eine Vorstellung davon geben, mit welcher Art von Sprache Sie konfrontiert sind, liefert Ihnen jedoch keine strenge Definition.
quelle
Alle drei Konzepte überschneiden sich etwas, sodass Sie endlose Argumente erhalten können, ob XSLT eine Programmiersprache ist oder ob Python eine Skriptsprache ist oder nicht.
Eine Auszeichnungssprache ist eine Sprache, die strukturierte Daten in einem Textformat darstellt . HTML ist die bekannteste, es gibt jedoch zahlreiche Formate für verschiedene Zwecke, wie SVG für Grafiken, WSDL zur Beschreibung von Webdienstschnittstellen und resx für Ressourcendateien in. net und so weiter. Als Faustregel gilt, dass eine Auszeichnungssprache keinen Prozess oder Algorithmus beschreibt (wie eine Programmiersprache), sondern reine Daten sind. Aber es ist auch eine grundlegende CS-Einsicht, die es gibtKein grundlegender Unterschied zwischen Code und Daten. Einige Markup-Sprachen wie XSLT haben Schleifen und Bedingungen wie eine "echte" Programmiersprache, und einige Programmiersprachen wie Prolog sind fast reine Daten ohne im Code angegebenen Prozess. Und Lisp verwischt die Zeile so sehr, dass er seinen eigenen Code als strukturiertes Datenformat behandelt.
Die Unterscheidung zwischen Programmiersprache und Skriptsprache ist eine historische Unterscheidung, die heute fast überholt ist. Früher hatten wir eigenständige Programme kompiliert, die in say C geschrieben waren, und dann hatten wir Skriptsprachen wie say Shell-Skripte oder Word Basic, die interpretiert und entworfen wurden, um andere Programme und Tools zu manipulieren. Heutzutage ist die Linie ziemlich verschwommen mit viel Mittelweg, da wir verschiedene Ebenen der Kompilierung und Interpretation (Bytecode-Kompilierung, JIT-Kompilierung usw.) und verschiedene sprachunabhängige APIs haben. Die Unterscheidung ist also nicht so nützlich.
quelle
Eine Auszeichnungssprache wird eher zur Beschreibung von Daten als zur Beschreibung von Logik verwendet. Eine typische Verwendung ist die Beschreibung der Dokumentformatierung, HTML ist beispielsweise dafür vorgesehen. Sie werden jedoch manchmal auch als allgemeine Datenformate verwendet. XML ist eine Auszeichnungssprache, die häufig nur zur Beschreibung von Daten verwendet wird.
Der Unterschied zwischen Programmiersprachen und Skriptsprachen ist sehr unscharf. Beide sind in der Regel insofern vollständig, als Sie damit berechenbare Probleme lösen können. Es gibt einige allgemeine "Hinweise", nach denen Sie suchen können, um festzustellen, ob eine Sprache eine Programmiersprache ist oder nicht.
Aber wenn eine Sprache Skriptsprache oder Programmiersprache ist, ist dies letztendlich eher eine Frage der Konvention als eines strengen Kriteriums. Auch wenn die obigen Hinweise nur Trends sind, finden Sie Programmiersprachen, die alle Kriterien für eine Skriptsprache erfüllen und dennoch als Programmiersprachen gelten.
quelle
TypeError
! Jede Sprache kann von einem Interpreter implementiert werden, jede Sprache kann von einem Compiler implementiert werden. Es ist sogar möglich, automatisch einen Compiler aus einem Interpreter zu generieren und umgekehrt.