Skriptsprache

Skriptsprachen (auch Scriptsprachen) sind Programmiersprachen, die über einen Interpreter ausgeführt werden. Sie verzichten manchmal auf Sprachelemente, deren Nutzen erst bei der Bearbeitung komplexerer Aufgaben zum Tragen kommt. So wird etwa in Skriptsprachen auf den Deklarationszwang von Variablen meist verzichtet – vorteilhaft zur schnellen Erstellung von kleinen Programmen (siehe auch Prototyping), bei großen hingegen von Nachteil, etwa wegen der fehlenden Überprüfungsmöglichkeit von Tippfehlern in Variablennamen.

Programme, die in Skriptsprachen geschrieben sind, werden auch Skripte oder Scripts genannt, während in der Betriebssystemumgebung von Microsoft meistens die Bezeichnung Makro verwendet wird. Skripte werden fast ausschließlich in Form von Quelltextdateien ausgeliefert, um so ein einfaches Bearbeiten und Anpassen des Programms zu ermöglichen.

Merkmale 
Häufig vorhandene Merkmale sind:
 implizit deklarierte Variablen (dazu gehören auch dynamische Funktionsnamen),
 dynamische Typisierung,
 automatische Speicherverwaltung, vor allem automatische Speicherbereinigung,
 dynamische Klassenzugehörigkeit oder prototypenbasierte Vererbung,
 unmittelbare Ausführung durch Interpretation des Quelltextes ohne getrennte Übersetzungsphase.

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 Abschnitt Abgrenzung), weshalb eine strikte Trennung zwischen konventionellen Programmiersprachen und Skriptsprachen nur selten möglich ist.

Abgrenzung 
Aus architektonischer Sicht werden Skriptsprachen häufig verwendet, um bestehende Komponenten in einem Anwendungsprogramm zu verbinden bzw. aufzurufen. Die Komponenten selbst werden in einer komplexeren Programmiersprache entwickelt. Beispiel dafür ist ein Shellskript, das externe Programme aufruft. Diese Programme sind im Allgemeinen in verschiedenen Programmiersprachen entwickelt. Ein anderes Beispiel ist die Sprache BPEL, die verwendet wird, um Webservices zu beschreiben, die in verschiedenen Programmiersprachen entwickelt werden können.

Wurden Skriptsprachen anfangs nur für kleinere Automatisierungen verwendet, so werden sie heute auch in Bereichen eingesetzt, die früher den klassischen Programmiersprachen vorbehalten waren. Durch Verbesserungen in den Interpretern wurde der Geschwindigkeitsunterschied zu statischen Sprachen verringert; zusammen mit dem Fortschritt der Rechenleistung ergibt sich vielfach eine akzeptable Ausführungsgeschwindigkeit, die früher nur mit kompilierten Programmen zu erreichen war. Darüber hinaus können in einigen der selbständigen Programmiersprachen Variablen zur besseren Fehlerüberprüfung optional deklariert werden. Mit modernen Skriptsprachen können daher manche Anwendungen, etwa zur Auswertung von Daten, vollständig unter Verzicht auf externe Programme implementiert werden.

Kategorien

Kommandozeileninterpreter 
Manche Skriptsprachen sind von den Kommandozeileninterpretern 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 der unbeaufsichtigten Installation), indem „kleine Programme“ in Dateien geschrieben werden. Diese Dateien können dann vom Interpreter ausgeführt werden. Die Dateien nennt man unter dem Betriebssystem Unix Shellskripte (ausgeführt von einer der Unix-Shells sh, csh …) oder unter DOS und Windows auch Stapelverarbeitungsdateien oder Batch-Skripte (ausgeführt von COMMAND.COM und cmd.exe).

Abzugrenzen sind Kommandozeileninterpreter von interaktiven Sprachen (wie z. B. Lisp, Python, Tcl oder Perl im Debugger), die zum Testen und Debuggen interaktive Programmabschnitte ausführen können, aber nicht so eng im Betriebssystem integriert sind.

Beispiele 
 Bourne-Shell (sh) – Unix-Bourne-Shell (die klassische Unix-Shell)
 bash – GNU-Ersatz und Erweiterung der sh-Shell
 Kornshell (ksh) – Weiterentwicklung der klassischen sh-Shell
 C-Shell (csh) – BSD Shell (Unix-Versionen aus Berkeley)
 cmd.exe – Kommandointerpreter von Windows ab Windows NT
 PowerShell – Kommandointerpreter u. a. für Windows
 TACL – Kommandointerpreter von Tandem-Systemen
 Digital Command Language (kurz DCL) – Kommandosprache für VMS-Plattformen

Skriptsprachen, die als Bibliothek verfügbar sind

Beispiele 
 GNU Guile – GNU Extension Language
 Lua – Skriptsprache zum Einbinden in Programme, oft in Computerspielen zu finden
 AngelScript – Skriptsprache zum Einbinden in Programme, oft in Computerspielen zu finden
 S-Lang – plattformunabhängige Skriptsprache zum Einbinden in Programme
 Sleep – In Java geschriebene Skriptsprache zum Einbinden in Java-Programme
 Squirrel – durch Lua inspirierte Skriptsprache mit C-ähnlicher Syntax
 Tcl – Tool Command Language von J. Ousterhout
 VBScript und JScript – Standardskriptsprachen von Windows
 Windows PowerShell – Microsofts Skriptsprache zum Einbinden in .NET-Programme

Skriptsprachen verschiedener Programme 

Skriptsprachen können auch in Anwendungsprogrammen 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) oder ein Webbrowser (Emacs-W3).

Im Gegensatz zu Plug-ins sind Skripte bzw. Makros wesentlich flexibler und werden vor allem für kleine Automatisierungen angewendet.

Beispiele 
 AppleScript – Skriptsprache von macOS und Mac OS Classic
 AutoHotkey – eine Skriptsprache für Windows und Windows-Programme, kompilierbar
 AutoIt – eine Alternative zum Windows Script Host
 Emacs Lisp – Skriptsprache des Emacs-Editors
 Google Apps Script – zur programmierten Automatisierung von Google Workspace Anwendungen
 LPC – C ähnliche Sprache für MUDs
 Python – verschiedene, vor allem Open Source, Programme (z. B. LibreOffice, Blender und GIMP) lassen sich damit skripten
 OpenOffice-Basic – bei OpenOffice enthaltene Basic-Makrosprache, ähnlich VBA bei MS-Office
 QuakeC – Skriptsprache des Computerspiels Quake
 REXX – insbesondere unter z/VM und OS/2 als Makrosprache eingesetzt (z. B. im „Erweiterten Editor“ EPM).
 Tcl – im AOLserver eingesetzte Makrosprache
 UnrealScript – Skriptsprache der Unreal Engine
 Vim-Skriptsprache
 VBA (Visual Basic for Applications) – Skriptsprache für Microsoft-Produkte; ist auch kompilierbar
 VBScript – Standardskriptsprache von Windows, ab Windows 98
 JScript – Standardskriptsprache von Windows, ab Internet Explorer 3.0 (Windows 3.1, NT 3.5)

Skriptsprachen im WWW 
Für das WWW werden Skriptsprachen häufig auf den Servern verwendet, um dynamische Seiten oder ganze Webanwendungen zu erstellen. Dies geschieht zum Beispiel bei den Wikis, bei Foren, Gästebüchern und bei Onlinegeschäften.

Des Weiteren werden clientseitige Skriptsprachen auch in den Webseiten selbst eingebunden und in den Browsern ausgeführt.

Beispiele: serverseitig 
 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 von Ruby on Rails
 JavaScript – kann z. B. mit Node.js auch serverseitig genutzt werden
 VBScript in ASP

Beispiele: clientseitig 
 JavaScript (standardisiert als ECMAScript), wird von allen modernen Browsern unterstützt
 CoffeeScript – wird nach JavaScript transkompiliert
 TypeScript – wird nach JavaScript transkompiliert

Selbständige Skriptsprachen 
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ößere Anwendungen verwendet.

Beispiele: spezialisierte Sprachen 
 awk – Textprozessor (Listengenerator) unter Unix
 GLE – Graphics Layout Engine, Skriptsprache zur Erzeugung von Grafiken und Schaubildern

Beispiele: allgemein verwendbare Sprachen 
 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 Toolkit Tk

Vergleich verschiedener Skriptsprachen

Vergleich syntaktischer Möglichkeiten in Skriptsprachen

Weblinks 

 Overview of Scripting Languages (SAP Help Portal)
 Difference Between Programming, Scripting, and Markup Languages

Einzelnachweise 

 
Skript