# Hollywood (Programmiersprache)

Hollywood ist eine von Andreas Falkenhahn (Airsoft Softwair) entwickelte Programmiersprache, die kommerziell vertrieben wird und deren Schwerpunkt die Erstellung von Multimedia-Anwendungen ist.
Hollywood ist für AmigaOS, MorphOS, WarpOS, AROS, macOS, Linux und Windows erhältlich. Der Hollywood Cross-Compiler ermöglicht es, Programme für alle von Hollywood unterstützten Plattformen vom selben System aus zu kompilieren. So können mit Hollywood unter Windows beispielsweise Programme für alle unterstützten Plattformen kompiliert werden. Die so erzeugten Programme sind dabei komplett eigenständig, können also z. B. auch von einem USB-Stick gestartet werden. Mittels einer Erweiterung können auch APK-Dateien für Android kompiliert werden.
Mit dem Zusatzprogramm Hollywood Designer kann die Software auch als Präsentationsprogramm bzw. Autorensystem verwendet werden.

## Allgemeines

Hollywoods Schwerpunkt liegt auf Einfachheit der Benutzung und Plattformunabhängigkeit. Es ist vor allem für Spiele und Multimedia-Anwendungen konzipiert. Der Sprachumfang beläuft sich derzeit auf etwa 900 Befehle, die die Anwendungsbereiche 2D-Grafik, Musik-/Tonausgabe, Dateioperationen, Textausgabe, Animationen, Sprites, Ebenen, Überblendeffekte, Bildmanipulation, Abspeichern von Bilddateien sowie AVI-Videodateien, Datums- und Zeitfunktionen, Eingabefunktionen (Tastatur, Joystick, Maus) sowie mathematische Operationen und Verarbeitung von Zeichenketten abdecken. Die Programmierung von Hollywood erfolgt über sogenannte Hollywood-Skripte (Dateiendung *.hws), die dynamisch kompiliert werden und auch als eigenständige Programme abgespeichert werden können. Alle Hollywood-Programme laufen in einer Sandbox, so dass diese nicht abstürzen können, sondern bei Fehlern geordnet aussteigen.

### Plattformunabhängigkeit

Das Konzept von Hollywood legt großen Wert auf Plattformunabhängigkeit, weshalb Hollywood-Skripte nicht auf die API des jeweiligen Betriebssystems zugreifen können. Dadurch soll sichergestellt werden, dass Hollywood-Programme auf allen unterstützten Plattformen sofort lauffähig sind. Zudem wurde auch in anderen Bereichen darauf Wert gelegt, Unterschiede zwischen den verschiedenen Plattformen möglichst zu nivellieren, so benutzt Hollywood beispielsweise für die Ausgabe von TrueType-Schriften speziell angepasste Routinen, damit der Text auf jeder Plattform exakt gleich dargestellt wird. Außerdem kann Hollywood mit Amiga-spezifischen Dateiformaten wie IFF-ILBM-Bildern, IFF-8SVX-Tönen oder IFF-ANIM-Dateien auch unter Windows, Linux und macOS umgehen.

### GUI-Entwicklung

Für Hollywood existieren verschiedene GUI-Toolkits. RapaGUI ist ein plattformübergreifendes Plugin für Hollywood, welches die Entwicklung von grafischen Benutzeroberflächen für Windows, macOS, Linux, AmigaOS (und kompatible) sowie Android ermöglicht. RapaGUI benutzt dabei die vom jeweiligen Betriebssystem zur Verfügung gestellten Schaltflächen, wodurch sich mit RapaGUI erstellte GUIs nicht von der nativen Benutzeroberfläche des jeweiligen Betriebssystems unterscheiden. Mit MUI Royale existiert ein Hollywood-Plugin, welches die Programmierung von Benutzeroberflächen für das Magic User Interface erlaubt. Ein weiteres GUI-Toolkit für Hollywood ist HGui. Im Gegensatz zu RapaGUI und MUI Royale zeichnet HGui alle Schaltflächen selbst und sieht somit auf jeder Plattform genau gleich aus.

### Compiler

Eine Besonderheit des Hollywood-Compilers ist es, dass alle externen Dateien automatisch in das zu kompilierende Programm eingebunden werden können. Auch für Schriftarten ist dies möglich. Dies ermöglicht das Erstellen von Programmen, die tatsächlich nur aus einer einzigen Datei bestehen und so einfach transportiert und weitergegeben werden können. Außerdem kann der Hollywood-Compiler auch Hollywood-Applets erstellen (Dateiendung *.hwa). Diese Applets sind viel kleiner als reguläre Hollywood-Programme, um diese abspielen zu können, muss der kostenfrei erhältliche Hollywood-Player installiert sein. Unter Android kann der Hollywood-Player als App über den Google Play kostenfrei installiert werden. Schließlich können Hollywood-Skripte auch als AVI-Videodateien exportiert werden.

### Geschichte

Der Ursprung von Hollywood liegt auf dem Amiga-Computer. Inspiriert durch Amiga-Programmiersprachen wie AMOS, Blitz Basic und Amiga E begann der Autor Andreas Falkenhahn nach seinem Abitur im Frühjahr 2002 die Entwicklung von Hollywood. Version 1.0 erschien im November 2002 ausschließlich für 68000-basierte Amiga-Systeme. Einen Monat später erschien das Programm bereits für das PowerPC-basierte MorphOS. Mit der Version 1.9 erfolgte im April 2004 die Unterstützung für WarpOS. Außerdem erschien im Frühjahr 2004 die erste Version vom Hollywood Designer, der Hollywood auch für Nichtprogrammierer zugänglich macht. AmigaOS 4 wird seit März 2005 unterstützt. Ab Version 2.0 (Januar 2006) benutzt Hollywood als integrierte VM die Programmiersprache Lua, allerdings mit stark abgewandelter Syntax und Funktionalität. Außerdem läuft Hollywood ab Version 2.0 auch auf der x86-Architektur durch die Unterstützung des Betriebssystems AROS. Ab Version 3.0 (Januar 2008) unterstützt Hollywood mit Windows und macOS erstmals zwei nicht AmigaOS-inspirierte Betriebssysteme. Ab Version 4.5 (Januar 2010) ist Hollywood auch separat für Windows erhältlich inklusive einer integrierten Entwicklungsumgebung. Ab Version 4.8 (April 2011) kann Hollywood auch Programme für Linux erzeugen. Mit der im Februar 2012 erschienenen Version 5.0 können nun auch Videos abgespielt und Vektorgrafikformate wie SVG geladen werden. Ab Version 5.1 wird auch Android unterstützt. Ab Version 6 sind die Kernkomponenten Anzeige, Audio und DOS vollständig abstrahiert. Diese können nun von externen Plugins komplett ersetzt werden, z. B. kann Hollywoods internen Grafiktreiber durch eine eigene Implementierung, die z. B. OpenGL nutzt ersetzt werden. Neben zahlreichen weiteren Neuerungen werden zudem native Menüleisten des jeweiligen Betriebssystems unterstützt, der Vektorgrafik-Renderer ist nun fest eingebaut, die I/O-Implementierung ist jetzt für Streaming optimiert und als weiteres Target des Compilers wird nun ARM-Linux unterstützt (z. B. für den Raspberry Pi). Mit Hollywood 7.0 werden erstmals Unicode und 64-bit-Architekturen unterstützt.

## Entwicklungsumgebung

Zur Nutzung unter Microsoft Windows wird Hollywood mit einer eigenen Entwicklungsumgebung ausgeliefert. Die macOS und Linux Version beinhaltet nur den Hollywood-Compiler zur Bedienung von der Kommandozeile. Auf Amiga Plattformen steht ein graphisches Tool zum Starten der mitgelieferten Demoanwendungen an zum Kompilieren eigener Anwendungen zur Verfügung, eine eigene Entwicklungsumgebung wird nicht mitgeliefert. Allerdings besitzen die gängigen Amiga-Entwicklungsumgebungen wie Cubic IDE und Codebench spezielle Hollywood-Erweiterungen, mit denen ein einfaches Erstellen von Hollywood-Skripten möglich ist.

## Hallo-Welt-Programm

Ein Hallo-Welt-Programm könnte in Hollywood zum Beispiel folgendermaßen aussehen:
Dieses Programm öffnet automatisch ein neues Fenster auf dem Desktop, gibt den Text "Hallo Welt" aus und wartet dann auf das Drücken der linken Maustaste. Sobald diese gedrückt wurde, wird das Programm beendet. Das Öffnen eines Fensters geschieht in der Hollywood-Programmiersprache dabei automatisch. Falls nicht anders angegeben, öffnet Hollywood für jedes Skript ein eigenständiges Fenster in der Standardauflösung 640 × 480 mit schwarzem Hintergrund.

## Hollywood Designer

Der Hollywood Designer ist ein Zusatzprogramm für Hollywood mit dem Präsentationen erstellt werden können. Der Hollywood-Designer bietet dazu eine WYSIWYG-Oberfläche, die auf dem Folienkonzept basiert. Es können beliebig viele Folien angelegt und mit Texten, Grafik und Ton versehen werden. Die Folien werden dann nacheinander oder in einer speziell definierten Reihenfolge mit zahlreichen Überblendeffekten angezeigt.
Darüber hinaus ist es mit dem Hollywood Designer auch möglich, interaktive Anwendungen zu erstellen, z. B. Kiosksysteme, die Benutzereingaben erfordern. Die fertige Präsentation/Anwendung wird dann automatisch mit Hollywood gestartet und kann natürlich auch als eigenständiges Programm für verschiedene Plattformen oder als Videodatei abgespeichert werden. Für fortgeschrittene Benutzer kann auch Hollywood-Code unmittelbar in das Projekt eingebunden werden und darüber auf den kompletten Befehlssatz von Hollywood zurückgegriffen werden.
Technisch gesehen macht der Hollywood-Designer dabei nichts anderes als Skripte für Hollywood nach der Vorgabe des Benutzers automatisch zu generieren. Dieser Prozess findet allerdings komplett im Verborgenen statt, so dass der Benutzer des Hollywood-Designer ohne Programmierkenntnisse Präsentationen und Multimedia-Anwendungen erstellen kann. Der Hollywood Designer kann dadurch jedoch nicht ohne Hollywood benutzt werden. Eine Hollywood-Installation ist für den Hollywood Designer zwingend erforderlich.
Die erste Version des Hollywood Designer erschien im April 2004. Momentan steht das Programm nur für AmigaOS-kompatible Betriebssysteme zur Verfügung, kann aber dank dem Hollywood Cross-Compiler Programme auch für Windows, macOS und Linux abspeichern.