Kann mir jemand den Unterschied zwischen einer Skriptsprache und einer Programmiersprache erklären, bitte?
Können Sie auch einige Beispiele für jede nennen? Ich habe viel gegoogelt, aber die besten Antworten finde ich immer auf Stack Overflow.
Antworten
Zu viele Anzeigen?Skriptsprachen sind eine Untermenge von Programmiersprachen.
- Skriptsprachen werden nicht vom Benutzer in Maschinencode kompiliert (Python, Perl, Shell, etc.). Stattdessen führt ein anderes Programm (der Interpreter genannt) das Programm aus und simuliert sein Verhalten.
- Einige Programmiersprachen, die nicht skriptbasiert sind (C, C++, Haskell und andere 'kompilierte' Sprachen), werden in Maschinencode kompiliert und anschließend ausgeführt.
Ich denke, dass das, was du als "Unterschied" bezeichnest, tatsächlich eine Folge des eigentlichen Unterschieds ist.
Der eigentliche Unterschied ist das Ziel des geschriebenen Codes. Wer wird diesen Code ausführen.
Eine Skriptsprache wird verwendet, um Code zu schreiben, der auf ein Softwaresystem abzielt. Es wird Vorgänge auf diesem Softwaresystem automatisieren. Das Skript wird eine Abfolge von Anweisungen an das Zielsoftwaresystem sein.
Eine Programmiersprache zielt auf das Rechensystem ab, das eine echte oder virtuelle Maschine sein kann. Die Anweisungen werden von der Maschine ausgeführt.
Natürlich versteht eine echte Maschine nur den Binärcode, also muss der Code einer Programmiersprache kompiliert werden. Aber das ist eine Folge des Zielens auf eine Maschine anstelle eines Programms.
Andererseits kann das Zielsoftwaresystem eines Skripts den Code kompilieren oder interpretieren. Das liegt am Softwaresystem.
Wenn wir sagen, dass der eigentliche Unterschied darin besteht, ob er kompiliert ist oder nicht, dann haben wir ein Problem, denn wenn Javascript in V8 ausgeführt wird, ist es kompiliert und wenn es in Rhino ausgeführt wird, nicht.
Es wird noch verwirrender, da Skriptsprachen sich weiterentwickelt haben, um sehr leistungsstark zu werden. Sie sind also nicht nur darauf beschränkt, kleine Skripte zur Automatisierung von Vorgängen auf einem anderen Softwaresystem zu erstellen, sondern man kann damit auch beliebige umfangreiche Anwendungen erstellen.
Python-Code zielt auf einen Interpreter ab, so dass wir sagen können, dass er "Skripte" auf diesem Interpreter ausführt. Aber wenn man Python-Code schreibt, sieht man das nicht als Ausführen eines Interpreters, sondern als Erstellen einer Anwendung. Der Interpreter dient nur dazu, auf einer höheren Ebene zu coden, unter anderem. Also ist Python für mich eher eine Programmiersprache als eine Skriptsprache.
Zurück, als die Welt noch jung war und in der PC-Welt zwischen .exe oder .bat gewählt wurde, war die Abgrenzung einfach. Unix-Systeme haben immer Shell-Skripte (/bin/sh, /bin/csh, /bin/ksh, usw.) und kompilierte Sprachen (C/C++/Fortran) gehabt.
Um Rollen und Verantwortlichkeiten zu unterscheiden, wurden die kompilierten Sprachen (oft als 3. Generationssprachen bezeichnet) als 'Programmier'-Sprachen angesehen und 'Skript'-Sprachen wurden als solche betrachtet, die einen Interpreter aufriefen (oft als 4. Generationssprachen bezeichnet). Skriptsprachen wurden oft als 'Klebstoff' verwendet, um zwischen mehreren Befehlen/kompilierten Programmen zu verbinden, so dass der Benutzer sich keine Gedanken über eine Reihe von Schritten machen musste, um seine Aufgabe auszuführen - sie entwickelten eine einzige Datei, die darlegte, welche Schritte sie erreichen wollten, und diese wurde zu einem 'Skript', dem jeder folgen konnte.
Verschiedene Personen/Gruppen schrieben neue Interpreter, um ein spezifisches Problemfeld zu lösen. awk ist einer der bekannteren und wurde hauptsächlich für die Mustererkennung und die Anwendung einer Reihe von Datentransformationen auf die Eingabe verwendet. Es funktionierte gut, hatte aber ein begrenztes Problemfeld. Die Erweiterung dieses Bereichs war nahezu unmöglich, da der Quellcode nicht verfügbar war. Perl (Larry Wall, Hauptautor/Architekt) brachte Skripting auf die nächste Stufe - und entwickelte einen Interpreter, der es dem Benutzer nicht nur ermöglichte, Systembefehle auszuführen, Eingabe- und Ausgabedaten zu manipulieren, typlose Variablen zu unterstützen, sondern auch auf Unix-Systemebene APIs als Funktionen direkt aus den Skripts heraus aufzurufen. Es war wahrscheinlich eine der ersten weit verbreiteten High-Level-Skriptsprachen. Mit Perl (IMHO) überschritten Skriptsprachen die willkürliche Linie und fügten die Fähigkeiten von Programmiersprachen hinzu.
Ihre Frage bezog sich speziell auf Python. Da der Python-Interpreter gegen eine Textdatei mit dem Python-Code arbeitet und der Python-Code überall ausgeführt werden kann, wo ein Python-Interpreter vorhanden ist, würde ich sagen, dass es sich um eine Skriptsprache handelt (in ähnlicher Weise wie Perl). Sie müssen die Benutzer-Python-Befehlsdatei nicht für jedes unterschiedliche Betriebssystem/CPU-Architektur neu kompilieren (wie bei C/C++/Fortran), was sie wesentlich portabler und benutzerfreundlicher macht.
Danke an Jerrold (Jerry) Heyman für diese Antwort. Ursprünglicher Thread: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language
Skriptsprachen
Skriptsprachen werden innerhalb eines anderen Programms interpretiert. JavaScript ist in einem Browser eingebettet und wird von diesem Browser interpretiert.
Beispiele für Skriptsprachen
- JavaScript
- Perl
- Python
Vorteile von Skriptsprachen:
-
Einfach - Skriptsprachen sind einfacher zu schreiben als Programmiersprachen.
-
Weniger Codezeilen (LOC)
Programmiersprachen
Programmiersprachen wie Java werden kompiliert und nicht von einer anderen Anwendung auf die gleiche Weise interpretiert.
Beispiele für Programmiersprachen
- C
- C++ und
- Java
Weitere Details
Ich bin im Zwiespalt mit der Tatsache, dass Sprachen, die Interpreter verwenden, Skriptsprachen sind und diejenigen, die kompiliert werden, Programmiersprachen sind. Wir können für jede Sprache einen Interpreter oder Compiler entwickeln. Eine interpretierte Umgebung eignet sich besser für das Webskripting und macht es einfacher, deshalb haben wir sie.
Nun, ich habe das Gefühl, dass es keinen Unterschied zwischen Skriptsprache und Programmiersprache gibt. Es geht darum, die Aufgabe zu erledigen. Wenn es um Web-bezogene Aufgaben geht, nennen wir sie Web-Skripts im Hinblick auf kleine Aufgaben, und auf die gleiche Weise können wir die systembezogenen Aufgaben als System- oder OS-Ebenen-Skripts bezeichnen und die Programmiersprache, die wir verwenden, um diese Aufgaben zu erledigen, als Systemskriptsprachen.
Außerdem ist es nicht so, dass man in Python keinen Code auf Systemebene schreiben kann und Web-Skripts in der C-Sprache (definitiv kann man das tun, wenn wir die erforderliche Plattform und Umgebung etablieren können). Aber es erfordert viel Aufwand, der den Zeitrahmen für die schnelle Entwicklung beeinträchtigen kann, und der geringfügige Latenzreduktion bringt uns nicht viel Nutzen bei Web-Skripts. Aber das Gegenteil ist nicht der Fall, wenn wir systembezogene Aufgaben in Python ausführen.
Fazit: Die Auswahl der Sprache hängt von der Art der auszuführenden Aufgabe ab und die Diskriminierung einer Sprache als Skriptsprache ist ein Mythos.