Articles

Skriptsprache

Skriptsprachen können in verschiedene Typen kategorisiert werden, wobei es ein beträchtliches Maß an Überschneidungen zwischen den Typen gibt.

KlebesprachenBearbeiten

In diesem Abschnitt werden keine Quellen zitiert. Bitte helfen Sie, diesen Abschnitt zu verbessern, indem Sie Zitate zu zuverlässigen Quellen hinzufügen. Nicht quellifiziertes Material kann angefochten und entfernt werden. (März 2007) (Erfahren Sie, wie und wann Sie diese Vorlage entfernen können)

Scripting wird oft der Systemprogrammierung gegenübergestellt, wie in Ousterhouts Dichotomie oder „Programmierung im Großen und Programmierung im Kleinen“. In dieser Sichtweise ist Scripting „Glue Code“, der Softwarekomponenten verbindet, und eine Sprache, die für diesen Zweck spezialisiert ist, ist eine Glue-Sprache. Pipelines und Shell-Skripting sind archetypische Beispiele für Glue-Sprachen, und Perl wurde ursprünglich entwickelt, um dieselbe Rolle zu erfüllen. Die Web-Entwicklung kann als eine Verwendung von Glue-Sprachen angesehen werden, als Schnittstelle zwischen einer Datenbank und einem Webserver. Aber wenn ein wesentlicher Teil der Logik in Skripten geschrieben wird, ist es besser, sie einfach als eine weitere Softwarekomponente zu bezeichnen, nicht als „Glue“.

Glue-Sprachen sind besonders nützlich für das Schreiben und Warten von:

  • Angepasste Befehle für eine Kommando-Shell;
  • kleinere Programme als solche, die besser in einer kompilierten Sprache implementiert sind;
  • „Wrapper“-Programme für ausführbare Dateien, wie z.B. eine Batch-Datei, die Dateien verschiebt oder manipuliert und andere Dinge mit dem Betriebssystem macht, bevor oder nachdem eine Anwendung wie ein Textverarbeitungsprogramm, eine Tabellenkalkulation, eine Datenbank, ein Assembler, ein Compiler, etc. ausgeführt wird
  • Skripte, die sich ändern können;
  • Schnelle Anwendungsentwicklung einer Lösung, die schließlich in einer anderen, meist kompilierten Sprache implementiert wird.

Beispiele für Glue-Sprachen:

Makrosprachen, die auf Betriebssystem- oder Anwendungskomponenten aufsetzen, können als Glue-Sprachen dienen. Dazu gehören Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic und WinWrap Basic. Andere Tools wie AWK können ebenfalls als Glue-Sprachen betrachtet werden, ebenso wie jede Sprache, die von einer Windows Script Host-Engine implementiert wird (VBScript, JScript und VBA standardmäßig in Windows und Engines von Drittanbietern einschließlich Implementierungen von Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi und C). Ein Großteil der Anwendungen kann über die Objektmodelle oder eigene Funktionen auf Betriebssystemkomponenten zugreifen und diese nutzen.

Auch andere Geräte wie programmierbare Taschenrechner können über Glue-Sprachen verfügen; die Betriebssysteme von PDAs wie Windows CE können neben Implementierungen gängiger Glue-Sprachen – darunter Windows NT, DOS und einige Unix-Shells, Rexx, Modern Pascal, PHP und Perl – auch über native oder Drittanbieter-Makro-Tools verfügen, die Anwendungen zusammenfügen. Je nach Betriebssystemversion sind WSH und die Standard-Skript-Engines (VBScript und JScript) verfügbar.

Programmierbare Taschenrechner können auf drei Arten in Glue-Sprachen programmiert werden. Der TI-92 von Texas Instruments zum Beispiel kann ab Werk mit einer Befehlsskriptsprache programmiert werden. Die Aufnahme der Skript- und Glue-Sprache Lua in die TI-NSpire-Reihe von Taschenrechnern könnte als ein Nachfolger davon angesehen werden. Die primären On-Board-Hochsprachen der meisten Grafikrechner (meist Basic-Varianten, manchmal Lisp-Derivate und seltener C-Derivate) können in vielen Fällen Rechnerfunktionen zusammenkleben – wie Graphen, Listen, Matrizen usw. Es gibt Implementierungen von Drittanbietern von umfangreicheren Basic-Versionen, die näher an den in diesem Artikel als Klebesprachen aufgeführten Varianten liegen – und es gibt auch Versuche, Perl, Rexx oder verschiedene Betriebssystem-Shells auf den TI- und HP-Grafikrechnern zu implementieren. PC-basierte C-Cross-Compiler für einige der TI- und HP-Maschinen mit Tools, die zwischen C und Perl, Rexx, AWK und Shell-Skripten nach Perl, Modern Pascal, VBScript nach und von Perl konvertieren, machen es möglich, ein Programm in einer Glue-Sprache zu schreiben, um es schließlich (als kompiliertes Programm) auf dem Rechner zu implementieren.

EditorsprachenEdit

Eine Reihe von Texteditoren unterstützt Makros, die entweder mit einer in den Editor eingebauten Makrosprache geschrieben werden, z.B., The SemWare Editor (TSE), vi improved (VIM), oder unter Verwendung einer externen Implementierung, z. B. XEDIT, oder beides, z. B. KEDIT. Manchmal werden Texteditoren und Edit-Makros unter der Haube verwendet, um andere Anwendungen bereitzustellen, z. B. FILELIST und RDRLIST in CMS.

Job-Steuerungssprachen und ShellsEdit

Hauptartikel: Shell-Skript

Eine große Klasse von Skriptsprachen hat sich aus der Automatisierung der Jobsteuerung entwickelt, die sich auf das Starten und Steuern des Verhaltens von Systemprogrammen bezieht. (In diesem Sinne könnte man Shells als Abkömmlinge von IBMs JCL (Job Control Language) betrachten, die genau für diesen Zweck verwendet wurde.) Viele Interpreter dieser Sprachen sind gleichzeitig Kommandozeileninterpreter wie die Unix-Shell oder das MS-DOS COMMAND.COM. Andere, wie z.B. AppleScript, bieten die Verwendung von englischsprachigen Befehlen zur Erstellung von Skripten an.

GUI-SkriptingEdit

Mit dem Aufkommen von grafischen Benutzeroberflächen entstand eine spezielle Art von Skriptsprache zur Steuerung eines Computers. Diese Sprachen interagieren mit denselben grafischen Fenstern, Menüs, Schaltflächen usw., die auch ein menschlicher Benutzer verwenden würde. Sie tun dies, indem sie die Aktionen eines Benutzers simulieren. Diese Sprachen werden typischerweise verwendet, um Benutzeraktionen zu automatisieren. Solche Sprachen werden auch als „Makros“ bezeichnet, wenn die Steuerung durch simulierte Tastendrücke oder Mausklicks sowie durch Tippen oder Drücken auf einen berührungsaktivierten Bildschirm erfolgt.

Diese Sprachen könnten im Prinzip zur Steuerung jeder GUI-Anwendung verwendet werden; in der Praxis ist ihre Verwendung jedoch eingeschränkt, da sie von der Anwendung und vom Betriebssystem unterstützt werden müssen. Es gibt ein paar Ausnahmen von dieser Einschränkung. Einige GUI-Skriptsprachen basieren auf der Erkennung von grafischen Objekten anhand ihrer Bildschirmpixel. Diese GUI-Skriptsprachen sind nicht auf die Unterstützung durch das Betriebssystem oder die Anwendung angewiesen.

Wenn die GUI die entsprechenden Schnittstellen bereitstellt, wie z. B. in der IBM Workplace Shell, kann eine generische Skriptsprache, z. B. OREXX, zum Schreiben von GUI-Skripten verwendet werden.

Anwendungsspezifische Sprachen

Anwendungsspezifische Sprachen lassen sich in viele verschiedene Kategorien einteilen, d.d. h. eigenständige, auf der Anwendung basierende Sprachen (ausführbar) oder interne anwendungsspezifische Sprachen (Postscript, xml, gscript als einige der weit verbreiteten Skripte, die jeweils von Adobe, MS und Google implementiert werden), unter anderem eine idiomatische Skriptsprache, die auf die Bedürfnisse des Anwenders zugeschnitten ist. Ebenso verwenden viele Computerspielsysteme eine eigene Skriptsprache, um die programmierten Aktionen von Nicht-Spieler-Charakteren und der Spielumgebung auszudrücken. Sprachen dieser Art sind für eine einzige Anwendung entwickelt worden; und obwohl sie oberflächlich betrachtet einer bestimmten Allzwecksprache ähneln (z.B. QuakeC, nach dem Vorbild von C), haben sie spezielle Eigenschaften, die sie unterscheiden. Emacs Lisp ist zwar ein vollwertiger und fähiger Dialekt von Lisp, enthält aber viele spezielle Eigenschaften, die es besonders nützlich für die Erweiterung der Editierfunktionen von Emacs machen. Eine anwendungsspezifische Skriptsprache kann als eine domänenspezifische Programmiersprache betrachtet werden, die auf eine einzelne Anwendung spezialisiert ist.

Erweiterung/einbettbare SprachenEditieren

Eine Reihe von Sprachen wurde zu dem Zweck entwickelt, anwendungsspezifische Skriptsprachen zu ersetzen, indem sie in Anwendungsprogramme eingebettet werden können. Der Anwendungsprogrammierer (der in C oder einer anderen Systemsprache arbeitet) fügt „Haken“ ein, an denen die Skriptsprache die Anwendung steuern kann. Diese Sprachen mögen technisch einer anwendungsspezifischen Erweiterungssprache entsprechen, aber wenn eine Anwendung eine „gemeinsame“ Sprache einbettet, hat der Benutzer den Vorteil, dass er seine Fähigkeiten von Anwendung zu Anwendung übertragen kann. Eine allgemeinere Alternative besteht darin, einfach eine Bibliothek (oft eine C-Bibliothek) bereitzustellen, die eine Allzwecksprache zur Steuerung der Anwendung verwenden kann, ohne die Sprache für die spezifische Domäne zu modifizieren.

JavaScript begann als Sprache für die Skripterstellung innerhalb von Webbrowsern und ist es in erster Linie auch heute noch; die Standardisierung der Sprache als ECMAScript hat sie jedoch als einbettbare Allzwecksprache populär gemacht. Insbesondere die Mozilla-Implementierung SpiderMonkey ist in verschiedene Umgebungen wie die Yahoo! Widget Engine eingebettet. Weitere Anwendungen, die ECMAScript-Implementierungen einbetten, sind die Adobe-Produkte Adobe Flash (ActionScript) und Adobe Acrobat (zum Skripten von PDF-Dateien).

Tcl wurde als Erweiterungssprache geschaffen, wird aber inzwischen häufiger als Allzwecksprache in einer ähnlichen Rolle wie Python, Perl und Ruby verwendet. Rexx hingegen wurde ursprünglich als Job-Control-Sprache geschaffen, wird aber sowohl als Erweiterungssprache als auch als Allzwecksprache eingesetzt. Perl ist eine Allzwecksprache, hatte aber den Oraperl-Dialekt (1990), der aus einem Perl 4-Binary mit einkompiliertem Oracle Call Interface bestand. Diese wurde jedoch inzwischen durch eine Bibliothek (Perl-Modul), DBD::Oracle, ersetzt.

Andere komplexe und aufgabenorientierte Anwendungen können eine eingebettete Programmiersprache einbinden und offenlegen, um ihren Benutzern mehr Kontrolle zu ermöglichen und ihnen mehr Funktionalität zu bieten, als über eine noch so ausgefeilte Benutzeroberfläche verfügbar sein kann. Zum Beispiel betten Autodesk Maya 3D-Authoring-Tools die Maya Embedded Language ein, oder Blender, das Python verwendet, um diese Rolle auszufüllen.

Einige andere Arten von Anwendungen, die ein schnelleres Hinzufügen von Funktionen oder Tweak-and-Run-Zyklen benötigen (z. B. Game Engines), verwenden ebenfalls eine eingebettete Sprache. Dadurch können sie während der Entwicklung Funktionen schneller prototypisieren und freier anpassen, ohne dass der Benutzer intime Kenntnisse über das Innenleben der Anwendung haben muss oder sie nach jeder Anpassung neu aufbauen muss (was viel Zeit in Anspruch nehmen kann). Die Skriptsprachen, die für diesen Zweck verwendet werden, reichen von den gängigeren und bekannteren Lua und Python bis hin zu weniger bekannten wie AngelScript und Squirrel.

Ch ist eine weitere C-kompatible Skripting-Option für die Industrie, die in C/C++-Anwendungsprogramme eingebettet werden kann.

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.