Skriptsprachen sind eine spezielle Art von Computersprachen, mit denen du anderer Software Anweisungen geben kannst, wie z.B. einem Webbrowser, Server oder einer eigenständigen Anwendung. Viele der heute populärsten Programmiersprachen sind Skriptsprachen, wie JavaScript, PHP, Ruby, Python und einige andere.

Da Skriptsprachen das Kodieren einfacher und schneller machen, ist es nicht verwunderlich, dass sie in der Webentwicklung weit verbreitet sind.

Das ist jedoch nicht ihr einziges Anwendungsgebiet. Es gibt auch Skriptsprachen für Betriebssysteme, statistische Analysesoftware, Office-Anwendungen, Game-Engines und viele andere Arten von Plattformen.

Was sind Skriptsprachen?

Skriptsprachen können verschiedene Aktionen innerhalb einer bestimmten Laufzeitumgebung ausführen, wie z.B. das Automatisieren der Aufgabenausführung, das Verbessern der Funktionalität der Parent Software, das Durchführen von Konfigurationen, das Extrahieren von Daten aus Datensätzen und andere.

Skriptsprachen können auf zwei Arten zustande kommen:

  1. Eine Laufzeitumgebung kann ihre eigene Skriptsprache einführen, wie z.B. Bash für das GNU-Betriebssystem oder VBA für Microsoft Office-Anwendungen.
  2. Eine Laufzeitumgebung kann eine existierende Skriptsprache übernehmen, zum Beispiel wurde MongoDBs mongo -Shell um JavaScript herum gebaut.

Auf der anderen Seite ist es manchmal die Skriptsprache, die zuerst existiert und eine eigene Parent Platform hervorbringt – wie seltsam das auch klingen mag.

Das ist im Fall von Node.js passiert, einer Backend-Laufzeitumgebung, die geschaffen wurde, um Webentwicklern zu ermöglichen, JavaScript nicht nur im Frontend, sondern auch im Backend zu verwenden, in Anlehnung an das ‚JavaScript everywhere‘-Paradigma.

Was bedeutet Scripting in der Programmierung?

Die Aktion des Scripting besteht im Wesentlichen darin, eine Reihe von Befehlen zu schreiben, die einer nach dem anderen von einer Anwendung oder einer Scripting-Engine interpretiert werden. Auch wenn das Skript die Plattform durch das, was zu tun ist, führt (gibt ihr ein Skript zum Lesen und Interpretieren), wird die Ausführung von der Laufzeitumgebung und nicht von der Skriptsprache selbst ausgeführt.

Dadurch unterscheiden sich Skriptsprachen von Programmiersprachen wie Java, die du ‚einmal schreiben und überall laufen lassen kannst‘ (der offizielle Java-Slogan bedeutet, dass Java-Programme als eigenständige Anwendungen in jeder Umgebung laufen können; seit seiner Prägung ist es auch zum WORA-Prinzip geworden, das sich auf plattformübergreifende Fähigkeiten bezieht).

Scripting-Sprachen vs. Programmiersprachen

Obwohl die Begriffe ‚Skriptsprache‘ und ‚Programmiersprache‘ häufig synonym verwendet werden, sind sie nicht dasselbe.

Plattform-spezifisch vs. Plattform-agnostisch

Skriptsprachen sind plattformspezifisch, während Programmiersprachen plattformunabhängig (cross-platform) sind, da sie die Fähigkeit haben, sich selbst auszuführen. Zum Beispiel kannst du ein Java-Programm auf jedem Betriebssystem ausführen.

(Meistens) interpretiert vs kompiliert

Während Programmiersprachen kompiliert werden, werden Skriptsprachen meistens interpretiert – auch wenn es einige Skriptsprachen gibt, die sowohl kompiliert als auch interpretiert werden, wie Python und Groovy.

‚Kompiliert‘ bedeutet, dass eine Programmiersprache ihren eigenen Compiler hat, der die Syntax vor der Laufzeit in Maschinencode übersetzt. Im Gegensatz dazu werden Skriptsprachen während der Laufzeit zeilenweise vom Interpreter der Plattform, auf der sie laufen, interpretiert.

Schneller vs. Langsamer bei der Laufzeit

Aufgrund dieses Unterschieds in der Implementierung laufen Programmiersprachen schneller als Skriptsprachen, da sie nicht in Echtzeit kompiliert werden müssen. Compiler führen auch eine kollektive Fehlerbehandlung vor der Ausführung durch, während Interpreter den Code Zeile für Zeile auswerten, so dass sie jedes Mal, wenn sie auf einen Fehler stoßen, pausieren (oder ganz aufhören).

Dies erhöht auch die gesamte Ausführungszeit von Skriptsprachen, auch wenn dies auf moderner und schnellerer Hardware weniger ein Problem darstellt als früher.

Mehr vs. weniger Code-intensiv

Programmiersprachen sind Code-intensiver, da du viele Dinge manuell erledigen musst, die im Falle von Skriptsprachen von der Plattform erledigt werden. Wenn du eine Skriptsprache verwendest, musst du viel weniger Code schreiben.

Eigenständige Apps vs. Apps als Teil eines Stacks

Es gibt einige Dinge, die man mit einer Skriptsprache einfach nicht machen kann. Am wichtigsten ist, dass man mit einer Skriptsprache keine eigenständigen Desktop- und Mobil-Anwendungen erstellen kann, da es keine Laufzeitumgebung gibt, die diese interpretiert.

Zum Beispiel kannst du PHP-Frameworks wie WordPress und Laravel nur für Webseiten und Webanwendungen verwenden, da sie den Webbrowser als Laufzeitumgebung verwenden. In ähnlicher Weise laufen WordPress-Handy-Apps in mobilen Laufzeitumgebungen wie Capacitor, die Webansichten enthalten.

Skript- vs. Programmiersprachen – Unterschiede im Überblick

Die Hauptunterschiede zwischen Skript- und Programmiersprachen sind also wie folgt:

Skriptsprachen Programmiersprachen
Plattformspezifisch Plattformunabhängig (plattformübergreifend)
(Meist) interpretiert Kompiliert
Schneller in der Laufzeit Langsamer in der Laufzeit
Code-intensiver Weniger Code-intensiv
Erstellt eigenständige Anwendungen Erstellt Anwendungen als Teil eines Stacks

Verwirrungen über Skriptsprachen

Es gibt einige Verwirrungen bezüglich der Skriptsprachen, auf die du häufig stoßen wirst, also lass uns einen Blick darauf werfen, bevor wir uns mit den besten Skriptsprachen beschäftigen.

Es macht nicht viel Sinn, über Frontend- vs. Backend-Skriptsprachen zu sprechen, auch wenn viele Artikel, die du überall im Web findest, diese Art der Kategorisierung verwenden.

Es gibt eigentlich nur eine einzige Frontend-Skriptsprache, die derzeit verwendet wird, und das ist JavaScript (es gab vorher schon andere, wie ActionScript und JScript, aber jetzt sind alle veraltet).

Im Zusammenhang mit Skriptsprachen sind nicht Frontend vs. Backend wichtig, sondern die Laufzeitumgebung(en), in der eine Skriptsprache laufen kann.

Beachte, dass ‚frontend‘ nur etwas bedeutet (Bild, Schriftart, Markup, Stylesheet, Skript, eine andere Art von statischer Datei), das ein Webbrowser interpretieren kann. Versuche zum Beispiel, eine PHP-Datei direkt vom Webbrowser aus zu öffnen: du kannst es nicht, weil ein PHP-Applikationsserver sie interpretieren muss – PHP ist also eine Backend-Skriptsprache im Kontext der Webentwicklung, während die Anwendungsschicht eines Server-Stacks (z.B. LAMP) im Kontext von Skriptsprachen steht.

Neben der Webentwicklung (Frontend- und Backend-Scripting) können Skriptsprachen auch für verschiedene andere Dinge verwendet werden, wie z.B. die Programmierung und Konfiguration von Betriebssystemen und spezifischen Anwendungen/Umgebungen, die Veränderung von Datensätzen, die Automatisierung von Aufgaben und vieles mehr.

Eine Skriptsprache kann auch in mehreren Umgebungen laufen.

Was keine Skriptsprachen sind

Bevor wir uns mit den besten Skriptsprachen beschäftigen, wollen wir uns die Kodiersprachen ansehen, die manchmal fälschlicherweise Skriptsprachen genannt werden, mit denen man aber nicht skripten kann:

  • Markup-Sprachen, wie zum Beispiel HTML und XML. In HTML gibt es Attribute für die Handhabung von Ereignissen wie onclick und onmouseover, aber das sind immer noch JavaScript-Callbacks.
  • Stylesheet-Sprachen, wie z.B. CSS, Sass und LESS.
  • Jede Art von Bibliothek oder Framework, das auf einer beliebigen Skriptsprache aufbaut, wie jQuery, PostCSS, React, Vue, Angular, Rails, Grails, Laravel, WordPress, Django und andere.
  • Sprachen, die in eine Skriptsprache kompiliert sind, wie z.B. TypeScript und CoffeeScript.
  • SQL, da es zur Verwaltung von Daten in relationalen Datenbankmanagementsystemen (RDBMS) wie MySQL und MariaDB Sie lassen dich keine dynamischen Funktionen schreiben. Allerdings haben viele RDBMS eine sogenannte Shell, in der man eine Skriptsprache verwenden kann (z.B. JavaScript oder Python in der MySQL-Shell).
  • Laufzeitumgebungen für eine oder mehrere Skriptsprachen, wie z.B. NodeJS.

Die 13 besten Skriptsprachen

Es gibt viele großartige Skriptsprachen, die eine Erwähnung in diesem Leitfaden verdienen würden, aber sie befinden sich nicht mehr in aktiver Entwicklung. Die folgenden 13 Skriptsprachen werden jedoch regelmäßig aktualisiert und werden auch in der Praxis verwendet.

Wenn du also darüber nachdenkst, eine neue Skriptsprache als neuen beruflichen Weg zu erlernen, sind sie alle einen Versuch wert.

1. JavaScript/ECMAScript

JavaScript
JavaScript

JavaScript ist eine Implementierung des ECMA-262-Standards, der die allgemeine Skriptsprache ECMAScript (ES) definiert. Mit anderen Worten, JavaScript ist ein Dialekt der ECMAScript-Sprache, daher hat es keine eigenständige Spezifikation, sondern verwendet die gleiche Syntax wie ECMAScript.

JavaScript hat erstklassige Funktionen (Funktionen werden als Variablen behandelt) und unterstützt prototypenbasierte objektorientierte Programmierung (bestehende Objekte werden als Prototypen wiederverwendet).

Code-Beispiel

ECMAScript verwendet eine Syntax mit geschweiften Klammern. Das folgende JavaScript-Codebeispiel addiert Zahlen von 1 bis 10 und gibt das Ergebnis in der Konsole aus (du kannst es in der JavaScript-Konsole deines Webbrowsers testen, indem du F12 drückst):

let total = 0, count = 1;

while (count <= 10) {
    total += count;
    count += 1;
}

console.log(total);
// 55

Quelle: Eloquent JavaScript von Marijn Haverbeke: Einführung

Anwendungsfälle und Umgebungen

JavaScript ist die Skriptsprache, die von modernen Webbrowsern wie der V8-Engine von Chrome und der SpiderMonkey-Engine von Mozilla verwendet wird. Neben der Frontend-Webentwicklung kann es auch in Nicht-Browser-Umgebungen verwendet werden. Die NodeJS-Laufzeitumgebung wurde geschaffen, um Webentwicklern die Nutzung im Backend zu ermöglichen.

Die Shells einiger NoSQL-Datenbankmanagementsysteme, wie MongoDB und Apache CouchDB, und einige relationale Datenbankmanagementsysteme, wie die bereits erwähnte MySQL Shell, verwenden es ebenfalls als Skriptsprache.

2. PHP

PHP
PHP

PHP ist eine universelle, quelloffene Skriptsprache, die in der Backend-Web-Entwicklung verwendet wird. Das Kürzel stand ursprünglich für ‚Personal Home Page‘, da PHP ursprünglich geschaffen wurde, um dynamische Funktionalitäten zu statischen HTML-Seiten hinzuzufügen.

Seitdem hat sich PHP zu einer eigenständigen Sprache entwickelt, daher wird das Kürzel jetzt im Sinne von ‚Hypertext-Präprozessor‘ verwendet. PHP ist einfach geschrieben (du musst die Datentypen von Variablen nicht deklarieren), kann in HTML-Dokumente eingebettet werden und hat auch objektorientierte Funktionen.

Code-Beispiel

PHP hat eine C-ähnliche Syntax. Das folgende PHP-Codebeispiel erzeugt ein numerisches Raster mit vier Elementen, durchläuft diese in einer Schleife, multipliziert jedes Element mit zwei und setzt die $value – Variable zurück, wenn die Schleife beendet ist.

<?php
$arr = array(1, 2, 3, 4);

foreach ($arr as &$value) {
   $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)

unset($value);
?>

Quelle: PHP-Dokumentation: Kontrollstrukturen

Anwendungsfälle und Umgebungen

PHP kann auf verschiedenen HTTP-Servern ausgeführt werden, wobei Apache und Nginx die beliebtesten sind.

Die gebräuchlichsten PHP-Server sind LAMP (Linux, Apache, MySQL, PHP), LEMP (Linux, Nginx, MySQL, PHP – von Kinsta verwendet), und WAMP (Windows, Apache, MySQL, PHP), und MAMP (macOS, Apache, MySQL, PHP).

Es wird auch von vielen populären Content-Management-Systemen (CMS) wie WordPress, Drupal und Joomla verwendet, sowie von Web-Anwendungs-Frameworks wie Laravel, Symfony und CodeIgniter, die alle auf der PHP-Sprache aufbauen und sie mit zusätzlichen Funktionen erweitern.

Du kannst PHP auch für die lokale WordPress-Entwicklung verwenden.

3. Python

Python
Python

Python ist derzeit die zweitbeliebteste Programmiersprache auf GitHub (nach JavaScript). Sie wird wegen ihrer klaren und prägnanten Syntax geliebt – wenn man in Python programmiert, muss man viel weniger tippen als in den meisten anderen Sprachen.

Python ist ein freies und quelloffenes Projekt, das von der Python Software Stiftung verwaltet wird. Es unterstützt die strukturierten, objektorientierten und funktionalen Programmierparadigmen und verfügt über eine umfangreiche Standardbibliothek, die eine Sammlung von häufig verwendeten Python-Modulen darstellt.

Code-Beispiel

Python verwendet keine geschweiften Klammern und Semikolons sind optional, so dass der Code leicht zu lesen und zu schreiben ist. Das folgende Python-Codebeispiel bewegt sich durch ganze Zahlen zwischen 0 und 4 und gibt sie aus:

count = 0
while count < 5:
   print(count)
      count += 1

Quelle: Erlerne Python: Loops

Anwendungsfälle und Umgebungen

Die beliebteste Python-Implementierung ist CPython, geschrieben in der C-Sprache. Es ist auch die Referenz-Implementierung, die du zusammen mit der Sprache Python herunterlädst. Auch wenn Python eine interpretierte Sprache ist, verwendet CPython sowohl einen Kompilierungs- als auch einen Interpretationsschritt. Zuerst kompiliert es den Quellcode in Bytecode (nicht dasselbe wie Maschinencode), den es zur Laufzeit interpretiert.

Neben CPython hat Python auch noch andere Laufzeitumgebungen, vor allem PyPy, das den Kompilierungsschritt auslässt und nur JIT (Just-in-Time) interpretiert. Python-Implementierungen sind plattformübergreifend, d.h. sie laufen auf mehreren Betriebssystemen, einschließlich Linux, Windows und macOS.

Die Python-Sprache wird häufig für maschinelles Lernen, Backend-Web-Entwicklung (Django ist das beliebteste Web-Framework), Datenanalyse, Automatisierung, wissenschaftliches Rechnen und Web-Scraping verwendet.

4. Ruby

Ruby
Ruby

Ruby ist eine quelloffene, universell einsetzbare Skriptsprache mit einer kompakten und leicht zu lesenden Syntax. Sie folgt den Prinzipien der objektorientierten Programmierung und lässt dich sauberen und logischen Code schreiben. In Ruby ist alles ein Objekt – sogar Typen, die in den meisten Sprachen primitiv sind, wie zum Beispiel Booleans und Integers.

Objektorientierte Konzepte wie Inheritance, Mixins und Metaklassen werden ebenfalls stark genutzt.

Obwohl Ruby ein rein objektorientiertes Design hat, unterstützt es auch prozedurale Programmierung (Funktionen und Variablen, die außerhalb von Klassen definiert werden, gehören zum Self– Object) und funktionale Programmierung (durch anonyme Funktionen, Schließungen und Fortsetzungen).

Code Example

Ruby hat eine prägnante Syntax ähnlich der von Python. Das folgende Ruby-Codebeispiel definiert die KaraokeSong – Klasse als eine Unterklasse der Song – Klasse:

class KaraokeSong < Song
   def initialize(name, artist, duration, lyrics)
      super(name, artist, duration)
      @lyrics = lyrics
   end
end

Quelle: Handbuch zur Programmierung von Ruby: Klassen, Objekte und Variablen

 

Anwendungsfälle und Umgebungen

Ruby wird hauptsächlich in der Backend-Web-Entwicklung verwendet, wobei es einige robuste Webanwendungs-Frameworks wie Ruby on Rails unterstützt. Viele beliebte Webseiten und Anwendungen laufen auf Ruby on Rails, wie z.B. Airbnb, Shopify, GitHub und Hulu.

Ruby ist auch die Sprache, in der viele populäre Webentwicklungswerkzeuge geschrieben sind, vor allem der Sass CSS-Präprozessor, der statische Webseiten-Generator Jekyll und die Vagrant Virtual Machine Umgebung.

Die Standard-Implementierung von Ruby ist YARV (Yet Another Ruby Virtual Machine). Damit wurde der ursprüngliche Matz´ Ruby Interpreter geändert (auch Ruby MRI oder CRuby), der wegen Problemen mit Geschwindigkeit und Skalierbarkeit kritisiert worden war.

Es gibt auch mehrere konkurrierende Laufzeitumgebungen für Ruby, wie z.B. JRuby (lässt dich Ruby auf der Java Virtual Machine laufen), mruby (eine leichtgewichtige Implementierung, die du in deine Anwendung einbinden kannst), TruffleRuby (Oracles Ruby-Interpreter, der auf GraalVM basiert), Rubinius (eine cloud-native virtuelle Maschine für Ruby) und andere.

5. Groovy

Groovy
Groovy

Groovy ist eine unglaublich flexible Sprache, die für die Java Virtual Machine (JVM) geschrieben wurde und sowohl als Skript- als auch als Programmiersprache verwendet werden kann. Es ist ein Open-Source-Projekt, das von der Apache Software Stiftung betreut wird. Groovy ist eine objektorientierte Sprache, die die java.lang.Object – Superklasse erweitert.

Sie unterstützt sowohl statische als auch dynamische Typisierung (Typenprüfung kann sowohl während der Kompilierung als auch zur Laufzeit durchgeführt werden) und hat native Unterstützung für Listen, assoziative Felder, reguläre Ausdrücke und Markup-Sprachen wie HTML und XML.

Du kannst Groovy zusammen mit bestehenden Java-Bibliotheken verwenden.

Code-Beispiel

Groovy hat eine Java-kompatible Syntax, die geschweifte Klammern verwendet. Das folgende Groovy-Codebeispiel definiert die Coordinates – Klasse mit den Latitude- und Longitude-Eigenschaften und der getAt() – Methode:

@Immutable
class Coordinates {
   double latitude
   double longitude

   double getAt(int idx) {
      if (idx == 0) latitude
      else if (idx == 1) longitude
      else throw new Exception("Wrong coordinate index, use 0 or 1")
   }
}

Quelle: Groovy Dokumentation: Semantics

Anwendungsfälle und Umgebungen

Da Groovy sich in Java-Bytecode kompiliert, kannst du es als allgemeine Programmiersprache ähnlich wie Java verwenden. In diesem Fall kannst du den Quellcode vor der Laufzeit mit dem Groovyc-Compiler (das Äquivalent zu javac) in Bytecode kompilieren.

Es gibt aber auch viele Groovy-Implementierungen, mit denen man es als Skriptsprache verwenden kann. Die bekanntesten sind das Grails-Webanwendungs-Framework (früher bekannt als Groovy on Grails) und das Gradle-Build-Automatisierungstool, aber es gibt auch noch einige andere.

6. Perl

Perl
Perl

Perl ist eine universelle Skriptsprache, die es seit mehr als dreißig Jahren (seit 1987) gibt. Ursprünglich wurde sie als UNIX-Skriptsprache für die Verarbeitung von Berichten entwickelt. Daher stammt auch ihr Name, da das Kürzel Perl für ‚Practical Extraction and Reporting Language‘ steht.

Die Perl-Sprache wurde in den 1990er Jahren populär, als Programmierer begannen, sie für CGI-Skripte (Common Gateway Interface) zu verwenden, was eine ältere Schnittstellenspezifikation für Webserver ist (derzeit wird sie hauptsächlich von älteren Seiten verwendet).

Obwohl Perl ein relativ früher Akteur ist, steht es immer noch auf Platz 11 im TIOBE-Index und auf Platz 21 der beliebtesten Sprachen auf GitHub (Stand Oktober 2020).

Code-Beispiel

Die Syntax von Perl ist der C-Sprache ähnlich. Das Perl-Codebeispiel unten definiert zuerst die square() – Subroutine, die das Quadrat einer Zahl berechnet und zurückgibt, dann den Wert 8 als Argument übergibt, die Subroutine ausführt und das Ergebnis in der Variablen $sq speichert:

sub square {
   my $num = shift;
   my $result = $num * $num;
   return $result;
}

$sq = square(8);

Quelle: Perl Dokumente: Perl Einführung

Use Cases und Umgebungen

Auch wenn es heutzutage nicht die häufigste Wahl von Webentwicklern ist, kann Perl erfolgreich in der Backend-Entwicklung eingesetzt werden. Neben der CGI-Laufzeitumgebung ist es auch auf den Webservern Apache und Nginx ausführbar – der LAMP-Stack ist eigentlich LAMPP, was für Linux, Apache, MySQL, PHP und Perl steht.

Es gibt auch einige Perl-Web-Entwicklungsframeworks, wobei Catalyst, Mojolicious und Dancer die beliebtesten sind.

Perl wird von mehreren namhaften Webseiten und Anwendungen wie Amazon, IMDB, Booking.com und dem BBC iPlayer verwendet. Es wird auch in anderen Bereichen wie Netzwerkprogrammierung und Systemadministration verwendet. Du kannst dir auch das Comprehensive Perl Archive Network (CPAN) ansehen, wo mehr als 25.000 Open-Source-Perl-Projekte für dich zum Download bereit stehen.

7. Lua

Lua
Lua

Lua ist eine schnelle und leichte Skriptsprache. Das Wort ‚lua‘ bedeutet ‚Mond‘ auf Portugiesisch, da die Sprache von der Päpstlichen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt und gepflegt wird. Lua unterstützt die prozeduralen, objektorientierten und funktionalen Programmierparadigmen.

Da Luas Dolmetscher in C geschrieben ist, kann er mit seiner C API leicht in Anwendungen eingebettet werden. Du kannst Lua aber auch benutzen, um bestehende Anwendungen, die in C-basierten Sprachen wie C, C++, C#, Java, Perl, Ruby und anderen geschrieben wurden, zu erweitern.

Code-Beispiel

Lua hat eine prägnante und leicht zu lesende Syntax, ähnlich wie Python und Ruby. Das folgende Lua-Codebeispiel zeigt, wie man die if-then-else – Anweisung verwendet. Zuerst wertet sie die op – Variable aus und führt dann, abhängig von ihrem Wert, grundlegende arithmetische Operationen aus:

if op == "+" then
   r = a + b
elseif op == "-" then
   r = a - b
elseif op == "*" then
   r = a * b
elseif op == "/" then
   r = a / b
else
   error("invalid operation")
end

Quelle: Programmierung in Lua Nachschlagewerk: Aussagen

Anwendungsfälle und Umgebungen

Die standardmäßige Lua-Implementierung interpretiert den Quellcode nicht direkt, sondern kompiliert ihn zunächst in Bytecode, den sie später auf der virtuellen Lua-Maschine ausführt. Da all dies zur Laufzeit geschieht, gibt es keinen manuellen Kompilierungsschritt, den du ausführen musst (auch wenn du dich dafür entscheiden kannst, Lua vor der Laufzeit zu kompilieren, um die Leistung zu verbessern).

Es gibt auch noch andere Lua-Implementierungen, wie LuaJIT, LuaVela und viele andere.

Lua wird häufig verwendet, um Videospiele zu entwickeln, wie Angry Birds, World of Warcraft und Grim Fandango. Da es leicht einzubinden ist, wird es auch häufig für eingebettete Geräte wie Set-Top-Boxen, Armaturenbretter von Autos (z.B. Volvo), IP-Kameras (z.B. Cisco) und andere verwendet.

Es kann auch in der Webentwicklung verwendet werden, da sowohl Apache als auch Nginx-Server ein Lua-Modul haben (hier ist Apaches mod_lua, und hier ist Nginx’s ngx_http_lua_module). Wikipedia wählte Lua als Skriptsprache für die Templates, und die UI von Adobe Photoshop Lightroom ist ebenfalls in Lua geschrieben.

8. Bash

Bash

Bash ist der Name sowohl eines command-line Übersetzers (Shell) für das GNU Betriebssystem als auch der dazugehörigen Skriptsprache. Linux‘ ist in der Tat das GNU-Betriebssystem, das den Linux-Kernel verwendet (ein Kernel ist der Kern des Betriebssystems; es ist das erste Programm, welches das Betriebssystem lädt).

Bash ist ein Ersatz für die originale UNIX Bourne Shell (sh) – das Bash Akronym steht für ‚Bourne Again SHell‘ (ein Wortwitz über „born again shell“).

Abgesehen davon, dass die Bash die Obermenge der Bourne-Shell-Syntax ist, enthält sie auch Funktionen aus anderen Shell-Skriptsprachen wie KornShell (ksh) und C-Shell (csh) – zum Beispiel command-line-Bearbeitung und Befehlshistorie. Du kannst Bash sowohl im interaktiven Modus (einen Befehl nach dem anderen ausführen und auf die Antwort der Maschine warten) als auch im Skriptmodus benutzen (eine Reihe von Befehlen – ein Bash-Skript – auf einmal ausführen).

Code-Beispiel

Wie die meisten CLI-Skriptsprachen hat Bash eine einfache und beschreibende Syntax. Das folgende Bash-Codebeispiel wählt eine Datei aus dem aktuellen Ordner aus und gibt eine Nachricht aus, die den Namen und den Index der Datei enthält:

select fname in *;
do
   echo you picked $fname \($REPLY\)
   break;
done

Quelle: Bash Referenzhandbuch: Konditionale Konstruktionen

Anwendungsfälle und Umgebungen

Du kannst Bash benutzen, um Änderungen vorzunehmen und verschiedene Aktionen durchzuführen, die mit deinem Betriebssystem zu tun haben, wie z.B. das Ausführen von Befehlen, das Ausführen von Aufgaben, die die meisten Leute über eine grafische Benutzeroberfläche erledigen würden (z.B. Ordner und Dateien erstellen, verschieben oder löschen), das Anpassen und Automatisieren von Verwaltungsaufgaben, das Verbinden mit einem entfernten Server und viele andere.

Bash ist die Standard-Shell für viele Unix-basierte Betriebssysteme, einschließlich der meisten Linux-Distributionen und aller macOS-Versionen bis hin zu macOS Catalina, das 2019 die Bash durch eine Z-Shell (Zsh) ersetzt hat. Du kannst Bash-Skripte auch unter Windows 10 ausführen, indem du die von Microsoft entwickelte Kompatibilitätsschicht Windows Subsystem for Linux (WSL) verwendest.

9. PowerShell

PowerShell

Ursprünglich war PowerShell eine command-line-Shell und Skriptsprache speziell für das Windows-Betriebssystem. Seitdem hat Microsoft diese offengelegt und vom .NET Framework, das nur Windows-Anwendungen erstellen kann, auf .NET Core umgestellt, das Anwendungen für Windows, Linux und MacOS erstellen kann. Das bedeutet, dass PowerShell jetzt plattformübergreifend ist.

Es wurde auch von Windows PowerShell in PowerShell Core umbenannt, was dem zugrundeliegenden Framework entspricht. Im Gegensatz zu den meisten command-line-Shells akzeptiert und gibt .NET-Objekte statt einfacher Text zurück, was neue Möglichkeiten der Aufgabenautomatisierung eröffnet.

Code-Beispiel

PowerShell hat eine kompakte Syntax, die das Arbeiten in der Command Line schneller macht. Das PowerShell-Codebeispiel unten erstellt ein Backup der Datei boot.ini und speichert es in der Datei boot.bak:

Copy-Item -Path C:\boot.ini -Destination C:\boot.bak

Quelle: PowerShell Dokumentation: Arbeiten mit Dateien und Ordnern

Anwendungsfälle und Umgebungen

Du kannst PowerShell auf den Betriebssystemen Windows, Linux, macOS und einigen ARM-Geräten (z.B. Wearables, Multimedia-Player, Tablets und anderen Geräten der Unterhaltungselektronik) verwenden.

Du kannst PowerShell für die Systemadministration, Aufgabenautomatisierung und Konfigurationsverwaltung verwenden. Um PowerShell-Module und -Skripte zu finden, kannst du dir auch die PowerShell-Galerie und Microsofts offizielle Beispielskriptsammlung ansehen.

10. R

R

R ist sowohl eine Softwareumgebung als auch eine Skriptsprache, die du für statistische Berechnungen, Datenanalyse und grafische Darstellung verwenden kannst. Es ist ein freies und quelloffenes GNU-Projekt und eine Implementierung der statistischen Berechnungssprache S (nicht mehr in aktiver Entwicklung).

R erlaubt es dir, viele verschiedene statistische Techniken zu verwenden, wie z.B. klassische statistische Tests, Clustering, Zeitreihenanalyse, lineare und nicht-lineare Modellierung und andere.

Code-Beispiel

Die Syntax von R unterscheidet sich von den meisten Skriptsprachen und hat auch einige ungewöhnliche Elemente – zum Beispiel ist der primäre Zuweisungsoperator <- statt des = Gleichheitszeichens und es hat schleifenlose Schleifen – siehe mehr über die Macken der R-Syntax in diesem Anfängerhandbuch für R von Sharon Machlis.

Das folgende R-Code-Beispiel definiert ein names – Attribut für den fruit – Vektor (grundlegende Datenstruktur in R, die Elemente desselben Typs enthält), das alphanumerische Namen (orange, banana, apple, peach) verwendet, um seine Komponenten zu identifizieren. Später kann der lunch – (oder ein anderer) Subvektor auf jede Komponente über ihren Alias-Namen zugreifen:

> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]

Quelle: Eine Einführung in R: Index-Vektoren; Auswählen und Modifizieren von Teilmengen eines Datensatzes

Anwendungsfälle und Umgebungen

Die R-Softwareumgebung ist plattformübergreifend; du kannst sie auf den Betriebssystemen Windows, Linux und macOS ausführen. Die Standard-R-Implementierung ist auch von einigen anderen Skriptsprachen wie Python und Perl verfügbar. Das bedeutet, dass du mit diesen Skriptsprachen auf alle statistischen Funktionen von R zugreifen kannst.

Neben der Standard-R-Umgebung kannst du die R-Skriptsprache auch in anderen Umgebungen verwenden, wie z.B. pqR (steht für ‚eine ziemlich schnelle Version von R‘) und Renjin (eine R-Implementierung auf der Java Virtual Machine).

11. VBA

VBA

VBA steht für Visual Basic for Applications und ist eine Implementierung der Programmiersprache Visual Basic 6 (seit 2008 nicht mehr in aktiver Entwicklung). Es wurde für Microsoft Office-Anwendungen entwickelt, um es Entwicklern zu ermöglichen, sich wiederholende Aufgaben zu automatisieren, neue Funktionen hinzuzufügen und mit den Endbenutzern von Dokumenten zu interagieren.

Ähnlich wie Visual Basic folgt VBA dem ereignisgesteuerten Programmierparadigma, das Ereignisse wie Benutzeraktionen in den Mittelpunkt stellt, die den Programmfluss steuern.

Da Microsoft Office-Anwendungen eine grafische Benutzeroberfläche haben, kannst du VBA-Skripte an Menütasten, Tastaturkürzel, Makros (programmierbare Muster) und OLE-Ereignisse (Object Linking and Embedding, mit denen du eine Anwendung von einer anderen aus steuern kannst; es handelt sich um eine geschützte) anhängen.

Code-Beispiel

Da VBA auf Visual Basic basiert (welches eine Erweiterung von BASIC ist), verwendet es eine Syntax, die den Sprachen der BASIC (Beginners‘ All-purpose Symbolic Instruction Code) Familie ähnlich ist – was bedeutet, dass es sehr anfängerfreundlich ist.

Das folgende VBA-Codebeispiel verwendet die GetCertificateDetail() – Methode des SignatureInfo – Objekts, um das Ablaufdatum eines digitalen Zertifikats zu erhalten:

Sub GetCertDetails()
Dim objSignatureInfo As SignatureInfo
Dim varDetail As Variant

strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate)

End Sub

Quelle: Office-VBA-Referenz: SignatureInfo-Objekt

Anwendungsfälle und Umgebungen

Die VBA-Skriptsprache ist in den meisten Microsoft Office-Anwendungen, bzw. Access, Excel, Office für Mac, Outlook, PowerPoint, Project, Publisher, Visio und Word eingebettet – jede hat ein eigenes Nachschlagewerk auf Microsofts Dokumentationsseite, während allgemeine VBA-Konzepte in der Bibliotheksreferenz ausführlich beschrieben werden.

Neben den Microsoft Office-Anwendungen gibt es noch andere Anwendungen, die ebenfalls VBA unterstützen, wie z.B. AutoCAD und CorelDRAW.

12. Emacs Lisp

Emacs Lisp

Emacs Lisp ist eine domänen-spezifische Skriptsprache, die für den GNU Emacs Texteditor entwickelt wurde. Es ist ein Dialekt aus der Familie der Lisp-Programmiersprachen (der Name kommt von LISt Processor).

Da Emacs Lisp dafür entworfen wurde, innerhalb eines Code-Editors benutzt zu werden, kommt es mit einem Feature-Set, das spezifisch für diese Umgebung ist, wie z.B. Text-Scannen und -Auswerten, Buffer (Objekte mit editierbaren Texten) und Display-Verwaltung, und andere.

Die Emacs Lisp Skriptsprache ist eng mit der Editor-Oberfläche selbst integriert, so dass jeder Befehl auch eine Lisp-Funktion ist, die du von deinem Skript aus aufrufen kannst, und Anpassungsparameter sind ebenfalls Lisp-Variablen.

Code Beispiel

Die Syntax von Emacs Lisp basiert auf einer vollständig eingeklammerten Präfixschreibweise, die anfangs etwas schwer zu lesen sein kann, wenn man noch nie mit einer Lisp-Sprache gearbeitet hat.

Das folgende Emacs Lisp Codebeispiel definiert zwei Variablen (Symbole) und weist ihnen jeweils eine Liste von Werten zu – eine Liste von Bäumen (pine, fir, oak, maple) zu dem trees – Symbol und eine Liste von Pflanzenfressern (gazelle, antelope, zebra) zu dem Symbol herbivores:

(setq trees '(pine fir oak maple)
   herbivores '(gazelle antelope zebra))

Quelle: Eine Einführung in die Programmierung im Emacs Lisp: Den Wert einer Variable setzen

Anwendungsfälle und Umgebungen

Der Emacs Texteditor ist eine plattformübergreifende Anwendung, die du auf Windows-, Linux- und MacOS-Maschinen installieren kannst.

Mit der Emacs Lisp Skriptsprache kannst du den Code-Editor erweitern und anpassen, Prozesse wiederholen und automatisieren, Graphen erstellen, den Fokus auf bestimmte Bereiche beschränken (aus Sicherheitsgründen), reguläre Ausdrücke suchen, Text speichern, Modi und Tastaturbelegungen definieren, Fragen von Benutzern stellen und viele andere Aktionen durchführen.

Es gibt auch einige Konfigurations-Frameworks für Emacs Lisp – Doom-Emacs und Spacemacs sind die bekanntesten.

13. GML

GML

Das Kürzel GML steht für GameMaker Language. Es ist ein gutes Beispiel für eine domänen-spezifische Skriptsprache, die in der Spieleentwicklung verwendet wird. GML ist eine firmeneigene Skriptsprache, die zu GameMaker Studio 2 gehört, einer plattformübergreifenden Spiele-Engine und Entwicklungsplattform, die sich im Besitz von YoYo Games befindet und von YoYo Games verwaltet wird.

Auch wenn GML hauptsächlich für die Steuerung von Spielobjekten verwendet wird, ist es keine objekt-orientierte Sprache, sondern eine prozess-orientierte. Sie erlaubt es dir, benutzerdefinierte Skripte von jedem Spielobjekt aus aufzurufen.

Neben der Skriptsprache GML gibt es in GameMaker Studio 2 auch ein visuelles Skript-Tool namens Drag and Drop (DnD). Aufgrund der flexiblen Natur von GameMaker Studio 2 kannst du DnD auch mit deinen GML-Skripten mischen.

Code-Beispiel

Die Syntax von GML ist ähnlich zu JavaScript und anderen C-ähnlichen Sprachen.

Das folgende GML-Codebeispiel lässt ein Spielobjekt mit einer Geschwindigkeit von 5 Pixeln pro Schritt horizontal zum Mauszeiger auf dem Bildschirm wandern. Sobald es die aktuelle Position des Mauszeigers erreicht hat, erstellt das Skript eine Ebene mit Explosionseffekt, führt sie aus (es gibt einen Explosionseffekt auf dem Bildschirm) und zerstört dann die Instanz (der Explosionseffekt wird entfernt):

if mp_linear_step(mouse_x, mouse_y, 5, 0) {
   instance_create_layer(x, y, "Effects", obj_Explosion);
   instance_destroy();
}

Quelle: GameMaker Studio 2 Docs – Scripting – GML Referenz – Bewegung und Kollisionen – Bewegungsplanung

Anwendungsfälle und Umgebungen

GML wird von GameMaker Studio 2 interpretiert, das du kaufen musst, wenn du Spiele in dieser Skriptsprache entwickeln willst.

Der Preis hängt von der Plattform ab, für die du Spiele entwickeln möchtest – Mac- und Windows-Spiele sind am billigsten; plattformübergreifende (Windows, MacOS, Ubuntu) Desktop-Spiele, HTML5-Webspiele, UWP-Spiele (Universal Windows Platform) und plattformübergreifende (Android, Fire, iOS) Handyspiele gehören zum mittleren Preissegment; und PS4, Xbox One und Nintendo Switch sind die teuersten.

Einige Beispiele für Videospiele, die mit GML erstellt wurden, sind Blackhole, 10 Second Ninja X, Death’s Gambit, Deltarune und einige andere.

Zusammenfassung

Es gibt keinen Zweifel daran, dass Skriptsprachen faszinierend sind. Es gibt viele verschiedene Varianten, Syntaxen und Implementierungen und sie können für viele Dinge verwendet werden.

Von der Erstellung dynamischer Webseiten, über die Automatisierung der Systemverwaltung bis hin zur Erstellung von Videospielen und so weiter.

Die drei wichtigsten Dinge, die man sich bei Skriptsprachen merken sollte, sind

Sie können nicht alleine betrieben werden, sondern benötigen immer eine Umgebung (Implementierung, Laufzeit) mit einem Übersetzer für diese Skriptsprache.

Manchmal kann man allgemeine Skriptsprachen verwenden, um auf Umgebungen und Plattformen zuzugreifen, die hauptsächlich für andere Programmier- oder Skriptsprachen erstellt wurden. Denk an JRuby (lässt dich Ruby auf der Java Virtual Machine betreiben), Renjin (R-Implementierung auch auf der JVM), Rpy2 (R-Interface, das du von Python aus benutzen kannst), als gute Beispiele.

Bevor du eine neue Skriptsprache lernst, ist es immer eine gute Idee, ihre aktuelle Beliebtheit mithilfe des TIOBE-Index oder GitHut zu überprüfen.

Abhängig davon findest du auch mehr oder weniger Beispielskripte, GitHub-Repositories, Modulbibliotheken, Referenzhandbücher, detaillierte Handbücher und App-Showcases, die dir den Einstieg in die Sprache erleichtern… und besser bezahlte Projekte und Jobs zu bekommen!

Anna Monus

Anna Monus ist eine professionelle technische Autorin und Editorin, die über Webentwicklung, Programmierung, Cloud Computing, Tech-Kultur, Barrierefreiheit und andere innovative Themen berichtet. Ihre Arbeiten wurden in den größten technischen Publikationen und Blogs auf der ganzen Welt veröffentlicht, z. B. bei IBM Cloud, Envato, Raygun, Hongkiat, LogRocket und anderen. Weitere Informationen findest du auf ihrer Website oder unter @azaleamollis.