Skriptsprachen (auchScriptsprachen) sindProgrammiersprachen, die darauf ausgelegt sind, bestehende Systeme oder Anwendungen zu ergänzen. Sie werden üblicherweise durch einenInterpreter ausgeführt und verzichten oft auf Sprachelemente, deren Nutzen erst bei der Bearbeitung großerCodebasen zum Tragen kommt. So wird etwa in Skriptsprachen auf denDeklarationszwang von Variablen meist verzichtet – vorteilhaft zur schnellen Erstellung von kleinen Programmen (siehe auchPrototyping), bei großen kann dies hingegen ein Nachteil sein, etwa wegen der fehlenden Überprüfungsmöglichkeit vonTippfehlern in Variablennamen.
Skripte oderScripts sind tendenziell eher kleineProgramme, die fast ausschließlich in Form vonQuelltextdateien ausgeliefert werden, um ein einfaches Bearbeiten und Anpassen des Programms zu ermöglichen. In derBetriebssystemumgebung vonMicrosoft wird auch die BezeichnungMakro verwendet. Häufig verzichten Skripte aufgrafische Benutzeroberflächen oder umfangreiche Einstellungsmöglichkeiten, oft werden Anpassungen stattdessen direkt im Quellcode vorgenommen. Statt viele Funktionen in einem großen Programm zu bündeln, werden bei Skripten nicht selten einzelne, kleine Programme verfasst, die sich auch unabhängig voneinander ausführen lassen.
Häufig vorhandene Merkmale sind:
Bei einigen Skriptsprachen kann der Programmcode (ebenso wie andere Daten) durch das Programm selbst manipuliert werden; das macht jene Sprachen besonders flexibel.
Die Anwendungsgebiete und Eigenschaften konventioneller Programmiersprachen und Skriptsprachen überschneiden sich mittlerweile stark (siehe hierzu den AbschnittAbgrenzung), weshalb eine strikte Trennung zwischen konventionellen Programmiersprachen und Skriptsprachen nur selten möglich ist.
Ausarchitektonischer Sicht werden Skriptsprachen häufig verwendet, um bestehendeKomponenten in einemAnwendungsprogramm zu verbinden bzw. aufzurufen. Die Komponenten selbst werden in einer komplexeren Programmiersprache entwickelt. Beispiel dafür ist einShellskript, das externe Programme aufruft. Diese Programme sind im Allgemeinen in verschiedenen Programmiersprachen entwickelt. Ein anderes Beispiel ist die SpracheBPEL, die verwendet wird, umWebservices zu beschreiben, die in verschiedenen Programmiersprachen entwickelt werden können.
Obwohl Skriptsprachen anfangs nur für kleinere Automatisierungen verwendet wurden, können einige moderne Skriptsprachen auch für aufwendige Projekte genutzt werden.[1] Durch Verbesserungen in den Interpretern wurde der Geschwindigkeitsunterschied zu statischen Sprachen verringert; zusammen mit dem Fortschritt derRechenleistung ergibt sich vielfach eine akzeptable Ausführungsgeschwindigkeit, die früher nur mitkompilierten Programmen zu erreichen war.
Skriptsprachen werden oft mit interpretierten Sprachen in Verbindung gebracht, allerdings wird inzwischen auchJust-in-Time-Kompilierung angewendet. Skriptsprachen wieJavaScript sind daher nicht mehr rein interpretierte Sprachen, sondern können zusätzlich durch JIT-Kompilierer während der Laufzeit optimiert werden[2].
Eine klare Abgrenzung wird außerdem erschwert, da konventionelle Programmiersprachen ebenfalls als Skriptsprachen eingesetzt werden können. DieSpiel-EngineUnity erlaubt etwa den Einsatz derahead-of-time kompilierten SpracheC#[3].
Manche Skriptsprachen sind von denKommandozeileninterpretern der Betriebssysteme abgeleitet. Die Interpreter sind vorrangig für interaktive Benutzung, d. h. für die Eingabe von Kommandos, ausgelegt. Die Eingabesprache wird um Variablen, arithmetische Ausdrücke, Kontrollstrukturen (if,while) und anderes erweitert und ermöglicht so die Automatisierung von Aufgaben (z. B. bei derunbeaufsichtigten Installation), indem „kleine Programme“ in Dateien geschrieben werden. Diese Dateien können dann vom Interpreter ausgeführt werden. Die Dateien nennt man unter dem BetriebssystemUnixShellskripte (ausgeführt von einer derUnix-Shellssh,csh …) oder unterDOS undWindows auchStapelverarbeitungsdateien oderBatch-Skripte (ausgeführt vonCOMMAND.COM undcmd.exe).
Abzugrenzen sind Kommandozeileninterpreter von interaktiven Sprachen (wie z. B.Lisp,Python,Tcl oderPerl imDebugger), die zum Testen und Debuggen interaktive Programmabschnitte ausführen können, aber nicht so eng im Betriebssystem integriert sind.
Skriptsprachen können auch inAnwendungsprogrammen zur Automatisierung von Aufgaben oder durch Erweiterung der Fähigkeiten des Programms dienen. Teilweise wird auch ein Teil der Funktionalität des Programms selbst in dieser Skriptsprache realisiert. Somit können Anwender die Funktionalität eines solchen Programms schnell mit neuen Funktionen erweitern oder bestehende abändern, ohne das Programm selbst umzuschreiben. Diese Erweiterungen können selbst so weitreichend sein, dass das Programm völlig neue Aufgaben erledigt, die mit dem vorherigen Programm – aus Anwendersicht – nichts mehr gemeinsam haben. So wurden aus dem Texteditor Emacs auch ein E-Mail-Programm (Wanderlust[4]) oder ein Webbrowser (Emacs-W3[5]).
Im Gegensatz zuPlug-ins sind Skripte bzw. Makros wesentlich flexibler und werden vor allem für kleine Automatisierungen angewendet.
Für dasWeb werden Skriptsprachen häufig verwendet, umdynamische Webseiten undWebanwendungen zu erstellen. Dies geschieht zum Beispiel bei denWikis, beiForen,Gästebüchern und beiOnlinegeschäften. Dabei werdenserverseitige undclientseitige Skriptsprachen eingesetzt.
- JavaScript – kann z. B. mitNode.js auch serverseitig genutzt werden
- Perl – erste Skriptsprache, die weite Verbreitung in Webservern fand
- PHP – die verbreitetste Skriptsprache auf Webservern; wurde direkt für diese Aufgabe konzipiert
- Python – kann mit einem Webserver verbunden oder mit einem eigenständigen Webserver genutzt werden
- Ruby – wird entweder über CGI oder mit mod_ruby ausgeführt, zunehmend auch unter Benutzung vonRuby on Rails
- VBScript inASP
- JavaScript (standardisiert alsECMAScript), wird von allen modernen Browsern unterstützt
- CoffeeScript – wird nach JavaScript transkompiliert
- TypeScript – wird nach JavaScript transkompiliert
Skriptsprachen können auch von anderen Programmen getrennt von ihrem Interpreter ausgeführt werden. Einige dieser sind für Spezialaufgaben konzipiert, andere sind allgemein verwendbare Sprachen. Diese Sprachen haben die für umfangreiche Programmprojekte notwendigen Konzepte wie Namensräume und Kapselung und werden deshalb nicht selten für größereAnwendungen verwendet.
- awk – Textprozessor (Listengenerator) unter Unix
- GLE – Graphics Layout Engine, Skriptsprache zur Erzeugung von Grafiken und Schaubildern
- Perl – Programmiersprache mit erweiterten Textprozessorfähigkeiten
- PHP – ursprünglich für die Entwicklung von Webanwendungen entworfen
- Python – teilweise objektorientierte Programmiersprache
- REBOL – Programmiersprache von Carl Sassenrath
- REXX – Skriptsprache von IBM
- Ruby – objektorientierte Programmiersprache
- Tcl – universelle Skriptsprache mit erweiterten Textprozessorfähigkeiten und grafischem ToolkitTk
| Sprache | Paradigmen | Erscheinungsjahr | Entwickler | Typisierung | WichtigeImplementierungen | Lizenz |
|---|
| Groovy | objektorientiert,deklarativ,imperativ | 2003 | The Groovy Project,Apache Software Foundation | stark,statisch,dynamisch | - | Apache-Lizenz 2 (Open Source) |
| JavaScript | objektorientiert,funktional,imperativ | 1995 | Brendan Eich | schwach,dynamisch | SpiderMonkey,Rhino,SquirrelFish,V8,Nashorn | - |
| Python | objektorientiert,funktional,imperativ | 1991 | Python Software Foundation,Guido van Rossum | stark,dynamisch | CPython,Jython,IronPython,PyPy | Python-Software-Foundation-Lizenz[6] |
| Scala | objektorientiert,funktional,imperativ | 2003 | École polytechnique fédérale de Lausanne unter Leitung vonMartin Odersky | stark,statisch | - | Scala,[7]BSD-ähnlich |
| PHP | objektorientiert,funktional,imperativ | 1995 | The PHP Group | schwach,dynamisch | Zend Engine,HHVM,Phalanger (Compiler) | PHP-Lizenz und andere, teilweise proprietär |
| Ruby | objektorientiert,funktional,imperativ | 1995 | Yukihiro Matsumoto | stark,dynamisch | MRI / CRuby (YARV),JRuby,Rubinius(weitere) | 2-clause BSD und eigene (sieheNutzungsbedingungen) |
| Tcl | objektorientiert,funktional,imperativ | 1988 | John Ousterhout | schwach,dynamisch | ActiveTcl,Jim Tcl | BSD-Lizenz |
- ↑Visual Studio Code. Code Editor von Microsoft, der in TypeScript entwickelt wird. Microsoft, 24. Juli 2025, abgerufen am 24. Juli 2025.
- ↑Just-In-Time Compilation (JIT) - Glossary | MDN. 11. Juli 2025, abgerufen am 24. Juli 2025 (amerikanisches Englisch): „JIT is commonly used in modern web browsers to optimize the performance of JavaScript code.“
- ↑Unity Technologies: Unity - Manual: Creating scripts. Abgerufen am 24. Juli 2025 (englisch): „Scripts allow you to customize and extend the capabilities of your applicaton with C# code.“
- ↑Yuuichi Teranishi: Wanderlust – Yet Another Message Interface on Emacsen. In: gohome.org. 26. März 2005, archiviert vom Original am 4. Juli 2014; abgerufen am 16. August 2014 (englisch).
- ↑4. Emacs-W3. In: TLDP. Abgerufen am 30. Mai 2019 (englisch).
- ↑History and License. In: python.org. Abgerufen am 7. September 2016 (englisch).
- ↑Scala License. In: scala-lang.org. Abgerufen am 7. September 2016 (englisch).
- ↑Varargs. Java Programming Language – Enhancements inJDK 5. In: docs.oracle.com. Oracle, abgerufen am 7. September 2016 (englisch).