LOLCODE
| LOLCODE | |
|---|---|
| [[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)|150px]] | |
| Basisdaten | |
| Paradigmen: | Esoterisch, imperativ (prozedural), strukturiert |
| Erscheinungsjahr: | 2007 |
| Designer: | Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value) |
| Entwickler: | Adam Lindsay |
| Aktuelle Version | Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)) |
| Wichtige Implementierungen: | C, JS, .NET u. a. |
| Beeinflusst von: | Lolcat |
| Beeinflusste: | ArnoldC, LOLPython |
| Betriebssystem: | Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value) |
| Lizenz: | Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value) |
| lolcode.org | |
LOLCODE ist eine esoterische Programmiersprache (angelehnt an den Netzjargon Lolspeak des humoristischen Internet-Phänomens Lolcat) und wurde im Jahr 2007 von Adam Lindsay an der Lancaster University entwickelt. Die Sprache ist bezüglich Syntax und Operatoren nicht klar definiert, jedoch existieren verschiedene funktionierende Interpreter und Compiler.<ref>Franz Graser: Softwareentwicklung - Die 10 bizarrsten Programmiersprachen. Vogel Business Media, 11. Juli 2011, abgerufen am 18. September 2017.</ref>
Struktur der Sprache und Beispiele[Bearbeiten]
Nachstehend ein Beispiel für ein Hallo-Welt-Programm in LOLCODE:
Beispiel 1[Bearbeiten]
HAI 1.2 CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE
Code Comment HAI [VERSION]Ein LOLCODE-Programm beginnt mit der Section HAI ("Hi!") und endet mit KTHXBYE. Bei dem Befehl HAI wird noch die Versionsnummer von LOLCODE angegeben, die zurzeit nicht von allen Implementierungen ausgewertet wird. CAN HAS [LIBRARY]?In vielen Programmiersprachen ist einer der ersten Befehle das Einbinden einer Bibliothek für die Standardbefehle wie z. B. Ein- und Ausgabe. In LOLCODE existiert dafür der Befehl CAN HAS, der zurzeit aber ignoriert wird. VISIBLE [MESSAGE]Gibt den Text aus dem Feld MESSAGE bzw. der "Zeichenkette" am Bildschirm aus. KTHXBYEMit der HAI Section beginnt ein LOLCODE-Programm, mit KTHXBYE wird diese Section beendet. KTHXBYE bedeutet "K," "THX," und "Bye" also "OK, thanks, bye".
Beispiel 2[Bearbeiten]
HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
In diesem Beispiel werden die Befehle zur Dateibehandlung vorgestellt (PLZ OPEN FILE "NAME"?—"Bitte öffne eine Datei namens "NAME""), und Fehlerbehandlung (AWSUM THX—"Toll, danke", und O NOES—"Oh nein!").
Andere verwendete Befehle sind I HAS A variable um Variablen zu deklarieren, variable R value ("variable [ist] Wert") für Wertzuweisungen zu einer Variable, Fehlermeldungen ausgeben mit INVISIBLE anstatt VISIBLE, und BTW ("by the way") um einen Kommentar einzuleiten, der von LOLCODE ignoriert wird.
Schleifen beginnen mit IM IN YR label und werden beendet mit IM OUTTA YR label. Schleifen werden mit dem Befehl ENUF ("enough, genug") abgebrochen, oder, in älteren Versionen mit GTFO. Schleifen können außerdem mit dem Befehl KTHX verlassen werden.
Beispiel 3[Bearbeiten]
HAI 1.0 CAN HAS STDIO? I HAS A VAR IM IN YR LOOP UP VAR!!1 VISIBLE VAR IZ VAR BIGGER THAN 10? KTHX IM OUTTA YR LOOP KTHXBYE
Dieses einfache Programm zeigt die Zahlen 1 bis 11 an (Spezifikation 1.0). Dasselbe Programm gemäß Spezifikation 1.2 sieht so aus:
HAI 1.2
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP UPPIN YR VAR TIL BOTH SAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE
Implementierungen[Bearbeiten]
Die erste Implementierung wurde von Jeff Jones in PHP geschrieben. Die Website dieses Parsers war auch die erste Website, die LOLCODE als Skriptsprache verwendete.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig First Parser Comment.] Lindsay.at, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 9. Juni 2009. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Weitere Implementierungen sind:
- .NET-Compiler für LOLCODE (ein Projekt von Nick Johnson)<ref>LOLCODE .NET compiler auf Google Code</ref>
- PL/LOLCODE für LOLCODE als eine in PostgreSQL integrierte serverseitige Programmiersprache (ein Projekt von Josh Tolley)<ref>PL/LOLCODE</ref>
- LOLCODE-Implementierung von Microsoft zu Testzwecken<ref>Charles Torre: John Lam and Martin Maly: Deep DLR. 24. März 2008, abgerufen am 18. September 2017 (Channel 9 auf MSDN).</ref>
- Konverter für LOLCODE nach JavaScript<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig LolCode.] Fullvolume.co.uk, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 9. Juni 2009.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- LOLCODE-Compiler für die Parrot virtual machine<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig A LOLCode compiler for the Parrot Virtual Machine.] GitHub, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 20. Juni 2009.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- LoLCode 1337 Compiler samt virtueller Maschine und Debugger in C<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig LoLCode 1337.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- Version für paralleles und verteiltes Rechnen mit LOLCODE<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Parallel and Distributed Computing with LOLCODE.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
Ähnliche Projekte[Bearbeiten]
- LOLPython (entwickelt von Andrew Dalke) verwendet an LOLCODE angelehnte Befehle, jedoch in einer der Programmiersprache Python ähnlichen Syntax. LOLPython übersetzt den Quellcode in Python-Code.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig LOLPython.] Dalkescientific.com, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 9. Juni 2009.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
- ArnoldC ist eine weitere Anlehnung an LOLCODE und verwendet (anstatt der lolspeak-ähnlichen Syntax) Zitate aus diversen Arnold-Schwarzenegger-Filmen.<ref>ArnoldC - A programming language based on the one liners of Arnold Schwarzenegger. Lauri Hartikka, abgerufen am 18. September 2017 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Aktuelle Rezeption[Bearbeiten]
HackerRank, ein internationales Netzwerk miteinander konkurrierender Programmierer (mit Hauptsitz in Palo Alto), lobte für Januar 2016 einen Programmier-Wettbewerb in LOLCODE aus.<ref>It's Elementary 2016 - Surprise Language Contest. HackerRank, abgerufen am 18. September 2017 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Im März 2017 wurde LOLCODE ferner an der Cornell University verwendet, um die Programmiermodelle Single-Program Multiple-Data und Partitioned Global Address Space zu vermitteln, wobei die unterhaltsame Struktur dieser Programmiersprache ein ansprechendes Vermittlungswerkzeug für eine Studentenschaft darstellt, die mit Internet-Memes aufgewachsen ist (Meme-based learning). Da bei esoterischen Programmiersprachen bislang keine Unterstützung für Parallelrechner oder verteilte Systeme vorgesehen war, wurden im Rahmen dieses Projekts entsprechende Compiler und Plug-ins programmiert, die sogar für Supercomputer skalierbar sein sollen. Die Entwickler planen, diese als Open Source Ressourcen zu veröffentlichen, und empfehlen sie explizit zur Anwendung für didaktische Zwecke.<ref>David A. Richie, James A. Ross: I CAN HAS SUPERCOMPUTER? A Novel Approach to Teaching Parallel and Distributed Computing Concepts Using a Meme-Based Programming Language. (PDF; 292 kB) Cornell University Library, 29. März 2017, S. 1 ff., abgerufen am 19. September 2017 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Weblinks[Bearbeiten]
- LOLCODE - An esoteric programming language. (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).
Einzelnachweise[Bearbeiten]
<references />