Wann wird eine Sprache als Skriptsprache betrachtet? [geschlossen]

107

Was macht eine Sprache zu einer Skriptsprache? Ich habe einige Leute sagen hören "wenn es interpretiert statt kompiliert wird". Das würde PHP (zum Beispiel) zu einer Skriptsprache machen. Ist das das einzige Kriterium? Oder gibt es andere Kriterien?

Siehe auch:

Shog9
quelle
Vielleicht möchten Sie Ihre Frage ein wenig erweitern. Ich denke, das ist sonst fast ein Betrug. Andere sehen möglicherweise nicht die Unterscheidung
Kent Fredric
Ein Betrüger zu welcher anderen Frage?
Sietse
2
stackoverflow.com/questions/98268/… Es gibt viele Ähnlichkeiten . Nicht unbedingt identisch, aber viel gemeinsamer Kontext / Meinung.
Kent Fredric
7
... Wenn eine Sprache die API bricht und ihre Syntax bei jeder Nebenversion ändert, wenn es sich um einen Wrapper mit etwa 100 schmutzigen, nicht gewarteten fehlerhaften C-Bibliotheken handelt, handelt es sich um eine Skriptsprache. ;)
ivan_ivanovich_ivanoff
1
In der Seitenleiste "Verwandte" finden Sie stackoverflow.com/questions/1514206/…, mit dem ich einen Stapel der dann vorhandenen Duplikate verknüpft habe , die auf stackoverflow.com/questions/101055/… zurückgehen .
dmckee --- Ex-Moderator Kätzchen

Antworten:

52

Eine Skriptsprache ist eine Sprache, die andere Dinge "schreibt", um Dinge zu tun. Der Hauptfokus liegt nicht in erster Linie auf dem Erstellen eigener Apps, sondern darauf, dass eine vorhandene App so funktioniert, wie Sie es möchten, z. B. JavaScript für Browser, VBA für MS Office.

moffdub
quelle
Was ist also mit Sprachen wie Python? Es ist nicht leicht zu sagen, wo der Fokus liegt, aber man könnte sagen, dass er sich mehr auf eigene Anwendungen konzentriert, dennoch wird er oft als "Skriptsprache" bezeichnet. Vielleicht, weil die versteckte Kompilierung in Bytecode der Referenz CPython impl. wirft keine Kompilierungsfehler in Bezug auf "Typensicherheit" auf? Vielleicht hat
Odeds
Bytecode- und Typsysteme haben eigentlich nichts damit zu tun. Nach der obigen Definition wird Python als Skriptsprache verwendet, wenn eine App eine API für Python verfügbar macht. Wenn Sie eine App vollständig in Python erstellen, verwendet diese App sie als Programmiersprache.
Fehler
"Scripting" ist keine Definition eines Sprachtyps. Es ist eine Eigenschaft, die Sprachen haben können . Python ist also eine "gute Skriptsprache", da es einfach ist, Code zu schreiben, der Skripte erstellt. Assembly ist keine gute Skriptsprache, da es schwierig ist, Skripte zu erstellen. C befindet sich irgendwo in der Mitte, denn obwohl es ein Schlüsselwort (System) zum Aufrufen hat, sattelt es den Benutzer auch mit viel Cruft, bevor Sie dorthin gelangen können.
Nomen
93

Einfach. Wenn ich es benutze, ist es eine moderne dynamische Sprache, wenn Sie es benutzen, ist es nur eine Skriptsprache!

Martin Beckett
quelle
19
Ja. "Es ist keine 'Spielzeugsprache', es ist eine 'Hochsprache'": P
Roberto Bonvallet
6
das war toll und nicht zum Thema, -1
adf88
1
Selbst mit - (1 + 1) erhält es ungefähr 2x + 1s als ein Häkchen. : D
anatoly techtonik
Beste. Antworten. EVAR!
Bilderstürmer
41

Wenn über den Unterschied zwischen Skripten und Programmieren gesprochen wird, werden Skripte traditionell interpretiert und Programme kompiliert. Eine Sprache kann auf verschiedene Arten ausgeführt werden - interpretiert oder kompiliert (zu Bytecode oder Maschinencode). Dies macht eine Sprache nicht zu der einen oder anderen.

In manchen Augen, so , wie Sie verwenden , macht die Sprache es sich um eine Skriptsprache (zum Beispiel Spiele - Entwickler , die in erster Linie ++ Willen in C entwickeln Skript die Objekte in Lua). Auch hier sind die Zeilen unscharf - eine Sprache kann von einer Person für eine Programmierung verwendet werden, und dieselbe Sprache kann von einer anderen Person für die Skriptsprache verwendet werden.

Dies ist aus dem Wikipedia- Artikel über Skriptsprachen:

Eine Skriptsprache, Skriptsprache oder Erweiterungssprache ist eine Programmiersprache, mit der eine oder mehrere Softwareanwendungen gesteuert werden können. "Skripte" unterscheiden sich vom Kerncode der Anwendung, da sie normalerweise in einer anderen Sprache geschrieben sind und häufig vom Endbenutzer erstellt oder zumindest geändert werden. Skripte werden häufig aus Quellcode oder Bytecode interpretiert, während die von ihnen gesteuerten Anwendungen traditionell zu nativem Maschinencode kompiliert werden. Skriptsprachen sind fast immer in die von ihnen gesteuerten Anwendungen eingebettet.

Sie werden die Verwendung von "normalerweise", "oft", "traditionell" und "fast immer" bemerken - all dies sagt Ihnen, dass es keine unterschiedlichen Attribute gibt, die eine bestimmte Sprache zu einer "Skriptsprache" machen.

Oded
quelle
1
@ Amr: Nun, es heißt Java- Skript
sepp2k
1
@ Ram Bhat - es ist verwirrend, da die Unterscheidung künstlich ist.
Oded
11
@Andrey: Alle modernen JavaScript-Implementierungen werden kompiliert. Und es gibt Dolmetscher für C.
Jörg W Mittag
27
Das ist einfach falsch. Nun, eigentlich ist es nicht einmal falsch , es macht einfach keinen Sinn. Es gibt keine kompilierte oder interpretierte Sprache. Eine Sprache wird nicht kompiliert, eine Sprache , nur ist . Es ist ein Bündel abstrakter mathematischer Regeln. Interpretation und Kompilierung sind Merkmale einer Ausführungsmaschine , keine Sprache. Jede Sprache kann entweder mit einem Compiler oder einem Interpreter implementiert werden. Tatsächlich haben alle Sprachen, die auf dieser Seite als "interpretiert" bezeichnet wurden, fast ausschließlich Implementierungen kompiliert, z. B. JavaScript, PHP, Python, Ruby.
Jörg W Mittag
5
@Andrey: Chakra (IE9), TraceMonkey / JägerMonkey (Firefox), Nitro (Safari) und Carakan (Opera) kompilieren JavaScript in Bytecode, und dann wird ein Teil des Bytecodes interpretiert und ein Teil in nativen Code kompiliert. V8 (Chrome) überspringt Bytecode und kompiliert JavaScript direkt in nativen Code. IronJS kompiliert JavaScript in CIL-Bytecode. Rhino kompiliert JavaScript in JVML-Bytecode. BESEN (die bislang einzige ECMAScript 5-Engine) kompiliert JavaScript in BESEN-Bytecode, und derzeit wird ein nativer Compiler hinzugefügt. Einige der oben genannten kompilieren auch reguläre Ausdrücke zu nativem Maschinencode.
Jörg W Mittag
31

"Ein Drehbuch geben Sie den Schauspielern. Ein Programm geben Sie dem Publikum." - Larry Wall

Ich glaube wirklich nicht, dass es mehr einen großen Unterschied gibt. Die sogenannten "Skriptsprachen" werden oft kompiliert - nur sehr schnell und zur Laufzeit. Einige der "Programmiersprachen" werden auch zur Laufzeit weiter kompiliert (denken Sie an JIT), und die erste Stufe des "Kompilierens" ist die Syntaxprüfung und Ressourcenauflösung.

Lass dich nicht aufhängen, es ist wirklich nicht wichtig.

Clinton Pierce
quelle
hmmm .. Ich bin nicht aufgelegt, aber die meisten Interviewer und Lehrer sind es. Und ich hatte noch nie jemanden von diesen Leuten, der mir eine befriedigende Antwort gab!
Laz
1
Und wenn Sie hier eine der anderen Antworten geben würden, würde ich als Interviewer denken, dass Sie die Frage wirklich nicht im Griff hatten. Die Unterscheidung ist wirklich verschwommen und es gibt keine eindeutige Antwort. Wenn Sie "Nun, traditionell ..." gesagt hätten, würde ich das nehmen, aber dann würde ich erwarten, dass Sie auch Dinge wie Laufzeitkompilierung und JIT'ing besprechen.
Clinton Pierce
25

Meine Definition wäre eine Sprache, die normalerweise als Quelle und nicht als Binärsprache verteilt wird.

kenny
quelle
5
Sie denken also, PHP, Python usw. sind Skriptsprachen?
Sietse
"Scripting" ist eine gebräuchliche Beschreibung für Python und PHP.
S.Lott
22
PHP und Python - natürlich sind sie Skriptsprachen!
Antony Carthy
Dies ist, was meine Definition seit dem Start war
@ Anthony Carthy das ist falsch. Python ist normalerweise keine Skriptsprache, kann aber wie jede andere Sprache in einem Programm verwendet werden (wie Word (VB), Browser (JS))
Joschua
16

Darauf gibt es viele mögliche Antworten.

Erstens: es ist nicht wirklich eine Frage des Unterschiedes zwischen einer Skriptsprache und einer Programmiersprache, weil eine Skriptsprache ist eine Programmiersprache. Es geht eher darum, welche Eigenschaften eine Programmiersprache zu einer Skriptsprache machen, während eine andere Programmiersprache keine Skriptsprache ist.

Zweitens: Es ist wirklich schwer zu sagen, was eine XYZ-Sprache ist, ob es sich bei dieser XYZ um "Scripting", "funktionale Programmierung", "objektorientierte Programmierung" handelt oder was Sie haben. Die Definition von "funktionaler Programmierung" ist ziemlich klar, aber niemand weiß, was eine "funktionale Programmiersprache" ist.

Funktionale Programmierung oder objektorientierte Programmierung programmiert Stile ; Sie können in einem funktionalen Stil oder einem objektorientierten Stil in so ziemlich jeder Sprache schreiben. Zum Beispiel ist die Linux Virtual File System Switch und das Linux - Treibermodell stark objektorientierte trotz in C geschrieben, während eine Menge von Java oder C # -Code Sie im Web sehen sehr prozedurale und nicht objektorientiert überhaupt . OTOH, ich habe einige stark funktionierende Java-Codes gesehen.

Wenn funktionale Programmierung und objektorientierte Programmierung lediglich Stile sind, die in jeder Sprache ausgeführt werden können, wie definieren Sie dann eine "objektorientierte Programmiersprache"? Man könnte sagen, dass eine objektorientierte Programmiersprache eine Sprache ist, die objektorientierte Programmierung ermöglicht. Aber das ist keine große Definition: Alle Sprachen erlauben objektorientierte Programmierung, daher sind alle Sprachen objektorientiert? Sie sagen also, eine Sprache ist objektorientiert, wenn sie Sie dazu zwingt, objektorientiert zu programmieren. Aber das ist auch keine große Definition: Alle Sprachen erlauben funktionale Programmierung, also nein Sprache objektorientiert?

Für mich habe ich also folgende Definition gefunden:

Eine Sprache ist eine Skriptsprache (objektorientierte Sprache / funktionale Sprache), wenn beides

  • Erleichtert das Scripting (objektorientierte Programmierung / funktionale Programmierung), dh es erlaubt es nicht nur , sondern macht es einfach und natürlich und enthält Funktionen, die dabei helfen , UND
  • ermutigt und führt Sie zum Scripting (objektorientierte Programmierung / funktionale Programmierung).

Nach fünf Absätzen bin ich zu folgendem Punkt gekommen: "Eine Skriptsprache ist eine Skriptsprache". Was für eine großartige Definition. NICHT.

Offensichtlich müssen wir uns jetzt die Definition von "Scripting" ansehen.

Hier kommt das dritte Problem ins Spiel: Während der Begriff "funktionale Programmierung" genau definiert ist und nur der Begriff "funktionale Programmiersprache" problematisch ist, leider bei Skripten, beides der Begriff "Skriptsprache" als auch der Begriff "Skriptsprache" "sind schlecht definiert.

Nun, erstens Scripting ist die Programmierung. Es ist nur eine besondere Art der Programmierung. IOW: Jedes Skript ist ein Programm, aber nicht jedes Programm ist ein Skript. Die Menge aller Skripte ist eine richtige Teilmenge der Menge aller Programme.

Meiner persönlichen Meinung nach macht Scripting Scripting und unterscheidet es von anderen Arten der Programmierung, dass…

Skripte manipulieren weitgehend Objekte, die

  • wurden nicht vom Skript erstellt,
  • habe ein Leben unabhängig vom Skript und
  • leben außerhalb der Domäne des Skripts.

Außerdem werden die verwendeten Datentypen und Algorithmen im Allgemeinen nicht vom Skript, sondern von der externen Umgebung definiert.

Denken Sie an ein Shell-Skript: Shell-Skripte bearbeiten normalerweise Dateien, Verzeichnisse und Prozesse. Die meisten Dateien, Verzeichnisse und Prozesse auf Ihrem System wurden wahrscheinlich nicht mit dem aktuell ausgeführten Skript erstellt. Und sie verschwinden nicht, wenn das Skript beendet wird: Ihre Lebensdauer ist völlig unabhängig vom Skript. Und sie sind auch nicht wirklich Teil des Skripts, sondern Teil des Systems. Sie haben nicht das Skript von dem Schreiben beginnen Fileund DirectoryKlassen, diese Datentypen sind keine Ihrer Sorge: Sie einfach davon ausgehen , sie sind da, und Sie wissen nicht einmal (noch müssen Sie müssen wissen) , wie sie funktionieren. Und Sie implementieren auch keine eigenen Algorithmen, z. B. für die Verzeichnisüberquerung, die Sie nur verwenden, findanstatt Ihre eigene Breitensuche zu implementieren.

Kurz gesagt: Ein Skript hängt sich an ein größeres System an, das unabhängig vom Skript existiert, manipuliert einen kleinen Teil des Systems und wird dann beendet.

Dieses größere System kann das Betriebssystem bei einem Shell-Skript, das Browser-DOM bei einem Browser-Skript, ein Spiel (z. B. World of Warcraft mit Lua oder Second Life mit der Linden-Skriptsprache), eine Anwendung (z. B. AutoLisp) sein Sprache für AutoCAD- oder Excel / Word / Office-Makros), einen Webserver, ein Paket von Robotern oder etwas ganz anderes.

Beachten Sie, dass der Skriptaspekt vollständig orthogonal zu allen anderen Aspekten von Programmiersprachen ist: Eine Skriptsprache kann stark oder schwach, streng oder lose, statisch oder dynamisch, nominell, strukturell oder ententypisiert sein, zum Teufel kann sie sogar untypisiert sein . Es kann zwingend oder funktional, objektorientiert, prozedural oder funktional, streng oder faul sein. Seine Implementierungen können interpretiert, kompiliert oder gemischt werden.

Zum Beispiel ist Mondrian eine streng statisch typisierte Lazy Functional Scripting-Sprache mit einer kompilierten Implementierung.

Doch all dies ist strittig, weil die Art und Weise der Begriff Skriptsprache ist wirklich in der realen Welt verwendet, die nichts mit einem der oben genannten zu tun hat. Es wird meistens nur als Beleidigung verwendet, und die Definition ist ziemlich einfach, sogar simpel:

  • echte Programmiersprache: meine Programmiersprache
  • Skriptsprache: Ihre Programmiersprache

Dies scheint die Art und Weise zu sein, wie der Begriff am häufigsten verwendet wird.

Jörg W Mittag
quelle
Einige dieser Antworten sind albern. Eine Sprache ist "objektorientiert", wenn sie sich an der Programmierung mit Objekten orientiert. Eine Sprache ist "funktional", wenn sie erstklassige Funktionen hat. Das heißt nicht, dass eine Sprache nicht beides sein kann. Dies sind Merkmale von Sprachen, keine Definitionen von Typen. Scripting ist ähnlich. Eine Sprache ist eine "gute Skriptsprache", wenn sie das Schreiben von Skripten erleichtert - kurze, einfache Teile der Benutzer-Anwendungs-Interaktion.
Nomen
16

Es ist wie Porno, du weißt es, wenn du es siehst. Die einzig mögliche Definition einer Skriptsprache ist:

A language which is described as a scripting language.

Ein bisschen kreisförmig, nicht wahr? (Ich scherze übrigens nicht).

Grundsätzlich gibt es nichts, was eine Sprache zu einer Skriptsprache macht, außer dass sie so genannt wird, insbesondere von ihren Erstellern. Die wichtigsten modernen Skriptsprachen sind PHP, Perl, JavaScript, Python, Ruby und Lua. Tcl ist die erste große moderne Skriptsprache (es war zwar nicht die erste Skriptsprache, ich vergesse, was es ist, aber ich war überrascht zu erfahren, dass es älter war als Tcl).

In meinem Artikel beschreibe ich Funktionen der wichtigsten Skriptsprachen :

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

Die meisten werden dynamisch typisiert und interpretiert, und die meisten haben außerhalb ihrer Referenzimplementierung keine definierte Semantik. Selbst wenn ihre Hauptimplementierung kompiliert oder JITed wird, ändert dies nichts an der "Natur" der Sprache.

Die einzige verbleibende Frage ist, wie Sie feststellen können, ob eine neue Sprache eine Skriptsprache ist. Nun, wenn es eine Skriptsprache heißt, ist es eine. Also Faktor eine Skriptsprache (oder zumindest war , als das geschrieben wurde), sondern, sagen wir, ist Java nicht.

Paul Biggar
quelle
1
Es ist eine sehr gute Erklärung, aber ich bin sicher, dass einige Leute es befürworten, weil sie "Porno" sehen
HoKy22
Die Verbindung zum Papier ist unterbrochen.
Quazi Irfan
5

"Skriptsprache" ist eines dieser unscharfen Konzepte, die viele Dinge bedeuten können. Normalerweise bezieht es sich auf die Tatsache, dass es einen einstufigen Prozess gibt, der Sie vom Quellcode zur Ausführung führt.

Zum Beispiel in Perl machen Sie: perl my_source.pl

Angesichts der oben genannten Kriterien ist PHP eine Skriptsprache (obwohl Sie beispielsweise einen "Kompilierungs" -Prozess durchführen können, wenn Sie den Zend Encoder zum "Schützen" des Quellcodes verwenden).

PS. Oft (aber nicht immer) werden Skriptsprachen interpretiert. Auch häufig (aber auch nicht immer) Skriptsprachen werden dynamisch typisiert.

Cd-MaN
quelle
Perl wird vor der Ausführung zu Bytecode kompiliert.
Brad Gilbert
2
Was ist mit Java? Sie benötigen eine JVM, um ein Java-Programm auszuführen, aber ich würde es nicht als Skriptsprache bezeichnen
Eineki
5

Alle Skriptsprachen sind Programmiersprachen. Streng genommen gibt es keinen Unterschied.

Der Begriff bezieht sich nicht auf grundlegende Eigenschaften der Sprache, sondern auf den typischen Gebrauch der Sprache. Wenn die typische Verwendung darin besteht, kurze Programme zu schreiben, die hauptsächlich auf bereits vorhandenen Code aufrufen, und die Ergebnisse einfach zu verarbeiten (dh wenn die typische Verwendung darin besteht, Skripte zu schreiben ), handelt es sich um eine Skriptsprache.

Joren
quelle
4

Ich denke, Herr Roberto Ierusalimschy hat eine sehr gute Antwort oder die Frage in 'Programmieren in Lua':

Das Unterscheidungsmerkmal interpretierter Sprachen besteht jedoch nicht darin, dass sie nicht kompiliert werden, sondern dass jeder Compiler Teil der Sprachlaufzeit ist und dass es daher möglich (und einfach) ist, im laufenden Betrieb generierten Code auszuführen

Rodrigo Lopez
quelle
Dies beantwortet die Frage überhaupt nicht!
Paul Biggar
Lassen Sie mich noch einmal sagen, dass in einer Skriptsprache der Compiler enthalten ist und es möglich ist, im laufenden Betrieb generierten Code auszuführen. Wie beantwortet das nicht die Frage?
Rodrigo Lopez
Das ist eine interpretierte Sprache. Wenn Sie sagen möchten, dass eine interpretierte Sprache eine Skriptsprache ist, sagen Sie dies.
Paul Biggar
Nun, alle Sprachen können für Skripte verwendet werden. Der Schlüssel für mich ist, wie geeignet sie sind. Für mich ist das Unterscheidungsmerkmal, dass sie ja interpretiert werden.
Rodrigo Lopez
4
Common Lisp ist nicht das, was ich normalerweise als Skriptsprache betrachte, aber es hat eine vollwertige evalFunktion.
David Thornley
4

Eine Abteilung ist

  • Scripting = dynamisch interpretiert
  • normal = kompiliert

Eine dynamisch interpretierte Sprache wird zur Laufzeit interpretiert, während eine kompilierte Sprache vor der Ausführung kompiliert wird.

Ich sollte hinzufügen, dass, wie Jörg betont hat, die interpretierte / kompilierte Unterscheidung kein Merkmal der Sprache ist, sondern der Ausführungsmaschine.

Diese Erklärung könnte Sie auch interessieren Typsystems , die verwandt ist und sich mehr auf den Sprachaspekt als auf die Ausführungs-Engine konzentriert. Die meisten Skriptsprachen werden dynamisch typisiert, während "normale" Sprachen meist statisch typisiert werden.

Im Allgemeinen ist die Unterscheidung zwischen statisch und dynamisch typisierten Sprachen besser definiert und hat größere Auswirkungen auf die Benutzerfreundlichkeit der Sprache.

Timo Westkämper
quelle
Was ist mit Objective-C?
Mouviciel
1
Es unterstützt dynamisches Tippen, aber ich würde es nicht als Skriptsprache bezeichnen.
Timo Westkämper
2
Das ist einfach falsch. Nun, eigentlich ist es nicht einmal falsch , es macht einfach keinen Sinn. Es gibt keine kompilierte oder interpretierte Sprache. Eine Sprache wird nicht kompiliert, eine Sprache , nur ist . Es ist ein Bündel abstrakter mathematischer Regeln. Interpretation und Kompilierung sind Merkmale einer Ausführungsmaschine , keine Sprache. Jede Sprache kann entweder mit einem Compiler oder einem Interpreter implementiert werden. Tatsächlich haben alle Sprachen, die auf dieser Seite als "interpretiert" bezeichnet wurden, fast ausschließlich Implementierungen kompiliert, z. B. JavaScript, PHP, Python, Ruby.
Jörg W Mittag
@ jorg-w-mittag, Fühlen Sie sich frei, meine Antwort zu bearbeiten, um sie korrekter zu machen. Ihre Punkte sind gültig. Wenn Sie jedoch über eine Sprache sprechen, sprechen Sie normalerweise auch über die Standardausführungs-Engine.
Timo Westkämper
3

Eine Skriptsprache ist normalerweise :

  1. Dynamisch getippt
  2. Interpretiert, mit sehr wenig Betonung auf Leistung, aber guter Portabilität
  3. Benötigt viel weniger Boilerplate-Code , was zu einem sehr schnellen Prototyping führt
  4. Wird für kleine Aufgaben verwendet und eignet sich zum Schreiben einer einzelnen Datei, um ein nützliches "Skript" auszuführen.

Während eine Nicht-Skriptsprache normalerweise wie folgt ist : 1. Statisch typisiert 2. Kompiliert, mit Schwerpunkt auf Leistung 3. Erfordert mehr Boilerplate-Code, was zu einem langsameren Prototyping, aber mehr Lesbarkeit und langfristiger Wartbarkeit führt. 4. Wird für große Projekte verwendet und passt sich vielen an Designmuster

Aber meiner Meinung nach ist es heutzutage eher ein historischer Unterschied. Javascript und Perl wurden für kleine, einfache Skripte geschrieben, während C ++ für komplexe Anwendungen geschrieben wurde. aber beide können so oder so verwendet werden. Und viele Programmiersprachen, sowohl moderne als auch alte, verwischen die Linie trotzdem (und sie war an erster Stelle verschwommen!).

Das Traurige ist, ich habe einige Entwickler gekannt, die das, was sie als "Skriptsprachen" empfanden, verabscheuen und sie für einfacher und nicht so leistungsfähig halten. Meiner Meinung nach ist das alte Klischee - benutze das richtige Werkzeug für den Job.

Eiche
quelle
2
Es gibt keine kompilierte oder interpretierte Sprache. Eine Sprache wird nicht kompiliert, eine Sprache , nur ist . Es ist ein Bündel abstrakter mathematischer Regeln. Interpretation und Kompilierung sind Merkmale einer Ausführungsmaschine , keine Sprache. Jede Sprache kann entweder mit einem Compiler oder einem Interpreter implementiert werden. Tatsächlich haben alle Sprachen, die auf dieser Seite als "interpretiert" bezeichnet wurden, fast ausschließlich Implementierungen kompiliert, z. B. JavaScript, PHP, Python, Ruby.
Jörg W Mittag
@ Jorg: Guter Punkt, ich stimme zu. Aber ich habe nicht gesagt, dass dies nicht kompiliert werden kann, sondern nur, dass diese Arten von Sprachen im allgemeinen Sprachgebrauch normalerweise eher interpretiert als kompiliert werden.
Eiche
Sind sie? Alle aktuellen Implementierungen von Python, PHP, Perl und Lua werden kompiliert. Mit Ausnahme der MRT werden alle aktuellen Implementierungen von Ruby kompiliert. (Und es gibt tatsächlich nicht einen, sondern zwei JIT-Compiler für die MRT.) Mit Ausnahme von JScript werden alle aktuellen JavaScript-Implementierungen kompiliert. Beachten Sie, dass der Nachfolger von JScript, Chakra, kompiliert wird. Viele Implementierungen des Schemas werden kompiliert. ELisp wird kompiliert.
Jörg W Mittag
3

Skriptsprachen wurden ursprünglich als Kontrollmechanismen für Anwendungen angesehen, die in einer harten Programmiersprache geschrieben wurden. Die kompilierten Programme konnten zur Laufzeit nicht geändert werden, sodass die Skripterstellung den Benutzern Flexibilität gab.

Das Shell-Skript automatisierte vor allem Prozesse im Betriebssystemkern (traditionell AppleScript auf Macs). Eine Rolle, die in letzter Zeit immer mehr in Perls Hände und dann in Python überging. Ich habe gesehen, dass Scheme (insbesondere in seiner Guile-Implementierung) zum Deklarieren von Raytracing-Szenen verwendet wurde. und in letzter Zeit ist Lua als Programmiersprache für Skriptspiele sehr beliebt - bis zu dem Punkt, dass das einzige, was in vielen neuen Spielen fest codiert ist, die Grafik- / Physik-Engine ist, während die gesamte Spielelogik in Lua codiert ist. Auf die gleiche Weise sollte JavaScript das Verhalten eines Webbrowsers skripten.

Die Sprachen emanzipierten; Niemand denkt jetzt an das Betriebssystem als Anwendung (oder denkt überhaupt viel darüber nach), und viele frühere Skriptsprachen wurden verwendet, um eigene vollständige Anwendungen zu schreiben. Der Name selbst wurde bedeutungslos und verbreitete sich in vielen heute verwendeten interpretierten Sprachen, unabhängig davon, ob sie für die Interpretation innerhalb eines anderen Systems ausgelegt sind oder nicht.

"Skriptsprachen" sind jedoch definitiv nicht gleichbedeutend mit "interpretierten Sprachen" - zum Beispiel wurde BASIC fast sein ganzes Leben lang interpretiert (dh bevor es seine Akronimizität verlor und zu Visual Basic wurde), aber niemand denkt wirklich daran Skripterstellung.

UPDATE: Lesematerial wie gewohnt bei Wikipedia erhältlich .

Amadan
quelle
Tatsächlich war die ursprüngliche BASIC-Implementierung ein Compiler. Erst später wurden BASIC-Klone als Interpreter geschrieben, da Dolmetscher angeblich einfacher zu schreiben sind als Compiler.
Jörg W Mittag
1
@ Jörg: Nicht ganz so. Während die ersten Testimplementierungen von Dartmouth BASIC kompiliert wurden (Card BASIC genannt), waren die tatsächlichen Implementierungen Dolmetscher. In der Tat war das wahrscheinlich wichtigste neue Merkmal von BASIC, dass es interaktiv war. Sie müssen den Quellcode nicht in eine Karte stanzen und sie dem Compiler zuführen. Der Benutzer könnte einfach am Teletyp sitzen, das Programm schreiben und es dann ausführen.
PauliL
Es ist interessant, dass diese Antwort die Idee einer "harten" Sprache einführt. Braucht 'schwer' in diesem Zusammenhang eine Definition?
DA Vincent
@ DavidVincent: Ich hätte wahrscheinlich "härter" bedeuten sollen. Es ist keine formale Definition erforderlich, das intuitive Verständnis sollte ausreichen: Es ist viel schwieriger, ein Programm in Assembly oder C zu schreiben als in Ruby oder Python, da die ersteren viel niedriger und ausführlicher sind als die letzteren.
Amadan
3

Erster Punkt: Eine Programmiersprache ist keine "Skriptsprache" oder etwas anderes. Es kann eine "Skriptsprache" und etwas anderes sein.

Zweiter Punkt: Der Implementierer der Sprache teilt Ihnen mit, ob es sich um eine Skriptsprache handelt.

Ihre Frage sollte lauten: "In welchen Implementierungen wird eine Programmiersprache als Skriptsprache betrachtet?" Und nicht "Was ist der Unterschied zwischen einer Skriptsprache und einer Programmiersprache?". Es gibt kein dazwischen.

Ich werde eine Sprache jedoch als Skriptsprache betrachten, wenn sie verwendet wird, um eine Art Mittelware bereitzustellen. Zum Beispiel würde ich die meisten Implementierungen von JavaScript als Skriptsprache betrachten. Wenn JavaScript im Betriebssystem und nicht im Browser ausgeführt würde, wäre es keine Skriptsprache. Wenn PHP in Apache ausgeführt wird, handelt es sich um eine Skriptsprache. Wenn es über die Befehlszeile ausgeführt wird, ist dies nicht der Fall.

Marcus Adams
quelle
3

Ich sehe eine Skriptsprache als alles, was keinen offensichtlichen, kompakten Schritt erfordert. Aus Programmierersicht ist das Hauptmerkmal: Sie bearbeiten Code und führen ihn sofort aus.

Daher würde ich JavaScript und PHP als Skriptsprachen betrachten, während ActionScript 3 / Flex dies nicht wirklich ist.

Peter Mortensen
quelle
Ich möchte Peters Antwort nicht verunglimpfen, aber können wir mehr als nur eine Meinung hinzufügen?
DA Vincent
3

Mein Freund und ich hatten gerade dieses Argument: Was ist der Unterschied zwischen einer Programmiersprache und einer Skriptsprache?

Ein beliebtes Argument ist, dass Programmiersprachen kompiliert und Skriptsprachen interpretiert werden. Ich glaube jedoch, dass dieses Argument völlig falsch ist ... warum?

  1. Chakra & V8 (JavaScript-Engines von Microsoft und Google) kompilieren Code vor der Ausführung
  2. QBasic wird interpretiert - macht dies Qbasic zu einer "Skriptsprache"?

Auf dieser Basis ist dies mein Argument für den Unterschied zwischen einer Programmiersprache und einer Skriptsprache:

Eine Programmiersprache wird auf Maschinenebene ausgeführt und hat Zugriff auf die Maschine selbst (Speicher, Grafik, Sound usw.).

Eine Skriptsprache ist Sandbox und hat nur Zugriff auf Objekte, die der Sandbox ausgesetzt sind. Es hat keinen direkten Zugriff auf den zugrunde liegenden Computer.

Matthew Layton
quelle
2

Meiner Meinung nach würde ich sagen, dass dynamisch interpretierte Sprachen wie PHP, Ruby usw. immer noch "normale" Sprachen sind. Ich würde sagen, dass Beispiele für "Skriptsprachen" Dinge wie bash (oder ksh oder tcsh oder was auch immer) oder sqlplus sind. Diese Sprachen werden häufig verwendet, um vorhandene Programme auf einem System zu einer Reihe kohärenter und verwandter Befehle zusammenzufassen, z.

  1. Kopieren Sie A.txt nach / tmp / work /
  2. Führen Sie den nächtlichen Bereinigungsprozess auf dem Datenbankserver aus
  3. Protokollieren Sie die Ergebnisse und senden Sie sie an das System

Also habe ich den Unterschied (für mich jedenfalls) sagen würde , ist mehr, wie Sie verwenden die Sprache. Sprachen wie PHP, Perl, Ruby könnten als "Skriptsprachen" verwendet werden, aber ich sehe sie normalerweise als "normale Sprachen" (mit Ausnahme von Perl, das in beide Richtungen zu gehen scheint.

FrustratedWithFormsDesigner
quelle
Danke. Das macht die Sache etwas klarer. Zusammenfassend lässt sich sagen, dass Skriptsprachen so konzipiert sind, dass bereits vorhandene Programme in einer Sequenz zusammen verwendet werden. ABER Sprachen wie C können verwendet werden, um dasselbe über APIs zu tun. Technisch gesehen hängt alles von der Verwendung ab
Laz
Nein, Sie machen nur eine künstliche Unterscheidung (was das ist). Wenn Sie damit schnell etwas anfangen können, wird eine Sprache oft als Skriptsprache bezeichnet, aber das ist keine strenge Definition oder so. Häufig interpretierte Sprachen werden häufig auch als Skriptsprachen bezeichnet.
Wlangstroth
@ Will: Jede Unterscheidung wäre künstlich. Dies war meine meinungsmäßige Unterscheidung. ;)
FrustratedWithFormsDesigner
Ja, aber "Scripting" ist in diesem Fall eine sehr umgangssprachliche und vage Verwendung. Die Entscheidung, "bereits vorhandene Programme in einer Sequenz zusammen zu verwenden", ist sehr spezifisch und nicht ganz richtig. Das klingt vielleicht wie ein Shell-Skript , aber nicht wie Perl. Um das mit APIs (?) Zu kontrastieren ... Ich wollte einfach nicht, dass der Typ zu weit vom Kurs abweicht.
Wlangstroth
2

Ich werde einfach weitermachen und meine Antwort von der doppelten Frage migrieren


Der Name "Skriptsprache" bezieht sich auf eine ganz bestimmte Rolle: die Sprache, in die Sie Befehle schreiben, um sie an eine vorhandene Softwareanwendung zu senden. (wie ein traditionelles Fernseh- oder Film-Drehbuch)

Zum Beispiel waren HTML-Webseiten einst langweilig. Sie waren immer statisch. Dann dachte Netscape eines Tages: "Hey, was ist, wenn wir den Browser kleine Befehle auf der Seite lesen und darauf reagieren lassen?" Und so wurde Javascript gebildet.

Ein einfacher Javascript-Befehl ist der alert() Befehl, der den Browser (eine Software-App), der die Webseite liest, anweist / befiehlt, eine Warnung anzuzeigen.

Bezieht sich nun alert()in irgendeiner Weise auf C ++ oder die vom Browser tatsächlich verwendete Codesprache die Warnung angezeigt werden ? Natürlich nicht. Jemand, der "alert ()" auf eine HTML-Seite schreibt, hat kein Verständnis dafür, wie der Browser die Warnung tatsächlich anzeigt. Er schreibt nur einen Befehl, den der Browser interpretiert.

Sehen wir uns den einfachen Javascript-Code an

<script>
var x = 4
alert(x)
</script>

Dies sind Anweisungen, die an den Browser gesendet werden, damit der Browser sie selbst interpretieren kann. Die Programmiersprache, die der Browser durchläuft, um eine Variable auf 4 zu setzen und diese in eine Warnung zu setzen ... sie hat nichts mit Javascript zu tun.

Wir nennen diese letzte Befehlsreihe ein "Skript" (weshalb sie in <script>Tags eingeschlossen ist). Nur durch die Definition von "Skript" im traditionellen Sinne: Eine Reihe von Anweisungen und Befehlen, die an die Schauspieler gesendet werden . Jeder weiß, dass ein Drehbuch (ein Drehbuch) zum Beispiel ein Drehbuch ist.

Das Drehbuch (Drehbuch) besteht nicht aus den Schauspielern, der Kamera oder den Spezialeffekten. Das Drehbuch sagt ihnen nur, was sie tun sollen.

Nun, was ist eine Skriptsprache , genau?

Es gibt viele Programmiersprachen, die verschiedenen Werkzeugen in einer Toolbox ähneln. Einige Sprachen wurden speziell entwickelt für die Verwendung als Skripte entwickelt.

Javasript ist ein offensichtliches Beispiel; Es gibt nur sehr wenige Anwendungen von Javascript, die nicht in den Bereich der Skripterstellung fallen.

ActionScript (die Sprache für Flash-Animationen) und seine Ableitungen sind Skriptsprachen, da sie einfach Befehle an den Flash Player / Interpreter ausgeben. Sicher, es gibt Abstraktionen wie objektorientierte Programmierung, aber alles, was nur ein Mittel zum Zweck ist: Befehle an den Flash Player senden.

Python und Ruby werden häufig auch als Skriptsprachen verwendet. Zum Beispiel habe ich einmal für eine Firma gearbeitet, die Ruby verwendet hat, um Befehle zu schreiben, die an einen Browser gesendet wurden. Diese lauten wie folgt: "Gehen Sie zu dieser Site, klicken Sie auf diesen Link ...", um einige grundlegende automatisierte Tests durchzuführen. Ich war nicht bei diesem Job ein "Softwareentwickler". Ich habe gerade Skripte geschrieben, die Befehle an den Computer gesendet haben, um Befehle an den Browser zu senden.

Skriptsprachen werden aufgrund ihrer Natur selten "kompiliert", dh in Maschinencode übersetzt und direkt vom Computer gelesen.

Sogar aus Python und Ruby erstellte GUI-Anwendungen sind Skripte, die an eine in C ++ oder C geschriebene API gesendet werden. Sie teilt der C-App mit, was zu tun ist.

Natürlich gibt es eine vage Linie. Warum können Sie nicht sagen, dass Maschinensprache / C Skriptsprachen sind, da es sich um Skripte handelt, mit denen der Computer eine Schnittstelle zum Basis-Motherboard / zu Grafikkarten / Chips herstellt?

Es gibt einige Linien, die wir zur Verdeutlichung ziehen können:

  1. Wenn Sie eine Skriptsprache schreiben und ausführen können, ohne sie zu "kompilieren", ist dies eher eine Art Direktskript. Zum Beispiel müssen Sie mit einem Drehbuch nichts anfangen, um den Schauspielern zu sagen, was sie damit machen sollen. Es ist schon da, gebraucht, wie es ist. Aus diesem Grund schließen wir kompilierte Sprachen als Skriptsprachen aus, obwohl sie gelegentlich für Skriptsätze verwendet werden können.

  2. Die Skriptsprache impliziert Befehle, die an eine komplexe Softwareanwendung gesendet werden . Das ist der ganze Grund, warum wir überhaupt Skripte schreiben. Sie müssen also nicht wissen, wie komplex die Software ist, um Befehle an sie zu senden. Skriptsprachen sind also in der Regel Sprachen, die (relativ) einfache Befehle an komplexe Softwareanwendungen senden. In diesem Fall schneiden Maschinensprache und Assembler-Code nicht ab.

Justin L.
quelle
2

Darf ich vorschlagen, dass Skriptsprachen ein Begriff sind, von dem sich viele Menschen entfernen. Ich würde sagen, es läuft heutzutage hauptsächlich auf kompilierte und dynamische Sprachen hinaus.

Ich meine, man kann nicht wirklich so etwas wie Python sagen, oder Ruby sind heutzutage "Skriptsprachen" (Sie haben sogar Sachen wie IronPython und JIT - Ihre Lieblingssprache , der Unterschied ist noch mehr verschwommen).

Um ehrlich zu sein, persönlich glaube ich nicht mehr, dass PHP eine Skriptsprache ist. Ich würde nicht erwarten, dass die Leute PHP gerne anders kategorisieren als Java in ihrem Lebenslauf.

Robert Gould
quelle
Auch wenn ich viel in PHP arbeite, würde ich sagen, dass ich es persönlich "eine ziemlich gute Skriptsprache" nennen würde, bis es von einem skriptbasierten zu einem / real / fcgi-Servlet-Modell übergeht, das Aufgaben vom Server delegiert kann die Illusion einer Anwendung geben "
Kent Fredric
Statisch / Dynamisch gibt es dynamische Sprachen, die kompiliert werden.
Brad Gilbert
Ich wiederhole: Ich meine, man kann so etwas wie Python nicht wirklich sagen, oder Ruby sind heutzutage "Skriptsprachen" (Sie haben sogar Sachen wie IronPython und JitYourFavoriteLanguage, der Unterschied ist noch mehr verschwommen).
Robert Gould
1

Skriptsprachen werden normalerweise in einer Skript-Engine ausgeführt, die Teil einer größeren Anwendung ist. Beispielsweise wird JavaScript in der Skript-Engine Ihres Browsers ausgeführt.

Martin OConnor
quelle
Komisch, dass die akzeptierte Antwort zwei negative Stimmen hat.
Robert S.
1
Dafür sollte es eine Art Abzeichen geben. Wie wäre es mit "Kann nicht mit der Wahrheit umgehen."? Nein, ein bisschen zu wortreich. ;-)
Joseph Ferris
3
Perl, Python, Ruby, Tcl / Tk - um nur vier Skriptsprachen zu nennen - sind nicht primär in eine größere Anwendung integriert.
Jonathan Leffler
3
Ergo - sie sind keine Skriptsprachen.
Milen A. Radev
3
Äh ja, es wäre schön, wenn dies irgendwie nicht als richtig markiert werden könnte.
Mittag Seide
1

Eine Skriptsprache ist eine Sprache, die jedes Mal interpretiert wird, wenn das Skript ausgeführt wird. Sie setzt einen Interpreter voraus und die meisten sind sehr gut lesbar. Um nützlich zu sein, ist eine Skriptsprache einfach zu erlernen und zu verwenden.

Jede kompilierbare Sprache kann in eine Skriptsprache umgewandelt werden und umgekehrt hängt alles von der Implementierung eines Interpreters oder eines Compilers ab. Beispielsweise verfügt C ++ über einen Interpreter, sodass er bei Verwendung als Skriptsprache bezeichnet werden kann (im Allgemeinen nicht sehr praktisch wie C ++) ist eine sehr komplexe Sprache), eine der derzeit nützlichsten Skriptsprachen ist Python ...

Um Ihre Frage zu beantworten, besteht die Definition darin, einen Interpreter zu verwenden, um schnelle und einfache Skriptprogramme auszuführen, einfache Aufgaben oder Prototypanwendungen zu adressieren. Die mächtigste Verwendung von Skriptsprachen besteht darin, die Möglichkeit für jede Verwendung einzuschließen, a zu erweitern kompilierte Anwendung.

Panik
quelle
1

Ich bevorzuge, dass die Leute den Begriff "Skriptsprache" nicht verwenden, da ich denke, dass dies den Aufwand verringert. Nehmen Sie eine Sprache wie Perl, die oft als "Skriptsprache" bezeichnet wird.

  • Perl ist eine Programmiersprache!
  • Perl ist wie Java und C ++ kompiliert. Es ist einfach viel schneller kompiliert!
  • Perl hat Objekte und Namespaces und Verschlüsse.
  • Perl hat IDEs und Debugger und Profiler.
  • Perl hat Training und Support und Community.
  • Perl ist nicht nur Web. Perl ist nicht nur Systemadministrator. Perl ist nicht nur das Klebeband des Internets.

Warum müssen wir überhaupt zwischen einer Sprache wie Java, die kompiliert wird, und Ruby, die nicht kompiliert ist, unterscheiden? Was ist der Wert bei der Kennzeichnung?

Weitere Informationen hierzu finden Sie unter http://xoa.petdance.com/Stop_saying_script .

Andy Lester
quelle
Kein Computer kann Perl oder Ruby (oder irgendeine Form, in die sie kompiliert werden könnten) nativ ausführen. Daher sind Perl und Ruby Skriptsprachen, die von einem Parser oder einer VM interpretiert werden.
anon6439
@psoul: ja. so ist Java.
Stefano Borini
Es gibt verschiedene Techniken, um Ruby in Maschinencode zu kompilieren, obwohl ich nicht sicher bin, ob eine davon nicht nur den Interpreter mit einer Zeichenfolge bündelt, die Ruby-Code darstellt, sondern selbst wenn dies wahr wäre, kann ein Ruby in Maschinencode-Übersetzer erstellt werden Der Code für die Maschine würde es unter anderem aufgrund des dynamischen Versands und der GC nicht annähernd an die Geschwindigkeit c bringen. Ich glaube nicht, dass es Ruby-Prozessoren gibt, sondern Maschinen, die besser auf das Lisp-Modell und die Prozessoren abgestimmt sind, auf denen Java-Bytecode ausgeführt wurde.
Roman A. Taycher
1

Ein wichtiger Unterschied ist die starke Eingabe (gegenüber der schwachen Eingabe ). Skriptsprachen sind häufig schwach typisiert , sodass kleine Programme schneller geschrieben werden können. Für große Programme ist dies ein Nachteil, da der Compiler / Interpreter bestimmte Fehler nicht autonom finden kann, was es sehr schwierig macht, Code umzugestalten.

Dimitri C.
quelle
1

Skriptsprachen sind Programmiersprachen, in denen die Programme in der Regel in lesbarer Textform an Endbenutzer geliefert werden und in denen es anscheinend ein Programm gibt, das dies kann , das dieses Programm direkt ausführen . (Das Programm kann das Skript möglicherweise intern kompilieren. Dies ist hier nicht relevant, da es für den Benutzer nicht sichtbar ist.)

Es ist relativ üblich, dass Skriptsprachen eine interaktive Sitzung unterstützen können, in der Benutzer einfach ihr Programm eingeben und es sofort ausführen lassen können. Dies liegt daran, dass dies eine triviale Erweiterung der wesentlichen Anforderung aus dem ersten Absatz ist. Die wichtigste zusätzliche Anforderung ist das Hinzufügen eines Mechanismus, um herauszufinden, wann eine eingegebene Anweisung vollständig ist, damit sie an die Ausführungsengine gesendet werden kann.

Donal Fellows
quelle
1

Für eine etwas andere Sichtweise auf die Frage. Eine Skriptsprache ist eine Programmiersprache, aber eine Programmiersprache ist nicht unbedingt eine Skriptsprache. Eine Skriptsprache wird verwendet, um ein System zu steuern oder zu skripten. Dieses System könnte ein Betriebssystem sein, bei dem die Skriptsprache bash wäre. Das System könnte ein Webserver mit PHP als Skriptsprache sein. Skriptsprachen sollen eine bestimmte Nische füllen. Sie sind domänenspezifische Sprachen. Interaktive Systeme haben Skriptsprachen interpretiert, was zu der Annahme geführt hat, dass Skriptsprachen interpretiert werden. Dies ist jedoch eine Folge des Systems und nicht der Skriptsprache selbst.

phreed
quelle
1

Eine Skriptsprache ist eine Sprache, die ein vorhandenes Programm konfiguriert oder erweitert.
Eine Skriptsprache ist eine Programmiersprache.

Romain Hippeau
quelle
1

Die Definition von "Skriptsprache" ist ziemlich unscharf. Ich würde es auf die folgenden Überlegungen stützen:

  1. Skriptsprachen haben normalerweise keine vom Benutzer sichtbaren Kompilierungsschritte. Normalerweise kann der Benutzer Programme nur mit einem einfachen Befehl ausführen.

  2. Programme in Skriptsprachen werden normalerweise in Quellform weitergegeben.

  3. Skriptsprachen haben normalerweise Laufzeiten, die auf einer großen Anzahl von Systemen vorhanden sind, und die Laufzeiten können auf den meisten Systemen problemlos installiert werden.

  4. Skriptsprachen sind in der Regel plattformübergreifend und nicht maschinenspezifisch.

  5. Skriptsprachen erleichtern das Aufrufen anderer Programme und die Schnittstelle zum Betriebssystem.

  6. Skriptsprachen lassen sich normalerweise leicht in größere Systeme einbetten, die in konventionelleren Programmiersprachen geschrieben sind.

  7. Skriptsprachen sind normalerweise so konzipiert, dass die Programmierung vereinfacht wird und die Ausführungsgeschwindigkeit viel weniger berücksichtigt wird. (Wenn Sie eine schnelle Ausführung wünschen, ist es üblich, die zeitaufwändigen Teile in etwas wie C zu codieren und entweder die Sprache in C einzubetten oder C-Bits aus der Sprache aufzurufen.)

Einige der oben aufgeführten Merkmale gelten für Implementierungen. In diesem Fall beziehe ich mich auf die allgemeineren Implementierungen. Es gab C-Interpreter mit (AFAIK) keinen offensichtlichen Kompilierungsschritt, aber das gilt nicht für die meisten C-Implementierungen. Sie könnten sicherlich ein Perl-Programm zu nativem Code kompilieren, aber so wird es normalerweise nicht verwendet. Einige andere Merkmale sind sozialer Natur. Einige der oben genannten Kriterien überschneiden sich etwas. Wie gesagt, die Definition ist unscharf.

David Thornley
quelle
0

Ich würde sagen, dass die Skriptsprache die Entitäten stark manipuliert, die sie selbst nicht definiert. Zum Beispiel manipuliert JavaScript DOM-Objekte, die vom Browser bereitgestellt werden, PHP betreibt eine enorme Bibliothek von C-basierten Funktionen und so weiter. Natürlich keine genaue Definition, eher eine Art zu denken, ob es.

Michael Pliskin
quelle
Mmm, PHP verwendet die zugrunde liegende C-Bibliothek, dies ist jedoch für die meisten Sprachen der Fall, einschließlich Java (auf der niedrigsten Ebene). Und es manipuliert diese Funktionen nicht ...
PhiLho
0

Wenn nicht / nicht auf der CPU laufen , ist es für mich ein Skript. Wenn ein Interpreter auf der CPU unterhalb des Programms ausgeführt werden muss, handelt es sich um ein Skript und eine Skriptsprache.

Kein Grund, es komplizierter zu machen?

Natürlich ist in den meisten Fällen (99%) klar, ob eine Sprache eine Skriptsprache ist. Beachten Sie jedoch, dass eine VM beispielsweise den x86-Befehlssatz emulieren kann. Würde dies den x86-Bytecode nicht zu einer Skriptsprache machen, wenn er auf einer VM ausgeführt wird? Was wäre, wenn jemand einen Compiler schreiben würde, der Perl-Code in eine native ausführbare Datei verwandelt? In diesem Fall würde ich nicht mehr wissen, wie ich die Sprache selbst nennen soll. Es wäre die Ausgabe, die wichtig wäre, nicht die Sprache.

Andererseits ist mir nicht bekannt, dass so etwas getan wurde, daher bin ich im Moment immer noch damit zufrieden, interpretierte Sprachen als Skriptsprachen zu bezeichnen.

anon6439
quelle
1
Sie rufen so ziemlich alle Sprachen auf, außer denen, die für Skriptsprachen in native Binärdateien kompilieren?
Ich bin
1
Sie sind. Scripters, das heißt.
anon6439
0

Ein Skript ist ein relativ kleines Programm. Ein System ist ein relativ großes Programm oder eine Sammlung relativ großer Programme.

Einige Programmiersprachen sind mit Funktionen ausgestattet, die der Sprachdesigner und die Programmiergemeinschaft beim Schreiben relativ kleiner Programme als nützlich erachten. Diese Programmiersprachen werden als Skriptsprachen bezeichnet , z. B. PHP.

In ähnlicher Weise werden andere Programmiersprachen mit Funktionen entworfen, die der Sprachdesigner und die Programmiergemeinschaft beim Schreiben relativ großer Programme als nützlich erachten. Diese Programmiersprachen werden als Systemsprachen bezeichnet , z. B. Java.

Jetzt können kleine und große Programme in jeder Sprache geschrieben werden. Ein kleines Java-Programm ist ein Skript. Ein Java-Programm "Hello World" ist beispielsweise ein Skript und kein System. Ein großes Programm oder eine Sammlung von Programmen, die in PHP geschrieben sind, ist ein System. Zum Beispiel ist Facebook, geschrieben in PHP, ein System, kein Skript.

Es ist fraglich, eine einzelne Sprachfunktion als "Lackmustest" zu betrachten, um zu entscheiden, ob die Sprache am besten für Skripte oder für die Systemprogrammierung geeignet ist. Zum Beispiel Skripte kann auf Byte - Code oder Maschinencode kompiliert werden, oder sie können durch direkte abstrakten Syntaxbaum (AST) Interpretation ausgeführt werden.

So ist eine Sprache , eine Skriptsprache , wenn es in der Regel zu schreiben Skripte verwendet wird . Eine Skriptsprache kann zum Schreiben von Systemen verwendet werden, aber solche Anwendungen werden wahrscheinlich als zweifelhaft angesehen.

Greg Mattes
quelle