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?
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?
Antworten:
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.
Einfach. Wenn ich es benutze, ist es eine moderne dynamische Sprache, wenn Sie es benutzen, ist es nur eine Skriptsprache!
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.
"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.
Meine Definition wäre eine Sprache, die normalerweise als Quelle und nicht als Binärsprache verteilt wird.
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 File
und Directory
Klassen, 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, find
anstatt 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.
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.
"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.
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.
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
eval
Funktion.
Eine Abteilung ist
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.
Eine Skriptsprache ist normalerweise :
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.
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 .
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.
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.
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?
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
Eine Skriptsprache ist eine Sprache, die ein vorhandenes Programm konfiguriert oder erweitert.
Eine Skriptsprache ist eine Programmiersprache.
Die Definition von "Skriptsprache" ist ziemlich unscharf. Ich würde es auf die folgenden Überlegungen stützen:
Skriptsprachen haben normalerweise keine vom Benutzer sichtbaren Kompilierungsschritte. Normalerweise kann der Benutzer Programme nur mit einem einfachen Befehl ausführen.
Programme in Skriptsprachen werden normalerweise in Quellform weitergegeben.
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.
Skriptsprachen sind in der Regel plattformübergreifend und nicht maschinenspezifisch.
Skriptsprachen erleichtern das Aufrufen anderer Programme und die Schnittstelle zum Betriebssystem.
Skriptsprachen lassen sich normalerweise leicht in größere Systeme einbetten, die in konventionelleren Programmiersprachen geschrieben sind.
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.
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.
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.
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.