<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=INTERCAL</id>
	<title>INTERCAL - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=INTERCAL"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=INTERCAL&amp;action=history"/>
	<updated>2026-05-15T02:41:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=INTERCAL&amp;diff=1671&amp;oldid=prev</id>
		<title>imported&gt;Invisigoth67: form</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=INTERCAL&amp;diff=1671&amp;oldid=prev"/>
		<updated>2025-01-08T07:40:54Z</updated>

		<summary type="html">&lt;p&gt;form&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Don Woods.jpg|rechts|mini|Don Woods, Coautor von INTERCAL, 2010]]&lt;br /&gt;
[[Datei:Jimbo Lyon.jpg|mini|Jim Lyon, Coautor von INTERCAL, 2005]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;INTERCAL&amp;#039;&amp;#039;&amp;#039;, abgekürzt für &amp;#039;&amp;#039;Compiler Language With No Pronouncable Acronym&amp;#039;&amp;#039; (Compiler-Sprache ohne aussprechbares [[Akronym]]), ist eine [[esoterische Programmiersprache]], die am 26. Mai [[1972]] von [[Donald R. Woods]] und James M. Lyon veröffentlicht wurde. Diese Implementation verwendete [[Lochkarte]]n und [[Extended Binary Coded Decimals Interchange Code|EBCDIC]]. Bei der Umsetzung für [[American Standard Code for Information Interchange|ASCII]] mussten daher der Operator ¢ durch $ und ⊻ durch ? ersetzt werden. Erst 1990 wurde eine erste UNIX-Implementierung von [[Eric S. Raymond]] programmiert. Heute ist INTERCAL auch auf [[Disk Operating System|DOS]] verfügbar. Aktuell stehen zwei Versionen zur Verfügung: C-INTERCAL und CLC-INTERCAL. Daneben gibt es auch Threaded Intercal.&lt;br /&gt;
&lt;br /&gt;
INTERCAL wurde mit dem Ziel entwickelt, Programmiersprachen zu parodieren sowie das Programmieren schwierig zu gestalten und die entstehenden Programme effektiv unlesbar zu machen. Insofern ähnelt INTERCAL keiner der bekannten Programmiersprachen, hat sehr wenige Sprachkonstrukte und ist schwierig zu erlernen.&lt;br /&gt;
&lt;br /&gt;
INTERCAL wird von einer kleinen Fan-Gemeinde gepflegt und kann dem interessierten Programmierer zur Erheiterung oder Rätsellösung dienen. Auf einer SUN [[SPARCstation|SPARCStation-1]] benötigte ein INTERCAL-Programm über 17 Stunden, um mittels des [[Sieb des Eratosthenes]] sämtliche Primzahlen kleiner als 65536 zu berechnen (in anderen Programmiersprachen weniger als eine Sekunde). Auf einer [[System/360|IBM 360/91]] dauerte es 30 Sekunden, um einen [[Integer (Datentyp)|16-bit Integer]] (d.&amp;amp;nbsp;h. eine Zahl kleiner als 65536) zu dividieren.&amp;lt;ref name=&amp;quot;InterviewDonWoods&amp;quot;&amp;gt;[http://www.techworld.com.au/article/251892/a-z_programming_languages_intercal/ &amp;#039;&amp;#039;The A–Z of Programming Languages: INTERCAL&amp;#039;&amp;#039;] (Interview mit Donald R. Woods, englisch)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten ==&lt;br /&gt;
Besonders bekannt ist INTERCAL für den Befehl &amp;lt;code&amp;gt;COME FROM&amp;lt;/code&amp;gt;, der mit C-INTERCAL eingeführt wurde. Dieser parodiert das [[GOTO]], das in einigen anderen Programmiersprachen, wie etwa [[BASIC]], vorkommt.&lt;br /&gt;
&lt;br /&gt;
So gut wie alle Programmiersprachen erlauben [[Kommentar (Programmierung)|Kommentare im Programm]], die vom Compiler ignoriert werden – wie zum Beispiel &amp;lt;code&amp;gt;/*&amp;amp;nbsp;...&amp;amp;nbsp;*/&amp;lt;/code&amp;gt; in [[C++]]. INTERCAL besitzt zwar die Möglichkeit, den Code zu kommentieren – gleichzeitig aber wird alles, was keinem gültigen Befehl entspricht, vom Compiler &amp;#039;&amp;#039;ick&amp;#039;&amp;#039; ignoriert, was eine interessante Möglichkeit eröffnet, Kommentare zu setzen. Aus demselben Grund gestaltet sich die Fehlersuche in einem INTERCAL-Programm extrem schwierig.&amp;lt;ref&amp;gt;Michael Mateas, Nick Montfort: [http://nickm.com/cis/a_box_darkly.pdf &amp;#039;&amp;#039;A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics&amp;#039;&amp;#039;] (PDF; 385&amp;amp;nbsp;kB).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Programm kompiliert nicht, wenn der Programmierer nicht freundlich genug ist und zu selten &amp;lt;code&amp;gt;PLEASE&amp;lt;/code&amp;gt; schreibt (Fehler E079 PROGRAMMER IS INSUFFICIENTLY POLITE). Auf der anderen Seite wird der Compiler selbstverliebt und verweigert seine Tätigkeit, wenn dieses Wort zu oft vorkommt (E099 PROGRAMMER IS OVERLY POLITE).&amp;lt;ref name=&amp;quot;INTERCAL_man&amp;quot;&amp;gt;[http://www.catb.org/~esr/intercal/ick.htm &amp;#039;&amp;#039;C-INTERCAL 0.29 Revamped Instruction Manual&amp;#039;&amp;#039;.] catb.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Woods erklärte in einem Interview, dass [[Donald E. Knuth|Donald Knuth]] ihm sagte, dass die [[Division (Mathematik)|Divisions]]-Routine von INTERCAL einen &amp;#039;&amp;#039;tollen Hack&amp;#039;&amp;#039; enthalte, den er in [[The Art of Computer Programming]] aufnehmen wolle.&amp;lt;ref&amp;gt;{{Internetquelle|url = http://www.techworld.com.au/article/251892/a-z_programming_languages_intercal/?pp=3|titel = The A-Z of Programming Languages: INTERCAL|autor = Naomi Hamilton|hrsg = |werk = TechWorld|datum = 2008-07-04|sprache = en|zugriff = 2015-11-10}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ROT13-Programm ==&lt;br /&gt;
{{Siehe auch|ROT13}}&lt;br /&gt;
&lt;br /&gt;
ROT13 „verschlüsselt“ einen Text, indem jeder Buchstabe im Alphabet um 13 Positionen verschoben wird. In einer Programmiersprache wie [[Python (Programmiersprache)|Python]] kann ein einzelner Buchstabe mit lediglich zwei Befehlen verschlüsselt werden: &amp;lt;code&amp;gt;chr(ord(&amp;quot;a&amp;quot;) + 13)&amp;lt;/code&amp;gt; verwandelt das “a” in “n”.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (10) PLEASE DON&amp;#039;T GIVE UP&lt;br /&gt;
   (1) DO .2 &amp;lt;- &amp;#039;?.1$#64&amp;#039;~&amp;#039;#0$#65535&amp;#039;&lt;br /&gt;
   DO .2 &amp;lt;- &amp;#039;&amp;amp;&amp;quot;&amp;#039;.1~.2&amp;#039;~&amp;#039;&amp;quot;?&amp;#039;?.2~.2&amp;#039;$#32768&amp;quot;~&amp;quot;#0$#65535“&amp;#039;&amp;quot;$&amp;quot;.2~.2“&amp;#039;~#1&lt;br /&gt;
   DO .3 &amp;lt;- &amp;#039;?#91$.1&amp;#039;~&amp;#039;#0$#65535&amp;#039;&lt;br /&gt;
   DO .3 &amp;lt;- &amp;#039;&amp;amp;&amp;quot;&amp;#039;#91~.3&amp;#039;~&amp;#039;&amp;quot;?&amp;#039;?.3~.3&amp;#039;$#32768&amp;quot;~&amp;quot;#0$#65535“&amp;#039;&amp;quot;$&amp;quot;.3~.3“&amp;#039;~#1&lt;br /&gt;
   DO (11) NEXT&lt;br /&gt;
   DO (2) NEXT&lt;br /&gt;
   DO (12) NEXT&lt;br /&gt;
   (11) DO (13) NEXT&lt;br /&gt;
   PLEASE FORGET #1&lt;br /&gt;
   DO (12) NEXT&lt;br /&gt;
   (13) DO (14) NEXT&lt;br /&gt;
   PLEASE FORGET #2&lt;br /&gt;
   DO (12) NEXT&lt;br /&gt;
   (14) DO STASH .1&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #1&lt;br /&gt;
   PLEASE DO (1000) NEXT&lt;br /&gt;
   DO RETRIEVE .1&lt;br /&gt;
   PLEASE RESUME .3&lt;br /&gt;
   (12) PLEASE FORGET #1&lt;br /&gt;
   DO .2 &amp;lt;- &amp;#039;?.1$#96&amp;#039;~&amp;#039;#0$#65535&amp;#039;&lt;br /&gt;
   DO .2 &amp;lt;- &amp;#039;&amp;amp;&amp;quot;&amp;#039;.1~.2&amp;#039;~&amp;#039;&amp;quot;?&amp;#039;?.2~.2&amp;#039;$#32768&amp;quot;~&amp;quot;#0$#65535“&amp;#039;&amp;quot;$&amp;quot;.2~.2“&amp;#039;~#1&lt;br /&gt;
   DO .3 &amp;lt;- &amp;#039;?#123$.1&amp;#039;~&amp;#039;#0$#65535&amp;#039;&lt;br /&gt;
   DO .3 &amp;lt;- &amp;#039;&amp;amp;&amp;quot;&amp;#039;#123~.3&amp;#039;~&amp;#039;&amp;quot;?&amp;#039;?.3~.3&amp;#039;$#32768&amp;quot;~&amp;quot;#0$#65535“&amp;#039;&amp;quot;$&amp;quot;.3~.3“&amp;#039;~#1&lt;br /&gt;
   PLEASE DO (15) NEXT&lt;br /&gt;
   PLEASE DO (3) NEXT&lt;br /&gt;
   DO (16) NEXT&lt;br /&gt;
   (15) DO (17) NEXT&lt;br /&gt;
   PLEASE FORGET #1&lt;br /&gt;
   DO (16) NEXT&lt;br /&gt;
   (17) DO (18) NEXT&lt;br /&gt;
   PLEASE FORGET #2&lt;br /&gt;
   DO (16) NEXT&lt;br /&gt;
   (18) PLEASE STASH .1&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #1&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   PLEASE RETRIEVE .1&lt;br /&gt;
   PLEASE RESUME .3&lt;br /&gt;
   (16) PLEASE FORGET #1&lt;br /&gt;
   DO RESUME #1&lt;br /&gt;
   (2) DO .2 &amp;lt;- #65&lt;br /&gt;
   DO (1010) NEXT&lt;br /&gt;
   PLEASE .1 &amp;lt;- .3&lt;br /&gt;
   PLEASE .2 &amp;lt;- #13&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO STASH .3&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #26&lt;br /&gt;
   DO (1040) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1030) NEXT&lt;br /&gt;
   DO .2 &amp;lt;- .3&lt;br /&gt;
   DO RETRIEVE .3&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1010) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #65&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO RESUME #1&lt;br /&gt;
   (3) DO .2 &amp;lt;- #97&lt;br /&gt;
   DO (1010) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #13&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO STASH .3&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #26&lt;br /&gt;
   DO (1040) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1030) NEXT&lt;br /&gt;
   DO .2 &amp;lt;- .3&lt;br /&gt;
   DO RETRIEVE .3&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1010) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO .2 &amp;lt;- #97&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO RESUME #1&lt;br /&gt;
   DO COME FROM (10)&lt;br /&gt;
   DO .4 &amp;lt;- #0&lt;br /&gt;
   DO .5 &amp;lt;- #0&lt;br /&gt;
   DO STASH .4 + .5&lt;br /&gt;
   DO ,1 &amp;lt;- #1&lt;br /&gt;
   DO COME FROM (33)&lt;br /&gt;
   DO WRITE IN ,1&lt;br /&gt;
   DO .1 &amp;lt;- ,1 SUB #1&lt;br /&gt;
   DO (31) NEXT&lt;br /&gt;
   PLEASE DO .6 &amp;lt;- #1&lt;br /&gt;
   PLEASE DO (34) NEXT&lt;br /&gt;
   (32) PLEASE RESUME &amp;#039;?.1$#256&amp;#039;~&amp;#039;#256$#256&amp;#039;&lt;br /&gt;
   (31) DO (32) NEXT&lt;br /&gt;
   DO FORGET #1&lt;br /&gt;
   DO .6 &amp;lt;- #0&lt;br /&gt;
   PLEASE DO (34) NEXT&lt;br /&gt;
   (33) DON&amp;#039;T GIVE UP&lt;br /&gt;
   (34) DO .6 &amp;lt;- &amp;quot;?!6&amp;#039;$#1&amp;quot;~#3&lt;br /&gt;
   DO (40) NEXT&lt;br /&gt;
   DO GIVE UP&lt;br /&gt;
   (40) DO (41) NEXT&lt;br /&gt;
   PLEASE FORGET #1&lt;br /&gt;
   DO (42) NEXT&lt;br /&gt;
   (41) DO RESUME .6&lt;br /&gt;
   (42) DO FORGET #1&lt;br /&gt;
   DO RETRIEVE .4&lt;br /&gt;
   DO .2 &amp;lt;- .4&lt;br /&gt;
   DO (1000) NEXT&lt;br /&gt;
   DO .4 &amp;lt;- .3~#255&lt;br /&gt;
   DO .3 &amp;lt;- .4&lt;br /&gt;
   DO STASH .4&lt;br /&gt;
   DO .1 &amp;lt;- .3&lt;br /&gt;
   DO (1) NEXT&lt;br /&gt;
   DO .3 &amp;lt;- !1~#15&amp;#039;$!1~#240&amp;#039;&lt;br /&gt;
   DO .3 &amp;lt;- !3~#15&amp;#039;$!3~#240&amp;#039;&lt;br /&gt;
   DO .2 &amp;lt;- !3~#15&amp;#039;$!3~#240&amp;#039;&lt;br /&gt;
   DO .1 &amp;lt;- .5&lt;br /&gt;
   DO (1010) NEXT&lt;br /&gt;
   DO .5 &amp;lt;- .2&lt;br /&gt;
   DO ,1 SUB #1 &amp;lt;- .3&lt;br /&gt;
   PLEASE READ OUT ,1&lt;br /&gt;
   PLEASE RESUME #1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Oliver Lau: &amp;#039;&amp;#039;Hexenwerk – Ein Plädoyer für esoterische Programmiersprachen&amp;#039;&amp;#039;. In: &amp;#039;&amp;#039;[[c’t]]&amp;#039;&amp;#039;, 22/07, S. 192–199 sowie &amp;#039;&amp;#039;c’t extra&amp;#039;&amp;#039;, 02/09, S. 40–45.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat}}&lt;br /&gt;
* [http://www.catb.org/~esr/intercal/ Sprach-Seite mit Implementierung und Handbuch] (englisch)&lt;br /&gt;
* [http://c2.com/cgi/wiki?ComeFrom ComeFrom-Befehl] in c2.com – Wiki&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;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Invisigoth67</name></author>
	</entry>
</feed>