<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Whitespace_%28Programmiersprache%29</id>
	<title>Whitespace (Programmiersprache) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Whitespace_%28Programmiersprache%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Whitespace_(Programmiersprache)&amp;action=history"/>
	<updated>2026-06-03T10:42:27Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Whitespace_(Programmiersprache)&amp;diff=86781&amp;oldid=prev</id>
		<title>imported&gt;Siegbert v2: Fast alle Quellen / Weblinks waren inzwischen offline =&gt; Archivversion oder alt. URL / Quellen formatiert und bib. Angaben ergänzt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Whitespace_(Programmiersprache)&amp;diff=86781&amp;oldid=prev"/>
		<updated>2024-12-08T11:12:47Z</updated>

		<summary type="html">&lt;p&gt;Fast alle Quellen / Weblinks waren inzwischen offline =&amp;gt; Archivversion oder alt. URL / Quellen formatiert und bib. Angaben ergänzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Whitespace in vim2.png|mini|Whitespace-Quellcode mit Syntax-Highlighting {{Farblegende|#0000ab|Tabulatorzeichen}} {{Farblegende|#ab0000|Leerzeichen}}]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Whitespace&amp;#039;&amp;#039;&amp;#039; ist eine im Jahr 2002 entwickelte [[esoterische Programmiersprache]]. Die Befehle und Steueranweisungen bestehen im Gegensatz zu üblichen Programmiersprachen aus definierten Folgen von Leerzeichen, Tabs und Zeilenumbrüchen (engl. &amp;#039;&amp;#039;[[Leerraum|Whitespaces]]&amp;#039;&amp;#039;). Neben dieser offensichtlichen Eigenart verwendet Whitespace das übliche [[Dualsystem]] nur für Daten; der Programmcode wird in einem dreiwertigen Stellensystem („l“, „t“, „u“ oder engl. “s”, “t”, “l”) abgebildet.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
Die Befehle und Steueranweisungen bestehen aus definierten Folgen von Leerzeichen (l), Horizontal-[[Tabulatorzeichen]] (t) und Zeilenumbrüchen (u).&lt;br /&gt;
&lt;br /&gt;
Es gibt kein Syntaxelement zur Kennzeichnung von Kommentaren. Stattdessen können Kommentare, die selbst keine Whitespaces enthalten dürfen, an beliebigen Stellen im Quellcode eingegeben werden. Der Interpreter ignoriert alle Zeichen, die für ihn keine Bedeutung haben.&lt;br /&gt;
&lt;br /&gt;
=== Befehle ===&lt;br /&gt;
Die Befehle lassen sich grob in fünf Bereiche einteilen:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Zeichen !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| l || [[Stapelspeicher|Stack]]-Zugriff&lt;br /&gt;
|-&lt;br /&gt;
| tl || Rechenfunktionen&lt;br /&gt;
|-&lt;br /&gt;
| tt || [[Dynamischer Speicher|Heap-Speicher]]-Zugriff&lt;br /&gt;
|-&lt;br /&gt;
| u || Schleifen, Sprünge, Bedingungen&lt;br /&gt;
|-&lt;br /&gt;
| tu || Ein-/Ausgabe von Werten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Eine genaue Beschreibung der einzelnen Befehle inklusive erwarteter Parameter befindet sich auf der unten genannten Webseite.&lt;br /&gt;
&lt;br /&gt;
=== Daten ===&lt;br /&gt;
Während die Befehle ein dreiwertiges Stellensystem verwenden, werden die Daten im dualen System abgebildet: An der ersten Stelle von links steht ein t für eine negative Zahl; ein l für eine positive. Im weiteren Verlauf steht t&amp;amp;nbsp;für&amp;amp;nbsp;1 und l&amp;amp;nbsp;für&amp;amp;nbsp;0. Die Spezifikation besagt, dass Zahlen eine beliebige Bitlänge haben können, allerdings können Compiler und Interpreter hier eine sinnvolle Obergrenze festlegen. Abgeschlossen wird ein Datum durch einen Zeilenumbruch.&lt;br /&gt;
&lt;br /&gt;
== Sprache ==&lt;br /&gt;
Whitespace ist eine [[Imperative Programmierung|imperative]], [[Stapelspeicher|stackbasierte]] Programmiersprache, die den Programmierern einen Stack und Heap zur Verfügung stellt.&lt;br /&gt;
&lt;br /&gt;
Alle Operationen arbeiten intern auf Ganzzahlen beliebiger Bit-Länge. Es besteht allerdings die Möglichkeit, ein Zeichen auszugeben, das durch seinen [[American Standard Code for Information Interchange|ASCII-Code]]-Wert identifiziert wird  (outchar).&lt;br /&gt;
&lt;br /&gt;
== Geschichte und Hintergrund ==&lt;br /&gt;
Whitespace wurde Ende 2002 von [[Edwin Brady]] und [[Chris Morris (Programmierer)|Chris Morris]] entwickelt. [[Slashdot]] berichtete am 1. April 2003 über diese Programmiersprache.&amp;lt;ref name=&amp;quot;slashdot&amp;quot;&amp;gt;{{Internetquelle |url=https://developers.slashdot.org/story/03/04/01/0332202/new-whitespace-only-programming-language |titel=New Whitespace-Only Programming Language |werk=developers.slashdot.org |datum=2003-04-01 |sprache=en |abruf=2008-05-19}}&amp;lt;/ref&amp;gt; Mitte 2003, mit der Fertigstellung eines Whitespace-[[Interpreter]]s in Whitespace, hat die Sprache die Kinderstube verlassen. Bereits fünf Jahre zuvor hatte [[Bjarne Stroustrup]] die Idee in einem Entwurf für [[C++]]2000 erwähnt. Seine Grundidee war, dass Mathematiker üblicherweise statt des [[Malzeichen]]s ein [[Leerzeichen]] notieren. Diesem Leerzeichen könnte man also in C++2000 die Bedeutung der Multiplikation zuordnen.&amp;lt;ref name=&amp;quot;Stroustrup&amp;quot;&amp;gt;{{Internetquelle |autor=Bjarne Stroustrup |url=https://stroustrup.com/whitespace98.pdf |titel=Generalizing Overloading for C++2000 |werk=stroustrup.com |hrsg=AT&amp;amp;T Labs |datum=1998 |format=PDF; 33&amp;amp;nbsp;kB |sprache=en |abruf=2007-10-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whitespace zeigt eine gewisse Ähnlichkeit mit [[Python (Programmiersprache)|Python]]-Programmen und [[make]]-Dateien, denn dort steuern Tabulatorzeichen am Zeilenanfang den Programmablauf. Die meisten anderen Programmiersprachen ignorieren Whitespaces. Für den menschlichen Betrachter dienen sie jedoch einer nützlichen Strukturierung, die den Programmcode besser lesbar machen kann.&lt;br /&gt;
&lt;br /&gt;
Vorteile seien laut den Erfindern, dass massenhafte Ausdrucke von Quelltexten Tinte sparen und dass Spione, die Code entwendet haben, diesen nicht entschlüsseln können. Allerdings bleiben noch Probleme bestehen, wenn man den Code nach dem Ausdrucken wieder eingeben möchte.&lt;br /&gt;
&lt;br /&gt;
Whitespace eignet sich besonders gut zum Verbergen von Programmcode in normalem Text ähnlich der [[Steganographie]]. Ein Beispiel dafür findet sich in einem Beitrag des [[International Obfuscated C Code Contest]].&lt;br /&gt;
&lt;br /&gt;
== Hello World ==&lt;br /&gt;
Das unten dargestellte „[[Hallo-Welt-Programm|Hello, world!]]“-Programm:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 lllullltlltllluttlllltulllttlltltuttlllltlulllttlttlluttllllttulllttlttlluttllll&lt;br /&gt;
 tllulllttlttttuttlllltltullltlttlluttllllttlullltllllluttlllltttullltttltttuttll&lt;br /&gt;
 lltlllulllttlttttuttlllltlltullltttlltluttlllltltlulllttlttlluttlllltlttulllttll&lt;br /&gt;
 tlluttllllttllullltlllltuttllllttltulllttltuttlllltttlullltltluttllllttttullllut&lt;br /&gt;
 tllllluulllltulultttlulutlltlutullllltutlllululltuullltluuuu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebungen ==&lt;br /&gt;
Der Editor [[Vim]] bietet von Haus aus ein [[Syntaxhervorhebung|Syntax-Highlighting]] für Whitespace an, wodurch die Programmierung deutlich vereinfacht wird. Dies läuft allerdings einem Designziel der Sprache, beim Ausdruck möglichst wenig Tinte zu verbrauchen, entgegen. Einen Mode für [[Emacs]] gibt es bei den [[#Weblinks|Weblinks]].&lt;br /&gt;
&lt;br /&gt;
Das oben und unten dargestellte &amp;quot;Hello, world!&amp;quot; kann mit einem der folgenden Skripts in richtiges Whitespace konvertiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 sed &amp;quot;s/ //g;s|//.*||g;s/\\n//g&amp;quot; $1 | tr -d &amp;#039;\n&amp;#039; | sed &amp;quot;s/l/ /g;s/t/\t/g;s/u/\n/g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 sed &amp;quot;s|//.*||g&amp;quot; &amp;lt; $1 | tr -d &amp;quot; \t\n&amp;quot; | tr ltu &amp;quot; \t\n&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[sed (Unix)|sed]] ist ein [[Unix]]-Werkzeug zur Bearbeitung von Text.&lt;br /&gt;
&lt;br /&gt;
=== Whitespace-Assembler ===&lt;br /&gt;
Da der Umgang mit trinär kodierten Maschinenbefehlen relativ mühsam ist, wird häufig ein äquivalenter [[Assembler (Informatik)|Assembler]]-Dialekt verwendet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 // &amp;quot;Hello, world!&amp;quot; in den Speicher schreiben&lt;br /&gt;
 lllu          // push 0   // Speicherstelle 0&lt;br /&gt;
 llltlltlllu   // push &amp;#039;H&amp;#039; // Zeichen &amp;#039;H&amp;#039;&lt;br /&gt;
 ttl           // store    // in den Speicher&lt;br /&gt;
 llltu         // push 1   // ...&lt;br /&gt;
 lllttlltltu   // push &amp;#039;e&amp;#039;&lt;br /&gt;
 ttl           // store&lt;br /&gt;
 llltlu        // push 2&lt;br /&gt;
 lllttlttllu   // push &amp;#039;l&amp;#039;&lt;br /&gt;
 ttl           // store&lt;br /&gt;
[…]&lt;br /&gt;
 lllttllu      // push 12&lt;br /&gt;
 llltlllltu    // push &amp;#039;!&amp;#039;&lt;br /&gt;
 ttl           // store&lt;br /&gt;
 lllttltu      // push 13&lt;br /&gt;
 lllttltu      // push \r&lt;br /&gt;
 ttl           // store&lt;br /&gt;
 llltttlu      // push 14&lt;br /&gt;
 llltltlu      // push \n&lt;br /&gt;
 ttl           // store&lt;br /&gt;
 lllttttu      // push 15&lt;br /&gt;
 llllu         // push 0&lt;br /&gt;
 ttl           // store&lt;br /&gt;
&lt;br /&gt;
 // Ausgabe-Schleife:&lt;br /&gt;
 llllu         // push 0&lt;br /&gt;
 ulllltu       // 1:          // /Schleife&lt;br /&gt;
    lul           // dup      // | --.&lt;br /&gt;
    ttt           // pop      // |   --- Spitze des Stacks untersuchen&lt;br /&gt;
    lul           // dup      // | --&amp;#039;&lt;br /&gt;
    utlltlu       // jz 2     // | ----&amp;gt; bei 0 sind wir fertig&lt;br /&gt;
    tull          // outchar  // | ----&amp;gt; Ausgabe&lt;br /&gt;
    llltu         // push 1   // | --._. Speicherstelle hochzaehlen&lt;br /&gt;
    tlll          // add      // | --&amp;#039;&lt;br /&gt;
 ululltu       // jmp 1       //  \naechster Durchlauf&lt;br /&gt;
 ullltlu       // 2:          //&lt;br /&gt;
 uuu           // halt        // ende&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=Oliver Lau |Titel=Hexenwerk&amp;amp;nbsp;– Ein Plädoyer für esoterische Programmiersprachen |Sammelwerk=[[c’t]] |Nummer=22 |Datum=2007 |Sprache=de |ISSN=0724-8679 |Seiten=192–199}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Internetquelle |url=http://compsoc.dur.ac.uk/whitespace/ |titel=The Whitespace Homepage |werk=compsoc.dur.ac.uk |sprache=en |archiv-url=https://web.archive.org/web/20150426112730/http://compsoc.dur.ac.uk/whitespace/ |archiv-datum=2015-04-26 |abruf=2004-03-26 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |url=http://compsoc.dur.ac.uk/whitespace/tutorial.html |titel=Tutorial |werk=compsoc.dur.ac.uk |sprache=en |archiv-url=https://web.archive.org/web/20030405142201/http://compsoc.dur.ac.uk/whitespace/tutorial.html |archiv-datum=2003-04-05 |abruf=2015-12-01 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |url=http://compsoc.dur.ac.uk/whitespace/whitespace-mode.el |titel=Emacs-Mode |werk=compsoc.dur.ac.uk |sprache=en |archiv-url=https://web.archive.org/web/20040614222648/http://compsoc.dur.ac.uk/whitespace/whitespace-mode.el |archiv-datum=2004-06-14 |abruf=2005-02-19 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |url=https://kryptografie.de/kryptografie/chiffre/whitespace.htm |titel=Whitespace-Interpreter |werk=kryptografie.de |sprache=de |abruf=2017-10-22 |abruf-verborgen=ja}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Esoterische Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Siegbert v2</name></author>
	</entry>
</feed>