Definition

Skriptsprache

Was ist eine Skriptsprache?

Eine Skriptsprache ist eine Art von Programmiersprache, bei der die Anweisungen zur Laufzeit einzeln interpretiert werden. Bei konventionelleren Programmiersprachen wie C und C++ wird der Code im Voraus und in seiner Gesamtheit kompiliert. Skriptsprachen haben einen viel einfacheren Ansatz, wodurch sie leichter zu erlernen und schneller zu programmieren sind. Allerdings sind sie nicht so robust und effizient wie die stärker strukturierten konventionellen Sprachen.

Was ist der Unterschied zwischen Skriptsprachen und Programmiersprachen?

Skriptsprachen werden oft mit Programmiersprachen verglichen, als wären sie die entgegengesetzten Seiten derselben Medaille. Tatsächlich sind Skriptsprachen aber eine Teilmenge der Programmiersprachen. Alle Skriptsprachen sind Programmiersprachen, aber nicht alle Programmiersprachen sind Skriptsprachen. Meistens dienen solche Vergleiche dazu, Skriptsprachen von herkömmlichen Programmiersprachen zu unterscheiden.

Bei herkömmlichen Sprachen wird der Quellcode vor der Ausführung vollständig kompiliert. Obwohl die Sprachen bei der Vorbereitung des Codes für die Verarbeitung unterschiedlich vorgehen, beginnen sie in der Regel mit menschenlesbarem Quellcode, kompilieren ihn in einen Code auf niedrigerer Ebene und wandeln ihn schließlich in Maschinencode um. Der Maschinencode ist spezifisch für die Plattformarchitektur, auf der er läuft. Der Maschinencode wird dem Prozessor manchmal in Form einer ausführbaren Datei übergeben. Neben dem Compiler kann der Vorbereitungsprozess auch einen Assembler, Linker, Bytecode-Interpreter oder andere Komponenten umfassen.

Im Gegensatz zum herkömmlichen Entwicklungsansatz werden Skriptsprachen in der Regel zur Laufzeit an einen Übersetzer übergeben. Der Übersetzer wandelt das Skript in Maschinencode um und gibt es an den Prozessor weiter. Das Skript bleibt in seiner ursprünglichen, für den Menschen lesbaren Form, bis der Übersetzer die Anweisungen konvertiert und zur Verarbeitung weiterleitet.

Die folgende Abbildung gibt einen konzeptionellen Überblick über den Vergleich zwischen konventionellen Programmiersprachen und Skriptsprachen bei der Vorbereitung des Maschinencodes. Der konventionelle Code wird zunächst dem Compiler vorgelegt, der ihn in Objektcode, Assemblercode oder Zwischencode wie Bytecode umwandelt. Im letzteren Fall wird der Code dann zur Laufzeit an einen Interpreter übergeben.

Abbildung 1: Ein Vergleich zwischen der Funktionsweise von Skriptsprachen und herkömmlichen Programmiersprachen.
Abbildung 1: Ein Vergleich zwischen der Funktionsweise von Skriptsprachen und herkömmlichen Programmiersprachen.

Wie die Abbildung zeigt, gehen die konventionellen Programmiersprachen bei der Vorbereitung des Codes unterschiedlich vor. Handelt es sich um eine konventionelle Sprache wie C oder C++, wird der Code zunächst an den Compiler zur anfänglichen Umwandlung übergeben. Der Compiler wandelt ihn entweder in Objektcode um und gibt ihn an den Linker weiter, oder er wandelt ihn in Assemblercode um und gibt ihn an den Assembler weiter. Der Assembler wandelt ihn dann in Objektcode um und gibt ihn an den Linker weiter, der den ausführbaren Code erzeugt.

Allerdings folgen nicht alle konventionellen Sprachen diesem Ansatz. Bei Sprachen wie Java oder C# wandelt der Compiler den Code in eine Zwischensprache um, die zur Laufzeit an einen auf einer virtuellen Maschine basierenden Interpreter weitergegeben wird. Der Interpreter generiert dann den Maschinencode und übergibt ihn an den Prozessor.

Dies sind nicht die einzigen Methoden, mit denen herkömmliche Programmiersprachen kompiliert und in Maschinencode übersetzt werden. Die in der Abbildung gezeigten Methoden helfen jedoch zu verdeutlichen, wie sich solche Sprachen von Skriptsprachen unterscheiden. Eine Skriptsprache, wie zum Beispiel Python oder Hypertext Preprocessor (PHP), bleibt bis zur Laufzeit in ihrer Rohform und wird dann einem Übersetzer übergeben. Der Übersetzer interpretiert die Befehle einen nach dem anderen und wandelt sie in Maschinencode um, der vom Prozessor verwendet werden kann.

Da Skriptsprachen nicht im Voraus kompiliert werden, sind sie möglicherweise nicht so leistungsfähig wie herkömmliche Sprachen. Allerdings haben sich Skriptsprachen und Übersetzungssoftware im Laufe der Zeit stetig verbessert, so dass einige der Bedenken hinsichtlich der Leistung entkräftet werden konnten.

Skriptsprachen und herkömmliche Programmiersprachen unterscheiden sich auch in anderer Hinsicht. Zum Beispiel sind Skriptsprachen von anderen Programmen abhängig. Sie können nicht wie herkömmliche Sprachen zur Erstellung unabhängiger Anwendungen verwendet werden. Darüber hinaus bieten Skriptsprachen in der Regel weniger direkte Kontrolle über die Hardware. Mit einer herkömmlichen Sprache können Programmierer den Prozessor, den Speicher und die Ein- und Ausgaberessourcen leichter verwalten.

Skriptsprachen sind außerdem in der Regel lose typisiert. Das bedeutet, dass der Typ einer Variablen nicht im Code definiert ist, sondern zur Laufzeit bestimmt wird und vom Wert der Variablen abhängt. Außerdem kann sich der Typ einer Variablen manchmal während der Ausführung des Skripts ändern. Das folgende Python-Skript definiert beispielsweise zunächst eine Variable mit dem Namen Landschaft und weist der Variablen eine kurze Liste mit zwei Werten zu.

# Landschaft-Variable erstellen und Wert und Typ zurückgeben

Landschaft = ['Berge', 'Bäume']
print('\nDer Wert für "Landschaft" ist', Landschaft)
print('Der Typ für " Landschaft " ist', type(Landschaft))

# den Wert von Landschaft [1] der Variablen Landschaft zuweisen
Landschaft = Landschaft [1]
print('\nDer Wert für " Landschaft " ist jetzt', Landschaft)
print('Der Typ für " Landschaft " ist jetzt', type(Landschaft), '\n')

Nach der Definition der Variablen gibt das Skript den ursprünglichen Wert der Variablen und den Typ der Variablen aus. Dann weist das Skript der Variablen den zweiten Wert der Liste, Bäume, zu. Anschließend gibt das Skript den neuen Wert und den Datentyp der Variablen aus. Das folgende Ergebnis zeigt die Ausgabe der einzelnen Druckbefehle.

Der Wert für " Landschaft " ist ['Berge', 'Bäume']
Der Typ für " Landschaft " ist <class 'list'>

Der Wert für " Landschaft " ist jetzt Bäume
Der Typ für " Landschaft " ist jetzt <class 'str'>

Herkömmliche Programmiersprachen sind stark typisiert, was bedeutet, dass der Variablen bei ihrer Definition ein Typ zugewiesen wird. Auf diese Weise werden Fehler eher während der Kompilierung als zur Laufzeit abgefangen, was zu zuverlässigerem Code führt. Stark typisierte Variablen bedeuten auch, dass sie nicht versehentlich in den falschen Typ geändert werden können.

Da sich Skriptsprachen und ihre Übersetzer im Laufe der Zeit weiterentwickelt haben, sind die Grenzen zwischen dem, was als Skriptsprache klassifiziert werden sollte und was nicht, immer fließender geworden. Heute sind viele der Meinung, dass die Klassifizierung nicht durch die Sprache selbst bestimmt werden sollte, sondern vielmehr durch die Art und Weise, wie die Sprache verwendet wird.

Wie werden Skriptsprachen verwendet?

Skriptsprachen werden oft als serverseitig oder clientseitig kategorisiert. Serverseitige Skriptsprachen – wie PHP, Ruby und Python – werden auf dem Host-Server verarbeitet. Clientseitige Skriptsprachen – wie JavaScript, Hypertext Markup Language (HTML) und Cascading Style Sheets (CSS) – werden auf dem Computer des Benutzers verarbeitet, normalerweise in einem Browser. Clientseitige Skripte verringern die Server- und Netzwerklast. Serverseitige Skripte sind jedoch für den Benutzer nicht sichtbar und gelten im Allgemeinen als sicherer.

Skriptsprachen werden häufig in Webanwendungen eingesetzt, um deren Funktionen zu erweitern und sie dynamischer zu gestalten. Obwohl viele Skripte auf dem Server verarbeitet werden, wird die clientseitige Skripterstellung – insbesondere JavaScript – in der Webentwicklung immer noch häufig verwendet. Aus diesem Grund müssen die Benutzer von Websites ihre Browser oft so konfigurieren, dass clientseitige Skripte ausgeführt werden können. Andernfalls funktionieren bestimmte Funktionen der Website möglicherweise nicht.

Programmierer setzen Skriptsprachen auch in anderen Bereichen ein, zum Beispiel für Multimedia und Spiele. Außerdem können sie Skripte verwenden, um Aufgaben innerhalb ihrer Anwendungen zu automatisieren oder um unterschiedliche Systemkomponenten miteinander zu verbinden.

Wenn eine Skriptsprache zum Verbinden von Komponenten verwendet wird, wird sie manchmal als Glue Language bezeichnet. Glue-Sprachen bieten oft native Unterstützung für bestimmte aggregierte Datentypen wie zum Beispiel Arrays. Sie können auch die Garbage Collection automatisieren, um Speicherplatz zurückzugewinnen und Speicherlecks zu verhindern.

Eine weitere häufige Anwendung von Skriptsprachen ist die Systemverwaltung. IT-Teams können Skripts verwenden, um Routinevorgänge zu automatisieren und einmalige Aufgaben auszuführen. Das folgende Python-Skript durchläuft beispielsweise ein Verzeichnis auf einem macOS-Computer in einer Schleife und gibt eine Liste der Unterverzeichnisse sowie die Anzahl der darin enthaltenen Elemente zurück.

# importiere das os-Modul
import os

# Zielverzeichnis definieren
path = '/users/mac3/documents/testdata/'
print('\npath:', path, '\n')

# Unterverzeichnisse im Zielverzeichnis abrufen
for item in os.listdir(path):
 sub = os.path.join(path, item)

 # nur Unterverzeichnisse zurückgeben
 if os.path.isdir(sub):
 size = len(os.listdir(sub))

 # Informationen über jedes Unterverzeichnis ausgeben
 print(item + ': ' + str(size) + ' items')

print('\n')

In diesem Beispiel gibt das Skript die folgenden Ergebnisse zurück, die den Namen des Zielverzeichnisses, gefolgt von den Namen der Unterverzeichnisse und der Anzahl der Elemente in jedem Verzeichnis enthalten.

path: /users/mac3/documents/testdata/

TestFolderH: 5 items
TestFolderA: 21 items
TestFolderF: 18 items
TestFolderG: 15 items
TestFolderI: 21 items
TestFolderK: 20 items
TestFolderL: 30 items
TestFolderE: 14 items
TestFolderB: 20 items
TestFolderC: 9 items
TestFolderD: 10 items
TestFolderM: 18 items
TestFolderJ: 0 items

Natürlich können Skripte weitaus komplexer sein, was besonders für die Automatisierung von Aufgaben nützlich sein kann. Programmierer verwenden Skriptsprachen auch für Berichte, Statistiken, Softwareerweiterungen, Textverarbeitung, Backend-Programmierung, eingebettete Systeme, Softwaretests und zahlreiche andere Anwendungsfälle.

Was sind Beispiele für Skriptsprachen?

Skriptsprachen sind im Allgemeinen einfacher zu handhaben als herkömmliche Programmiersprachen. Der Code ist oft einfacher zu lesen, zu schreiben und zu pflegen. Aus diesem Grund gibt es inzwischen eine breite Palette von Skriptsprachen, darunter die folgenden Beispiele:

  • AppleScript. Eine von Apple entwickelte Skriptsprache zur Erstellung kleiner Programme, so genannter Applets, die wie Bots funktionieren. Die Applets können eigenständig Multimediadaten verarbeiten und verwalten, einschließlich digitaler Videos, Texte und Webinhalte.
  • Bash. Die freie Version der Bourne Shell, die mit den Betriebssystemen Linux und GNU vertrieben wird.
  • Bourne Shell. Die ursprüngliche Unix-Shell, die auch unter ihrem Programmnamen sh bekannt ist.
  • C-Shell. Shell-Skript und Plattform, die für Programmierer entwickelt wurde, die eine Syntax ähnlich der der Programmiersprache C bevorzugen.
  • JavaScript. Von Netscape entwickelte Skriptsprache. Sie verfügt über ähnliche Fähigkeiten wie Visual Basic von Microsoft, Tcl von Sun, das von Unix abgeleitete Perl und Rexx von IBM.
  • KornShell. Shell-Skript und -Plattform, die alle Funktionen der C-Shell (csh) und der Tab C-Shell (tcsh) enthält. Die KornShell bietet Skripting-Funktionen ähnlich der Bourne Shell.
  • LotusScript. Skriptsprache, die die objektorientierte Entwicklung für IBM-Softwareanwendungen unterstützt.
  • Perl. Skriptsprache mit einer der Sprache C ähnlichen Syntax. Perl kann optional kurz vor der Ausführung entweder in C-Code oder plattformübergreifenden Bytecode kompiliert werden.
  • PHP. Frei verfügbare und in der Webentwicklung weit verbreitete Allzweck-Skriptsprache und Interpreter, insbesondere für Webanwendungen, die auf Linux-Webservern gehostet werden.
  • PowerShell. Skript-Framework und -Sprache, die für die Durchführung und Automatisierung von Windows-Systemverwaltungsaufgaben entwickelt wurde. PowerShell enthält mehr als 130 Standard-Befehlszeilentools für Funktionen, für die Benutzer früher Skripts in Visual Basic, VBScript oder C# erstellen mussten.
  • Python. Eine einfache Skriptsprache, die leistungsstarke Funktionen bietet, aber einfacher zu erlernen ist als viele andere Sprachen. Python wird häufig verwendet, um Skripting-Funktionen zu bestehenden Anwendungen hinzuzufügen, unterstützt aber auch eine Vielzahl anderer Anwendungsfälle.
  • Ruby. Eine dynamische, quelloffene Skriptsprache mit einer einfachen Syntax, die teilweise von den Sprachen Ada und Eiffel inspiriert wurde. Ruby ist eine gut lesbare Sprache für jeden, der mit modernen Programmiersprachen vertraut ist.
Diese Definition wurde zuletzt im Mai 2024 aktualisiert

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de
Close