Wann wird eine Sprache als Skriptsprache betrachtet?

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

Siehe auch:

  • Was ist der Unterschied zwischen einem “Skript” und einer “Anwendung”?

   

Eine Skriptsprache ist eine Sprache, die andere Dinge “scriptet”, um Dinge zu tun. Der Hauptfokus liegt nicht primär 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 verwende, ist es eine moderne dynamische Sprache, wenn Sie es verwenden, ist es nur eine Skriptsprache!

Wenn man über den Unterschied zwischen Scripting und Programmierung spricht, werden üblicherweise Skripte interpretiert und Programme kompiliert. Eine Sprache kann auf verschiedene Arten ausgeführt werden – interpretiert oder kompiliert (zu Bytecode oder Maschinencode). Das macht die eine oder andere Sprache nicht.

In manchen Augenblicken ist die Verwendung einer Sprache eine Skriptsprache (beispielsweise entwickeln Spieleentwickler, die hauptsächlich in C ++ entwickeln, die Objekte in Lua). Auch hier sind die Linien verschwommen – eine Sprache kann für eine Programmierung von einer Person verwendet werden und dieselbe Sprache kann von einer anderen für die Skriptsprache verwendet werden.

Dies ist aus dem Wikipedia- Artikel über Skriptsprachen:

Eine Skriptsprache, Skriptsprache oder Erweiterungssprache ist eine Programmiersprache, die die Steuerung einer oder mehrerer Softwareanwendungen ermöglicht. “Skripte” unterscheiden sich vom corecode der Anwendung, da sie normalerweise in einer anderen Sprache geschrieben sind und oft vom Endbenutzer erstellt oder zumindest modifiziert werden. Skripte werden oft aus Quellcode oder Bytecode interpretiert, während die Anwendungen, die sie steuern, traditionell in nativen Maschinencode übersetzt werden. Skriptsprachen sind fast immer in die Anwendungen eingebettet, die sie steuern.

Sie werden die Verwendung von “normalerweise”, “oft”, “traditionell” und “fast immer” bemerken – diese alle sagen Ihnen, dass es keine unterschiedlichen Attribute gibt, die eine bestimmte Sprache zu einer “Skriptsprache” machen.

“Ein Drehbuch ist das, was du den Schauspielern gibst. Ein Programm ist das, was du dem Publikum gibst.” – Larry Wall

Ich glaube wirklich nicht, dass es einen großen Unterschied mehr gibt. Die sogenannten “Scripting” -Sprachen werden oft kompiliert – nur sehr schnell und zur Laufzeit. Und einige der “Programmier” -Sprachen werden auch zur Laufzeit weiter kompiliert (man denke an JIT) und die erste Stufe des “Kompilierens” ist Syntaxprüfung und Ressourcenauflösung.

Mach dich nicht dran, es ist wirklich nicht wichtig.

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

Darauf gibt es viele mögliche Antworten.

Erstens: Es ist nicht wirklich eine Frage des Unterschieds zwischen einer Skriptsprache und einer Programmiersprache, denn 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 XYZ “Scripting”, “funktionale Programmierung”, “objektorientierte Programmierung” oder was Sie haben. Die Definition dessen, was “funktionale Programmierung” ist, ist ziemlich klar, aber niemand weiß, was eine “funktionale Programmiersprache” ist.

functionale Programmierung oder objektorientierte Programmierung sind Programmierstile; Sie können in praktisch jeder Sprache in einem funktionalen Stil oder einem objektorientierten Stil schreiben. Zum Beispiel sind der Linux Virtual File System Switch und das Linux Driver Model stark objektorientiert, obwohl in C geschrieben, während viel Java oder C # -Code, den Sie im Web sehen, sehr prozedural und nicht objektorientiert ist. OTOH, ich habe einen stark funktionalen Java-Code gesehen.

Wenn also funktionale Programmierung und objektorientierte Programmierung nur Stile sind, die in jeder Sprache möglich sind, wie definieren Sie dann eine “objektorientierte Programmiersprache”? Man könnte sagen, dass eine objektorientierte Programmiersprache eine Sprache ist, die eine objektorientierte Programmierung ermöglicht. Aber das ist keine Definition: Alle Sprachen erlauben eine objektorientierte Programmierung, deshalb sind alle Sprachen objektorientiert? Du sagst also, eine Sprache ist objektorientiert, wenn sie dich dazu zwingt, objektorientiert zu programmieren. Aber das ist auch keine Definition: Alle Sprachen erlauben eine funktionale Programmierung, daher ist keine Sprache objektorientiert?

Also, für mich habe ich die folgende Definition gefunden:

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

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

Nach fünf Absätzen bin ich angekommen: “Eine Skriptsprache ist eine Sprache für das Scripting”. Was für eine großartige Definition. NICHT.

Offensichtlich müssen wir uns nun die Definition von “Scripting” ansehen.

Hier kommt das dritte Problem ins Spiel: Während der Begriff “funktionale Programmierung” wohldefiniert ist und nur der Begriff “funktionale Programmiersprache” problematisch ist, bedauerlicherweise beim Scripting sowohl der Begriff “Scripting” als auch der Begriff “Skriptsprache “sind schlecht definiert.

Nun, zuerst ist Scripting Programmieren. Es ist nur eine spezielle 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 Meinung nach ist das, was Scripting Scripting macht und es von anderen Arten der Programmierung unterscheidet, dass …

Skripte manipulieren weitgehend Objekte, die

  • wurden nicht vom Skript erstellt,
  • haben eine lebenslange Unabhängigkeit von dem Skript und
  • leben außerhalb der Domäne des Skripts.

Die verwendeten Datentypen und Algorithmen werden im Allgemeinen nicht durch das Skript definiert, sondern durch die äußere Umgebung.

Denken Sie an ein Shell-Skript: Shell-Skripte manipulieren normalerweise Dateien, Verzeichnisse und processe. Die meisten Dateien, Verzeichnisse und processe auf Ihrem System wurden wahrscheinlich nicht vom aktuell laufenden 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, sie sind ein Teil des Systems. Sie haben Ihr Skript nicht gestartet, indem Sie File und Directory Diese Datentypen sind für Sie nicht relevant: Sie nehmen einfach an, dass sie da sind und Sie wissen nicht (oder müssen es nicht wissen), wie sie funktionieren. Und Sie implementieren auch keine eigenen Algorithmen, zB für das Directory-Traversal verwenden Sie einfach find anstatt eine 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 beendet sich dann.

Das größere System kann das Betriebssystem im Falle eines Shell-Skripts sein, das Browser-DOM im Falle eines Browser-Skripts, ein Spiel (zB World of Warcraft mit Lua oder Second Life mit der Linden Scripting Language), eine Anwendung (zB AutoLisp Sprache für AutoCAD- oder Excel / Word / Office-Makros), einen Webserver, eine Packung Roboter oder etwas ganz anderes.

Beachten Sie, dass der Skriptaspekt völlig orthogonal zu allen anderen Aspekten von Programmiersprachen ist: Eine Skriptsprache kann stark oder schwach typisiert sein, streng oder lose typisiert, statisch oder dynamisch typisiert, nominell, strukturell oder ducktypisch, kann sogar untypisiert sein . Es kann zwingend oder funktional, objektorientiert, prozedural oder funktional, streng oder faul sein. Ihre Implementierungen können interpretiert, kompiliert oder gemischt werden.

Zum Beispiel ist Mondrian eine streng statisch typisierte faule funktionale Skriptsprache mit einer kompilierten Implementierung.

All dies ist jedoch problematisch, da die Art und Weise, wie der Begriff Skriptsprache in der realen Welt wirklich verwendet wird, nichts mit dem oben genannten zu tun hat. Es wird meistens einfach als Beleidigung verwendet, und die Definition ist ziemlich einfach, sogar simpel:

  • echte Programmiersprache: meine Programmiersprache
  • Skriptsprache: Ihre Programmiersprache

Dies scheint der am häufigsten verwendete Begriff zu sein.

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

 A language which is described as a scripting language. 

Ein bisschen rund, oder? (Übrigens scherze ich nicht).

Im Grunde 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 nicht die erste Skriptsprache, aber ich habe vergessen, was es ist, aber ich war überrascht zu erfahren, dass es älter als Tcl ist).

In meinem Artikel beschreibe ich die 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 keine definierte Semantik außerhalb ihrer Referenzimplementierung. Aber selbst wenn ihre Haupt-Implementierung kompiliert oder JITed wird, ändert das nichts an der “Natur” der Sprache.

Die einzige Frage ist, wie Sie feststellen können, ob eine neue Sprache eine Skriptsprache ist. Nun, wenn es eine Skriptsprache heißt, ist es eine. Factor ist also eine Skriptsprache (oder zumindest war das, als das geschrieben wurde), aber Java ist es nicht.

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

Zum Beispiel in Perl: perl my_source.pl

Angesichts der oben genannten Kriterien ist PHP eine Skriptsprache (obwohl Sie einen “Kompilierungsprozess” haben können, wenn Sie zB den Zend Encoder verwenden, um den Quellcode zu “schützen”).

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

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

Der Begriff bezieht sich nicht auf grundlegende Eigenschaften der Sprache, sondern bezieht sich auf den typischen Gebrauch der Sprache. Wenn es üblich ist, kurze Programme zu schreiben, die hauptsächlich Aufrufe von bereits existierendem Code ausführen, und eine einfache Verarbeitung der Ergebnisse (dh, wenn die typische Verwendung zum Schreiben von Skripten ist ), dann ist es eine Skriptsprache.

Ich denke, Herr Roberto Ierusalimschy hat eine sehr gute Antwort oder die Frage “Programmierung in Lua”:

Das unterscheidende Merkmal von interpretierten Sprachen ist jedoch nicht, dass sie nicht kompiliert sind, sondern dass jeder Compiler Teil der Sprachlaufzeit ist und dass es daher möglich (und einfach) ist, während des Betriebs erzeugten Code auszuführen

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 darauf hingewiesen hat, die interpretierte / kompilierte Unterscheidung kein Merkmal der Sprache, sondern der Ausführungsmaschine ist.

Sie könnten sich auch für diese Erklärung von Type system interessieren, die verwandt ist und sich eher auf den Sprachaspekt als auf die Ausführungsengine konzentriert. Die meisten Skriptsprachen sind dynamisch typisiert, während “normale” Sprachen meist statisch typisiert sind.

Im Allgemeinen ist die Aufteilung von statisch vs. dynamisch typisierten Sprachen besser definiert und hat mehr Auswirkungen auf die Benutzerfreundlichkeit der Sprache.

Eine Skriptsprache ist typischerweise :

  1. Dynamisch getippt
  2. Interpretiert, mit sehr wenig Wert auf performance, aber gute Portabilität
  3. Benötigt viel weniger Standardcode , was zu einem sehr schnellen Prototyping führt
  4. Wird für kleine Aufgaben verwendet, geeignet zum Schreiben einer einzelnen Datei, um ein nützliches “Skript” auszuführen.

Während eine Nicht-Skriptsprache ist normalerweise : 1. Statisch getippt 2. Kompiliert, mit Schwerpunkt auf performance 3. Benötigt mehr Standardcode, was zu langsameren Prototyping, aber mehr Lesbarkeit und langfristige Wartbarkeit 4. Für große Projekte verwendet, passt sich an viele Designmuster

Aber es ist meiner Meinung nach heutzutage ein historischer Unterschied. Javascript und Perl wurden mit kleinen, einfachen Skripten geschrieben, während C ++ mit komplexen Anwendungen geschrieben wurde; aber beide können in beide Richtungen verwendet werden. Und viele Programmiersprachen, egal ob modern oder alt, verwischen die Zeile sowieso (und es war in erster Linie verschwommen!).

Das Traurige ist, ich habe ein paar Entwickler kennengelernt, die das, was sie als “Skriptsprachen” empfinden, nicht mögen und denken, dass sie einfacher und nicht so mächtig sind. Meiner Meinung nach ist das alte Klischee – benutze das richtige Werkzeug für den Job.

Skriptsprachen wurden ursprünglich als Kontrollmechanismen für Anwendungen in einer harten Programmiersprache betrachtet. Die kompilierten Programme konnten zur Laufzeit nicht geändert werden, deshalb gab das Skripting den Leuten Flexibilität.

Vor allem automatisieren Shell-Skripte processe im OS-coreel (traditionell AppleScript auf Macs); eine Rolle, die immer mehr in Perls Hände und dann in letzter Zeit in Python überging. Ich habe Scheme gesehen (besonders in seiner Guile-Implementierung), um Raytracing-Szenen zu deklarieren; und vor kurzem ist Lua als Programmiersprache für Skriptspiele sehr populär – bis zu dem Punkt, dass das einzige fest codierte Ding in vielen neuen Spielen die Grafik- / Physik-Engine ist, während die gesamte Spiellogik in Lua kodiert ist. Auf die gleiche Weise sollte JavaScript das Verhalten eines Webbrowsers skripten.

Die Sprachen emanzipiert; Niemand denkt jetzt über das Betriebssystem als eine Anwendung nach (oder denkt viel darüber nach), und viele frühere Skriptsprachen wurden verwendet, um eigene Anwendungen zu schreiben. Der Name selbst wurde bedeutungslos und verbreitete sich auf viele interpretierte Sprachen, die heute verwendet werden, unabhängig davon, ob sie entworfen wurden, um innerhalb eines anderen Systems interpretiert zu werden oder nicht.

“Skriptsprachen” sind jedoch definitiv nicht gleichbedeutend mit “interpretierten Sprachen” – zum Beispiel wurde BASIC für die meiste Zeit seines Lebens interpretiert (dh bevor es seine Akronivität verlor und zu Visual Basic wurde), doch niemand denkt wirklich darüber nach Skripting.

UPDATE: Wie gewohnt bei Wikipedia verfügbares Material.

Erstens, eine Programmiersprache ist keine “Skriptsprache” oder etwas anderes. Es kann eine “Skriptsprache” und etwas anderes sein.

Zweiter Punkt, der Implementierer der Sprache wird Ihnen sagen, ob es eine Skriptsprache ist.

Ihre Frage sollte lauten “In welchen Implementierungen würde eine Programmiersprache als Skriptsprache betrachtet?”, Nicht als “Was ist der Unterschied zwischen einer Skriptsprache und einer Programmiersprache?”. Es gibt kein zwischen.

Ich betrachte jedoch eine Sprache als Skriptsprache, wenn sie zur Bereitstellung einer Art Middleware verwendet wird. 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 läuft, ist es eine Skriptsprache. Wenn es von der Befehlszeile ausgeführt wird, ist es nicht.

Ich sehe eine Skriptsprache als etwas, das keinen offensichtlichen schwergewichtigen, kompilierenden ‘Schritt erfordert. Das Hauptmerkmal des Programmierers ist: Sie bearbeiten den Code und führen ihn sofort aus.

Daher würde ich JavaScript und PHP als Skriptsprachen betrachten, während ActionScript 3 / Flex 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?

  1. Chakra & V8 (Microsofts und Googles JavaScript-Engines) kompilieren Code vor der Ausführung
  2. QBasic wird interpretiert – macht das Qbasic zu einer “Skriptsprache”?

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

Eine Programmiersprache läuft auf der Maschinenebene und hat Zugriff auf die Maschine selbst (Speicher, Grafik, Sound usw.).

Eine Skriptsprache ist Sandkasten und hat nur Zugriff auf Objekte, die der Sandbox ausgesetzt sind. Es hat keinen direkten Zugriff auf die zugrunde liegende Maschine.

In My Opinions 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 bestehende Programme auf einem System zu einer Reihe kohärenter und verwandter Befehle zusammenzufassen, wie zum Beispiel:

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

Also würde ich sagen, dass der Unterschied (für mich sowieso) eher darin besteht, wie man die Sprache benutzt. Sprachen wie PHP, Perl, Ruby könnten als “Skriptsprachen” verwendet werden, aber ich sehe sie normalerweise als “normale Sprachen” (außer 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, die Sie schreiben, um sie an eine vorhandene Softwareanwendung zu senden. (wie ein traditionelles Fernseh- oder Film- “Skript”)

Zum Beispiel waren HTML-Webseiten einmal langweilig. Sie waren immer statisch. Dann dachte Netscape eines Tages: “Hey, was ist, wenn wir den Browser lesen und kleine Befehle auf der Seite ausführen?” Und so wurde Javascript erstellt.

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

Handelt alert() in irgendeiner Weise mit der C ++ – oder anderen Programmiersprache, die der Browser tatsächlich verwendet , um den Alarm anzuzeigen? Natürlich nicht. Jemand, der auf einer HTML-Seite “alert ()” schreibt, hat keine Ahnung, wie der Browser die Warnung tatsächlich anzeigt. Er schreibt gerade einen Befehl, den der Browser interpretiert.

Lassen Sie uns den einfachen JavaScript-Code sehen

  

Dies sind statementen, die an den Browser gesendet werden, damit der Browser sie selbst interpretiert. Die Programmiersprache, die der Browser durchläuft, um eine Variable tatsächlich auf 4 zu setzen und diese in eine Warnung zu schreiben … sie ist völlig unabhängig von Javascript.

Wir nennen diese letzte Reihe von Befehlen ein “Skript” (weshalb es in -Tags eingeschlossen ist). Nur durch die Definition von "Script", im traditionellen Sinne: Eine Reihe von statementen und Befehle an die Schauspieler gesendet . Jeder weiß, dass ein Drehbuch (ein Filmskript) zum Beispiel ein Skript ist.

Das Drehbuch (Drehbuch) sind nicht die Schauspieler oder die Kamera oder die Spezialeffekte. Das Drehbuch sagt ihnen nur, was sie tun sollen.

Nun, was genau ist eine Skriptsprache?

Es gibt viele Programmiersprachen, die wie verschiedene Werkzeuge in einer Toolbox sind; Einige Sprachen wurden speziell für die Verwendung als Skripte entwickelt.

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

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

Python und Ruby werden üblicherweise auch als Skriptsprachen verwendet. Zum Beispiel arbeitete ich einmal für eine Firma, die Ruby verwendete, um Befehle an einen Browser zu senden, die wie folgt waren: "Gehe zu dieser Seite, klicke auf diesen Link ...", um einige grundlegende automatisierte Tests durchzuführen. Ich war kein "Softwareentwickler" bei diesem Job. Ich habe gerade Skripte geschrieben, die Befehle an den Computer schickten, um Befehle an den Browser zu senden.

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

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

Es gibt natürlich eine Linie der Unbestimmtheit. Warum können Sie nicht sagen, dass Machine Language / C Skriptsprachen sind, weil es sich um Skripte handelt, die der Computer verwendet, um mit den grundlegenden Motherboards / Grafikkarten / Chips zu kommunizieren?

Es gibt einige Zeilen, die wir zeichnen können, um zu verdeutlichen:

  1. Wenn Sie eine Skriptsprache schreiben und sie ohne "Kompilieren" ausführen können, handelt es sich eher um ein direktes Skript. Zum Beispiel brauchen Sie nichts mit einem Drehbuch zu tun, um den Schauspielern zu sagen, was damit zu tun ist. Es ist schon da, gebraucht, wie es ist. Aus diesem Grund werden wir kompilierte Sprachen davon ausschließen, Skriptsprachen zu nennen, obwohl sie manchmal für Skriptingzwecke verwendet werden können.

  2. Skriptsprache impliziert Befehle, die an eine komplexe Softwareanwendung gesendet werden; Das ist der Grund, warum wir Skripte überhaupt erst schreiben - Sie brauchen also nicht die Komplexität zu kennen, mit der die Software Befehle an sie sendet. Skriptsprachen sind also in der Regel Sprachen, die (relativ) einfache Befehle an komplexe Softwareanwendungen senden ... in diesem Fall schneiden Maschinensprache und Assemblercode nicht ab.

Darf ich vorschlagen, dass Skriptsprachen ein Begriff sind, von dem sich viele Leute entfernen. Ich würde sagen, dass es heutzutage meistens auf kompilierte Sprachen und dynamische Sprachen hinausläuft.

Ich meine, man kann nicht wirklich etwas wie Python sagen, oder Ruby “schreibt” heutzutage Sprachen (man hat sogar Sachen wie IronPython und JIT – deine Lieblingssprache , der Unterschied ist noch mehr verschwommen).

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

Skriptsprachen werden in der Regel 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, es beinhaltet einen Interpreter und die meisten sind sehr menschlich 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 davon ab, einen Interpreter oder einen Compiler zu implementieren, als Beispiel hat C ++ einen Interpreter, so dass man es als Skriptsprache bezeichnen kann (im Allgemeinen nicht sehr praktisch wie C ++) ist eine sehr komplexe Sprache), eine der nützlichsten Skriptsprachen ist derzeit Python …

Um Ihre Frage zu beantworten, besteht die Definition aus der Verwendung eines Interpreters zum Ausführen von schnellen und einfachen Skriptprogrammen, um einfache Aufgaben oder Prototypanwendungen zu adressieren. Der leistungsfähigste Einsatz von Skriptsprachen besteht darin, die Möglichkeit für jede Verwendung zu erweitern kompilierte Anwendung.

Ich bevorzuge, dass Leute den Begriff “Skriptsprache” nicht verwenden, weil ich denke, dass es den Aufwand verringert. Nehmen Sie eine Sprache wie Perl, oft “Skriptsprache” genannt.

  • Perl ist eine Programmiersprache!
  • Perl wird wie Java und C ++ kompiliert. Es ist nur viel schneller kompiliert!
  • Perl hat Objekte, Namespaces und Closures.
  • Perl hat IDEs und Debugger und Profiler.
  • Perl hat Training und Unterstützung und Gemeinschaft.
  • Perl ist nicht nur Web. Perl ist nicht nur Systemadministrator. Perl ist nicht nur das Klebeband des Internets.

Warum müssen wir sogar zwischen einer Sprache wie Java, die kompiliert wird, und Ruby, die das nicht ist, unterscheiden? Was ist der Wert in der Etikettierung?

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

Ein wichtiger Unterschied ist die starke Typisierung (gegenüber der schwachen Typisierung ). Skriptsprachen sind oft schwach typisiert , was es ermöglicht, kleine Programme schneller zu schreiben. Für große Programme ist dies ein Nachteil, da es den Compiler / Interpreter daran hindert, bestimmte Fehler autonom zu finden, was es sehr schwierig macht, Code zu refaktorieren.

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

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

Für eine etwas andere Sicht auf die Frage. Eine Skriptsprache ist eine Programmiersprache, aber eine Programmiersprache ist nicht notwendigerweise 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 der Skriptsprache PHP sein. Skriptsprachen sollen eine bestimmte Nische füllen; Sie sind domänenspezifische Sprachen. Interaktive Systeme haben Skriptsprachen interpretiert, die zu dem Gedanken geführt haben, dass Skriptsprachen interpretiert werden; Dies ist jedoch eine Folge des Systems und nicht die 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 den folgenden Überlegungen basieren:

  1. Skriptsprachen haben normalerweise keine für den Benutzer sichtbaren Kompilierungsschritte. In der Regel kann der Benutzer nur Programme in 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 eher plattformübergreifend und nicht maschinenspezifisch.

  5. Skriptsprachen erleichtern das Aufrufen anderer Programme und die Verbindung mit dem Betriebssystem.

  6. Scripting languages are usually easily embeddable into larger systems written in more conventional programming languages.

  7. Scripting languages are normally designed for ease of programming, and with much less regard for execution speed. (If you want fast execution, the usual advice is to code the time-consuming parts in something like C, and either embed the language into C or call C bits from the language.)

Some of the characteristics I listed above are true of implementations, in which case I’m referring to the more common implementations. There have been C interpreters, with (AFAIK) no obvious compile step, but that’s not true of most C implementations. You could certainly compile a Perl program to native code, but that’s not how it’s normally used. Some other characteristics are social in nature. Some of the above criteria overlap somewhat. As I said, the definition is fuzzy.

A scripting language is a programming language designed for integrating and communicating with other programming languages. You can also say it instructs others to do stuff

I would say scripting language is the one heavily manipulating entities it doesn’t itself define. For instance, JavaScript manipulates DOM objects provided by the browser, PHP operates enormous library of C-based functions, and so on. Of course not a precise definition, more a way to think if it.

If it doesn’t/ wouldn’t run on the CPU, it’s a script to me. If an interpreter needs to run on the CPU below the program, then it’s a script and a scripting language.

No reason to make it any more complicated than this?

Of course, in most (99%) of cases, it’s clear whether a language is a scripting language. But consider that a VM can emulate the x86 instruction set, for example. Wouldn’t this make the x86 bytecode a scripting language when run on a VM? What if someone was to write a compiler that would turn perl code into a native executable? In this case, I wouldn’t know what to call the language itself anymore. It’d be the output that would matter, not the language.

Then again, I’m not aware of anything like this having been done, so for now I’m still comfortable calling interpreted languages scripting languages.