Skriptsprache: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


== Beschreibung ==
== Beschreibung ==
'''Skriptsprachen''' (auch '''Scriptsprachen''') sind [[Programmiersprache]]n, 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 [[Deklaration (Programmierung)|Deklarationszwang]] von Variablen meist verzichtet – vorteilhaft zur schnellen Erstellung von kleinen Programmen (siehe auch [[Prototyping (Softwareentwicklung)|Prototyping]]), bei großen hingegen von Nachteil, etwa wegen der fehlenden Überprüfungsmöglichkeit von [[Tippfehler]]n in Variablennamen.
'''Skriptsprachen''' (auch '''Scriptsprachen''') sind [[Programmiersprache]]n, 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 [[Deklaration (Programmierung)|Deklarationszwang]] von Variablen meist verzichtet – vorteilhaft zur schnellen Erstellung von kleinen Programmen (siehe auch [[Prototyping (Softwareentwicklung)|Prototyping]]), bei großen hingegen von Nachteil, etwa wegen der fehlenden Überprüfungsmöglichkeit von [[Tippfehler]]n in Variablennamen


[[Computerprogramm|Programme]], die in Skriptsprachen geschrieben sind, werden auch ''Skripte'' oder ''Scripts'' genannt, während in der [[Betriebssystem]]umgebung von [[Microsoft]] meistens die Bezeichnung [[Makro]] verwendet wird. Skripte werden fast ausschließlich in Form von [[Quelltext]]dateien ausgeliefert, um so ein einfaches Bearbeiten und Anpassen des Programms zu ermöglichen.
[[Computerprogramm|Programme]], die in Skriptsprachen geschrieben sind, werden auch ''Skripte'' oder ''Scripts'' genannt, während in der [[Betriebssystem]]umgebung von [[Microsoft]] meistens die Bezeichnung [[Makro]] verwendet wird
* Skripte werden fast ausschließlich in Form von [[Quelltext]]dateien ausgeliefert, um so ein einfaches Bearbeiten und Anpassen des Programms zu ermöglichen


== Merkmale ==
== Merkmale ==
Häufig vorhandene Merkmale sind:
Häufig vorhandene Merkmale sind:
* implizit deklarierte [[Variable (Programmierung)|Variablen]] (dazu gehören auch dynamische Funktionsnamen),
* implizit deklarierte [[Variable (Programmierung)|Variablen]] (dazu gehören auch dynamische Funktionsnamen)
* [[dynamische Typisierung]],
* [[dynamische Typisierung]]
* automatische [[Speicherverwaltung]], primär [[automatische Speicherbereinigung]],
* automatische [[Speicherverwaltung]], primär [[automatische Speicherbereinigung]]
* dynamische [[Klasse (Objektorientierung)|Klassenzugehörigkeit]] oder [[Prototypenbasierte Programmierung|prototypenbasierte]] [[Vererbung (Programmierung)|Vererbung]],
* dynamische [[Klasse (Objektorientierung)|Klassenzugehörigkeit]] oder [[Prototypenbasierte Programmierung|prototypenbasierte]] [[Vererbung (Programmierung)|Vererbung]]
* unmittelbare Ausführung durch Interpretation des Quelltextes ohne getrennte Übersetzungsphase.
* 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.
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|Abgrenzung]]), weshalb eine strikte Trennung zwischen konventionellen Programmiersprachen und Skriptsprachen nur selten möglich ist.
Die Anwendungsgebiete und Eigenschaften konventioneller Programmiersprachen und Skriptsprachen überschneiden sich mittlerweile stark (siehe hierzu den Abschnitt [[#Abgrenzung|Abgrenzung]]), weshalb eine strikte Trennung zwischen konventionellen Programmiersprachen und Skriptsprachen nur selten möglich ist


== Abgrenzung ==
== Abgrenzung ==
Aus [[Softwarearchitektur|architektonischer]] Sicht werden Skriptsprachen häufig verwendet, um bestehende [[Softwarekomponente|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 [[WS-Business Process Execution Language|BPEL]], die verwendet wird, um [[Webservice]]s zu beschreiben, die in verschiedenen Programmiersprachen entwickelt werden können.
Aus [[Softwarearchitektur|architektonischer]] Sicht werden Skriptsprachen häufig verwendet, um bestehende [[Softwarekomponente|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 [[WS-Business Process Execution Language|BPEL]], die verwendet wird, um [[Webservice]]s 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 [[Compiler|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.
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 [[Compiler|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 ==
== Kategorien ==
=== Kommandozeileninterpreter ===
=== Kommandozeileninterpreter ===
Manche Skriptsprachen sind von den [[Kommandozeileninterpreter]]n 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 [[Unbeaufsichtigte Installation#Installation von einzelnen Programmen|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]] [[Shellskript]]e (ausgeführt von einer der [[Unix-Shell]]s ''sh'', ''csh'' …) oder unter [[Disk Operating System|DOS]] und [[Windows]] auch ''[[Stapelverarbeitungsdatei]]en'' oder ''Batch-Skripte'' (ausgeführt von ''[[COMMAND.COM]]'' und ''[[cmd.exe]]'').
Manche Skriptsprachen sind von den [[Kommandozeileninterpreter]]n 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 [[Unbeaufsichtigte Installation#Installation von einzelnen Programmen|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]] [[Shellskript]]e (ausgeführt von einer der [[Unix-Shell]]s ''sh'', ''csh'' …) oder unter [[Disk Operating System|DOS]] und [[Windows]] auch ''[[Stapelverarbeitungsdatei]]en'' oder ''Batch-Skripte'' (ausgeführt von ''[[COMMAND.COM]]'' und ''[[cmd.exe]]'')


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


==== Beispiele ====
==== Beispiele ====
Zeile 35: Zeile 51:
* [[C-Shell]] (''csh'') – [[Berkeley Software Distribution|BSD]] Shell (Unix-Versionen aus Berkeley)
* [[C-Shell]] (''csh'') – [[Berkeley Software Distribution|BSD]] Shell (Unix-Versionen aus Berkeley)
* [[cmd.exe]] – Kommandointerpreter von Windows ab [[Windows NT]]
* [[cmd.exe]] – Kommandointerpreter von Windows ab [[Windows NT]]
* [[PowerShell]] – Kommandointerpreter u. a. für Windows
* [[PowerShell]] – Kommandointerpreter u. a. für Windows
* [[TACL]] – Kommandointerpreter von [[Tandem Computers|Tandem]]-Systemen
* [[TACL]] – Kommandointerpreter von [[Tandem Computers|Tandem]]-Systemen
* [[Digital Command Language]] (kurz '''DCL''') – Kommandosprache für [[Virtual Memory System|VMS]]-Plattformen
* [[Digital Command Language]] (kurz '''DCL''') – Kommandosprache für [[Virtual Memory System|VMS]]-Plattformen
Zeile 47: Zeile 63:
* [[Sleep (Programmiersprache)|Sleep]] – In [[Java (Programmiersprache)|Java]] geschriebene Skriptsprache zum Einbinden in Java-Programme
* [[Sleep (Programmiersprache)|Sleep]] – In [[Java (Programmiersprache)|Java]] geschriebene Skriptsprache zum Einbinden in Java-Programme
* [[Squirrel (Programmiersprache)|Squirrel]] – durch Lua inspirierte Skriptsprache mit [[C (Programmiersprache)|C]]-ähnlicher Syntax
* [[Squirrel (Programmiersprache)|Squirrel]] – durch Lua inspirierte Skriptsprache mit [[C (Programmiersprache)|C]]-ähnlicher Syntax
* [[Tcl]] – Tool Command Language von J. Ousterhout
* [[Tcl]] – Tool Command Language von J. Ousterhout
* [[Visual Basic Script|VBScript]] und [[JScript]] – Standardskriptsprachen von Windows
* [[Visual Basic Script|VBScript]] und [[JScript]] – Standardskriptsprachen von Windows
* [[Windows PowerShell]] – Microsofts Skriptsprache zum Einbinden in [[.NET (Oberbegriff)|.NET]]-Programme
* [[Windows PowerShell]] – Microsofts Skriptsprache zum Einbinden in [[.NET (Oberbegriff)|.NET]]-Programme


=== Skriptsprachen verschiedener Programme ===
=== Skriptsprachen verschiedener Programme ===
Skriptsprachen können auch in [[Anwendungsprogramm]]en 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<ref>http://www.gohome.org/wl/</ref>) oder ein Webbrowser (Emacs-W3<ref>{{Internetquelle |url=https://www.tldp.org/HOWTO/archived/WWW-HOWTO/WWW-HOWTO-4.html |titel=4. Emacs-W3 |werk=[[TLDP]] |sprache=en-US |abruf=2019-05-30}}</ref>).
Skriptsprachen können auch in [[Anwendungsprogramm]]en 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)


Im Gegensatz zu [[Plug-in]]s sind Skripte bzw. Makros wesentlich flexibler und werden vor allem für kleine Automatisierungen angewendet.
Im Gegensatz zu [[Plug-in]]s sind Skripte bzw.&nbsp;Makros wesentlich flexibler und werden vor allem für kleine Automatisierungen angewendet


==== Beispiele ====
==== Beispiele ====
Zeile 66: Zeile 86:
* OpenOffice-Basic – bei OpenOffice enthaltene Basic-Makrosprache, ähnlich VBA bei MS-Office
* OpenOffice-Basic – bei OpenOffice enthaltene Basic-Makrosprache, ähnlich VBA bei MS-Office
* [[QuakeC]] – Skriptsprache des [[Computerspiel]]s ''[[Quake]]''
* [[QuakeC]] – Skriptsprache des [[Computerspiel]]s ''[[Quake]]''
* [[REXX]] – insbesondere unter [[z/VM]] und [[OS/2]] als Makrosprache eingesetzt (z.&nbsp;B. im „Erweiterten Editor“ EPM).
* [[REXX]] – insbesondere unter [[z/VM]] und [[OS/2]] als Makrosprache eingesetzt (z.&nbsp;B.&nbsp;im „Erweiterten Editor“ EPM)
* [[Tcl]] – im [[AOLserver]] eingesetzte Makrosprache
* [[Tcl]] – im [[AOLserver]] eingesetzte Makrosprache
* [[UnrealScript]] – Skriptsprache der [[Unreal Engine]]
* [[UnrealScript]] – Skriptsprache der [[Unreal Engine]]
Zeile 75: Zeile 95:


=== Skriptsprachen im WWW ===
=== Skriptsprachen im WWW ===
Für das [[WWW]] werden Skriptsprachen häufig auf den Servern verwendet, um dynamische Seiten oder ganze [[Webanwendung]]en zu erstellen. Dies geschieht zum Beispiel bei den [[Wiki]]s, bei [[Internetforum|Foren]], [[Gästebuch|Gästebüchern]] und bei [[Elektronischer Handel|Onlinegeschäften]].
Für das [[WWW]] werden Skriptsprachen häufig auf den Servern verwendet, um dynamische Seiten oder ganze [[Webanwendung]]en zu erstellen
* Dies geschieht zum Beispiel bei den [[Wiki]]s, bei [[Internetforum|Foren]], [[Gästebuch|Gästebüchern]] und bei [[Elektronischer Handel|Onlinegeschäften]]


Des Weiteren werden clientseitige Skriptsprachen auch in den [[Webseite]]n selbst eingebunden und in den [[Webbrowser|Browsern]] ausgeführt.
Des Weiteren werden clientseitige Skriptsprachen auch in den [[Webseite]]n selbst eingebunden und in den [[Webbrowser|Browsern]] ausgeführt


==== Beispiele: serverseitig ====
==== Beispiele: serverseitig ====
Zeile 84: Zeile 105:
* [[Python (Programmiersprache)|Python]] – kann mit einem Webserver verbunden oder mit einem eigenständigen Webserver genutzt werden
* [[Python (Programmiersprache)|Python]] – kann mit einem Webserver verbunden oder mit einem eigenständigen Webserver genutzt werden
* [[Ruby (Programmiersprache)|Ruby]] – wird entweder über CGI oder mit mod_ruby ausgeführt, zunehmend auch unter Benutzung von [[Ruby on Rails]]
* [[Ruby (Programmiersprache)|Ruby]] – wird entweder über CGI oder mit mod_ruby ausgeführt, zunehmend auch unter Benutzung von [[Ruby on Rails]]
* [[JavaScript]] – kann z.&nbsp;B. mit [[Node.js]] auch serverseitig genutzt werden
* [[JavaScript]] – kann z.&nbsp;B.&nbsp;mit [[Node.js]] auch serverseitig genutzt werden
* [[Visual Basic Script|VBScript]] in [[Active Server Pages|ASP]]
* [[Visual Basic Script|VBScript]] in [[Active Server Pages|ASP]]


Zeile 95: Zeile 116:


=== Selbständige Skriptsprachen ===
=== 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 [[Anwendungsprogramm|Anwendungen]] verwendet.
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 [[Anwendungsprogramm|Anwendungen]] verwendet


==== Beispiele: spezialisierte Sprachen ====
==== Beispiele: spezialisierte Sprachen ====
Zeile 137: Zeile 160:
| [[Starke Typisierung|stark]], [[Dynamische Typisierung|dynamisch]]
| [[Starke Typisierung|stark]], [[Dynamische Typisierung|dynamisch]]
| [[CPython]], [[Jython]], [[IronPython]], [[PyPy]]
| [[CPython]], [[Jython]], [[IronPython]], [[PyPy]]
| [[Python Software Foundation#Python-Software-Foundation-Lizenz|Python-Software-Foundation-Lizenz]]<ref>[https://www.python.org/psf/license/ Python License]</ref>
| [[Python Software Foundation#Python-Software-Foundation-Lizenz|Python-Software-Foundation-Lizenz]]
|-
|-
| [[Scala (Programmiersprache)|Scala]]
| [[Scala (Programmiersprache)|Scala]]
Zeile 145: Zeile 168:
| [[Starke Typisierung|stark]], [[Statische Typisierung|statisch]]
| [[Starke Typisierung|stark]], [[Statische Typisierung|statisch]]
| -
| -
| Scala,<ref>[http://www.scala-lang.org/node/146 Lizenz]</ref> [[BSD-Lizenz|BSD]]-ähnlich
| Scala, [[BSD-Lizenz|BSD]]-ähnlich
|-
|-
| [[PHP]]
| [[PHP]]
Zeile 175: Zeile 198:
{| class="wikitable sortable" style="text-align:center;"
{| class="wikitable sortable" style="text-align:center;"
|-
|-
! Sprache !! [[Annotation (Programmierung)|Annotationen]] !! [[Anonyme Funktion]] !! [[Pattern Matching]] !! Benannte Parameter !! Optionale Parameter !! [[Currying]] !! Varargs<ref>[http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html Varargs Java]</ref>
! Sprache !! [[Annotation (Programmierung)|Annotationen]] !! [[Anonyme Funktion]] !! [[Pattern Matching]] !! Benannte Parameter !! Optionale Parameter !! [[Currying]] !! Varargs
|-
|-
| [[Groovy]] || x || x || - || (x) || x || x || x
| [[Groovy]] || x || x || - || (x) || x || x || x

Version vom 31. März 2024, 10:34 Uhr

Skriptsprache - Kurzbeschreibung

Beschreibung

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:

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

Skriptsprachen, die als Bibliothek verfügbar sind

Beispiele

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)

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

Beispiele

Skriptsprachen im WWW

Für das WWW werden Skriptsprachen häufig auf den Servern verwendet, um dynamische Seiten oder ganze Webanwendungen zu erstellen

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

Vorlage:Siehe auch

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

Sprache Paradigmen Erscheinungsjahr Entwickler Typisierung Wichtige Implementierungen 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
Scala objektorientiert, funktional, imperativ 2003 École polytechnique fédérale de Lausanne unter Leitung von Martin Odersky stark, statisch - Scala, 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 (siehe Nutzungsbedingungen)
Tcl objektorientiert, funktional, imperativ 1988 John Ousterhout schwach, dynamisch ActiveTcl, Jim Tcl BSD-Lizenz

Vergleich syntaktischer Möglichkeiten in Skriptsprachen

Sprache Annotationen Anonyme Funktion Pattern Matching Benannte Parameter Optionale Parameter Currying Varargs
Groovy x x - (x) x x x
JavaScript - x - x x x x
Python x x - x x (x) x
Scala x x x x x x x
PHP - x - x x (x) x
Ruby - x - (x) x x x
Tcl - x x (x) x (x) x


Anhang

Siehe auch


Links

Weblinks
  1. https://de.wikipedia.org/wiki/Skriptsprache
  2. Overview of Scripting Languages (SAP Help Portal)
  3. Difference Between Programming, Scripting, and Markup Languages