<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>brainfuck | 酷 壳 - CoolShell</title>
	<atom:link href="https://coolshell.cn/tag/brainfuck/feed" rel="self" type="application/rss+xml" />
	<link>https://coolshell.cn</link>
	<description>享受编程和技术所带来的快乐 - Coding Your Ambition</description>
	<lastBuildDate>Tue, 12 Apr 2011 17:00:11 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2</generator>
	<item>
		<title>BT雷人的程序语言（大全）</title>
		<link>https://coolshell.cn/articles/4458.html</link>
					<comments>https://coolshell.cn/articles/4458.html#comments</comments>
		
		<dc:creator><![CDATA[陈皓]]></dc:creator>
		<pubDate>Wed, 13 Apr 2011 00:34:50 +0000</pubDate>
				<category><![CDATA[编程语言]]></category>
		<category><![CDATA[轶事趣闻]]></category>
		<category><![CDATA[Befunge]]></category>
		<category><![CDATA[BIT]]></category>
		<category><![CDATA[brainfuck]]></category>
		<category><![CDATA[Chef]]></category>
		<category><![CDATA[Haifu]]></category>
		<category><![CDATA[INTERCAL]]></category>
		<category><![CDATA[Malbolge]]></category>
		<category><![CDATA[Ook!]]></category>
		<category><![CDATA[PerlYuYan]]></category>
		<category><![CDATA[Piet]]></category>
		<category><![CDATA[Shakespeare]]></category>
		<category><![CDATA[Unlambda]]></category>
		<guid isPermaLink="false">http://coolshell.cn/?p=4458</guid>

					<description><![CDATA[<p>还记得以前本站的BT雷人的程序语言吗？除了那几个Brainfuck，LOLCODE和WhiteSpace，我以为这些是比较BT的语言，但是自从这两天我在网上看到...</p>
<p class="read-more"><a class="btn btn-default" href="https://coolshell.cn/articles/4458.html"> Read More<span class="screen-reader-text">  Read More</span></a></p>
The post <a href="https://coolshell.cn/articles/4458.html">BT雷人的程序语言（大全）</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></description>
										<content:encoded><![CDATA[<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415450859608158"
     crossorigin="anonymous"></script>还记得以前本站的<a title="BT雷人的程序语言" href="https://coolshell.cn/articles/1142.html" target="_blank">BT雷人的程序语言</a>吗？除了那几个<a href="http://www.muppetlabs.com/~breadbox/bf/" target="_blank">Brainfuck</a>，<a href="http://lolcode.com/" target="_blank">LOLCODE</a>和<a href="http://compsoc.dur.ac.uk/whitespace/index.php" target="_blank">WhiteSpace</a>，我以为这些是比较BT的语言，但是自从这两天我在网上看到一些（见文章最后的参考一节），我发现我错了，这个世界上，只有更变态，没有最变态。不相，你看看下面这些，简直变态到了极致啊。（下面的语言变态不分排名）</p>
<h4>Befunge</h4>
<p>第一个变态语言<a href="http://quadium.net/funge/spec98.html" target="_blank">Befunge</a>。<a href="http://en.wikipedia.org/wiki/Befunge" target="_blank">维基</a>上面说——这门语言由Chris Pressey在1993年创造，本意为设计一种为难编译器的语言……结果马上出现了一批编译器。Befunge的代码是二维的。它用 &lt; &gt; v ^ 这四个符号来控制一个指针在代码中移动，指针经过一个字符或数字则把它压入一个栈，四则运算符号的功能就是弹出栈顶两个元素进行计算后把结果压回去。用 _ 和 | 来表示有条件的方向选择：当栈顶元素为0时向右（上）走，否则向左（下）走。&amp; 和 ~ 分别用于读入数字或字符并压入栈，句号和逗号分别表示将栈顶元素作为整数或字符输出。最后以一个@符号表示程序结束。Befunge代码的注释不需要任何符号标明，你可以把注释写在程序的任何地方，只要运行时指针不会经过它就行了。</p>
<p>下面这段Hello World代码：</p>
<pre style="padding-left: 30px;">&gt;              v
v  ,,,,,"Hello"&lt;
&gt;48*,          v
v,,,,,,"World!"&lt;
&gt;25*,@</pre>
<p>下面一个是算圆周率的代码，非常的壮观：</p>
<p><span id="more-4458"></span></p>
<pre style="padding-left: 30px;">aa*          v                  +------------------------+
vp*9920p*9930&lt;                  | Pi generator in Bef-97 |
&gt;:09a*pa*3/1+19a*p09a*g:09b*v   |                        |
v_@# g*b90 p*b910        &lt; p&lt;   | 7/2/1997, Kevin Vigor  |
&gt;19a*g:+1-29b*p19a*g::09v       +------------------------+
v*a90g*b90*g*b91: _v#p*9&lt;
&gt;g-#v_ 2a*+\$  v  :$
&gt;\1-aa*ga*+v  p
v1:/g*b92p*991:&lt;  *
&gt;9b*p29b*g*199*g\v9
v*b92p*aa-1g*990-&lt;9
&gt;g2-29b*p099*g1-:0^
v -9p*b92:%ag*991  &lt;
&gt;#v_ 299*g1+299*p&gt;       ^
&gt;09b*g:#v_$v
v93p*b90-1&lt;
&gt;9*g199*ga/+.v
v:g*992 &lt;p*9 92-&lt;
v_29b*g399*p ^
&gt;09b*g:#v_v      1
vp*b90-1    &lt; $      g
&gt;199*g9<code data-enlighter-language="cb" class="EnlighterJSRAW">#v_&#039;9,v      *
&gt;&#039;0, &gt;&#039; ,299^&lt;/pre&gt;
通常认为Befunge是第一个基于“二维控制流”的语言，后来衍生出的一大批类似的语言都是受的Befunge影响。例如PingPong语言就是把Befunge的四种箭头符号换成正反斜杠，控制指针移动方向90度旋转，起一个反弹的作用。
&lt;h4&gt;Chef&lt;/h4&gt;
&lt;a href=&quot;http://www.dangermouse.net/esoteric/chef.html&quot; target=&quot;_blank&quot;&gt;Chef&lt;/a&gt;如其名一样“主厨”(&lt;a href=&quot;http://en.wikipedia.org/wiki/Chef_(programming_language)&quot; target=&quot;_blank&quot;&gt;Wiki link&lt;/a&gt;)，这门语言主要是为了让程序代码看起来像菜谱。这可以使得我们的&lt;a title=&quot;食客还是大厨&quot; href=&quot;https://coolshell.cn/articles/3589.html&quot; target=&quot;_blank&quot;&gt;程序员更像是大厨&lt;/a&gt;了，呵呵。该语言于2002年由David Morgan-Mar推出，核心是栈操作，特征就是——一套完整的Chef代码就是一个菜谱，程序名就是菜名，变量声明就是罗列原材料，后面一系列栈操作，就是菜肴的制作方法。把程序编写比作调和鼎鼐，有点意思，家庭主妇（或者“准家庭主妇”）试试看，权且当作人生预习。

用Chef编写Hello World代码如下：（在其网站上还有一个&lt;a href=&quot;http://www.dangermouse.net/esoteric/chef_fib.html&quot; target=&quot;_blank&quot;&gt;斐波拉契数的例子&lt;/a&gt;）
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Hello World Souffle.

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl.
Put dijon mustard into the mixing bowl.
Put lard into the mixing bowl.
Put red salmon into the mixing bowl.
Put oil into the mixing bowl.
Put water into the mixing bowl.
Put zucchinis into the mixing bowl.
Put oil into the mixing bowl.
Put lard into the mixing bowl.
Put lard into the mixing bowl.
Put eggs into the mixing bowl.
Put haricot beans into the mixing bowl.
Liquefy contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Serves 1.&lt;/pre&gt;
代码解读——原材料名显然可以随便改成别的原料，哪怕用单个字母也可以，不过少了点趣味性，但原料前面代表数量的数字不能改，那是ASCII代码。接下来菜肴制作方法就是把一个个字母和符号（都是ASCII）压入栈（就是代码中的“Put XXX into the mixing bowl”，从最后一个感叹号开始压），最后再把你做的菜托出上桌。

顺便说下，David Morgan-Mar已经设计出8种非主流编程语言了，还有一个变态的操作系统&lt;a href=&quot;http://www.dangermouse.net/esoteric/petrovich.html&quot; target=&quot;_blank&quot;&gt;Petrovich&lt;/a&gt;。  参看这位大哥的——&lt;a href=&quot;http://www.dangermouse.net/esoteric/&quot; target=&quot;_blank&quot;&gt;DM&#039;s Esoteric Programming Languages&lt;/a&gt;（下面会介绍这位老大搞出来的语言）
&lt;h4&gt;&lt;strong&gt;Shakespeare&lt;/strong&gt;&lt;/h4&gt;
&lt;a href=&quot;http://shakespearelang.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Shakespeare&lt;/a&gt;语言正如其名，其要让你的程序像“莎士比亚”的剧本一样充满艺术气息。

这个语言于2001年由Karl Hasselstrom和Jon Aslund联合推出，Shakespeare的代码完全模仿莎士比亚的戏剧。它也是一个基于栈的程序语言，程序中出场的每一个人物都代表一个栈。Shakespeare的代码自由度很高，因此同一个程序你可以写出完全不同的代码出来。

Shakespeare的Hello World代码如下（就是一部比较完整的“罗密欧与朱丽叶”的戏剧，作好心理准备）。“剧本”内容很无聊，就是一帮人在莫名其妙地称赞某些东西，里头还有古英语词汇，莎翁要是见了，可能会吐血。这里面Hello World或其ASCII码体现在全剧时不时出现的“The difference between……”句里面，根据各指代物品的好坏（比如鲜花算好的，牛粪算坏的）代表各数字，再进行各种运算最后相减（“The difference”暗指减法），得出一个字母或符号的ASCII码表。发明这个语言的人真是BT啊。
&lt;pre style=&quot;padding-left: 60px;&quot;&gt;Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Act I: Hamlet&#039;s insults and flattery.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Scene I: The insulting of Romeo.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Enter Hamlet and Romeo]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer&#039;s day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Exit Romeo]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Scene II: The praising of Juliet.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Enter Juliet]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Exit Juliet]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Scene III: The praising of Ophelia.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Enter Ophelia]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Hamlet:
Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Exeunt Ophelia and Hamlet]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Act II: Behind Hamlet&#039;s back.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Scene I: Romeo and Juliet&#039;s conversation.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Enter Romeo and Juliet]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Romeo:
Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Exit Romeo]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Scene II: Juliet and Ophelia&#039;s conversation.&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Enter Ophelia]&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Juliet:
Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind!&lt;/pre&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;[Exeunt]&lt;/pre&gt;
&lt;h4&gt;BIT&lt;/h4&gt;
&lt;a href=&quot;http://www.dangermouse.net/esoteric/bit.html&quot; target=&quot;_blank&quot;&gt;BIT语言&lt;/a&gt;也是 David Morgan-Mar 搞出来的。程序员在拥有访问所有数据的全部权限。这是一款强大的编程工具。在高级程序语言中，该工具可以操作这些令人费解的数据。

看看下面这段代码，其展示了BIT的强大之处——代码和注释的完美统一。（很像BASIC）
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;LINE NUMBER ONE CODE READ GOTO ONE ZERO
LINE NUMBER ONE ZERO CODE VARIABLE ZERO EQUALS THE JUMP REGISTER GOTO ONE ONE
LINE NUMBER ONE ONE CODE READ GOTO ONE ZERO ZERO
LINE NUMBER ONE ZERO ZERO CODE VARIABLE ONE EQUALS THE JUMP REGISTER GOTO ONE ZERO ONE
LINE NUMBER ONE ZERO ONE CODE THE JUMP REGISTER EQUALS OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ONE CLOSE PARENTHESIS NAND OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ONE CLOSE PARENTHESIS GOTO ONE ONE ZERO IF THE JUMP REGISTER IS EQUAL TO ONE GOTO ONE ZERO ZERO ZERO IF THE JUMP REGISTER IS EQUAL TO ZERO
LINE NUMBER ONE ONE ZERO CODE PRINT ONE GOTO ONE ONE ONE
LINE NUMBER ONE ONE ONE CODE PRINT ZERO
LINE NUMBER ONE ZERO ZERO ZERO CODE THE JUMP REGISTER EQUALS OPEN PARENTHESIS VARIABLE ZERO NAND VARIABLE ZERO CLOSE PARENTHESIS NAND OPEN PARENTHESIS VARIABLE ONE NAND VARIABLE ONE CLOSE PARENTHESIS GOTO ONE ZERO ZERO ONE IF THE JUMP REGISTER IS EQUAL TO ZERO GOTO ONE ZERO ONE ZERO IF THE JUMP REGISTER IS EQUAL TO ONE
LINE NUMBER ONE ZERO ZERO ONE CODE PRINT ZERO
LINE NUMBER ONE ZERO ONE ZERO CODE PRINT ONE&lt;/pre&gt;
当然，对于空格和换行符，显得太冗余了，去掉他们也没有问题。
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;LINENUMBERONECODEREADGOTOONEZEROLINENUMBERONEZEROCODEVARIABLEZEROEQUALSTHEJUMPR
EGISTERGOTOONEONELINENUMBERONEONECODEREADGOTOONEZEROZEROLINENUMBERONEZEROZEROCO
DEVARIABLEONEEQUALSTHEJUMPREGISTERGOTOONEZEROONELINENUMBERONEZEROONECODETHEJUMP
REGISTEREQUALSOPENPARENTHESISVARIABLEZERONANDVARIABLEONECLOSEPARENTHESISNANDOPE
NPARENTHESISVARIABLEZERONANDVARIABLEONECLOSEPARENTHESISGOTOONEONEZEROIFTHEJUMPR
EGISTERISEQUALTOONEGOTOONEZEROZEROZEROIFTHEJUMPREGISTERISEQUALTOZEROLINENUMBERO
NEONEZEROCODEPRINTONEGOTOONEONEONELINENUMBERONEONEONECODEPRINTZEROLINENUMBERONE
ZEROZEROZEROCODETHEJUMPREGISTEREQUALSOPENPARENTHESISVARIABLEZERONANDVARIABLEZER
OCLOSEPARENTHESISNANDOPENPARENTHESISVARIABLEONENANDVARIABLEONECLOSEPARENTHESISG
OTOONEZEROZEROONEIFTHEJUMPREGISTERISEQUALTOZEROGOTOONEZEROONEZEROIFTHEJUMPREGIS
TERISEQUALTOONELINENUMBERONEZEROZEROONECODEPRINTZEROLINENUMBERONEZEROONEZEROCOD
EPRINTONE&lt;/pre&gt;
&lt;h4&gt;Haifu&lt;/h4&gt;
&lt;a href=&quot;http://www.dangermouse.net/esoteric/haifu.html&quot; target=&quot;_blank&quot;&gt;Haifu&lt;/a&gt;程序语言也是David Morgan-Mar 搞出来的。从命名上就可以看出来它是一个汉语拼音。正是如此，作者想使用东方的哲学来创造一种编程的语言。其中还有Yin（阴）和 Yang（阳）——相当于布尔变量中的True/False，当然，也有金（Metal）木（Wood）水（Water）火（Fire）土（Earth）。呵呵。
&lt;ul&gt;
	&lt;li&gt;Wood: tree, grass, cherry, oak.&lt;/li&gt;
	&lt;li&gt;Fire: flame, ash, smoke, embers.&lt;/li&gt;
	&lt;li&gt;Earth: soil, mountain, rock, plain.&lt;/li&gt;
	&lt;li&gt;Metal: sword, iron, plough, knife.&lt;/li&gt;
	&lt;li&gt;Water: rain, snow, river, ice.&lt;/li&gt;
&lt;/ul&gt;
自然出现了一张关系表：
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;3&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;元素关系&lt;/th&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B 生A&lt;/td&gt;
&lt;td&gt;A+B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B 克 A&lt;/td&gt;
&lt;td&gt;A-B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B 怕 A&lt;/td&gt;
&lt;td&gt;A/B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B 爱 A&lt;/td&gt;
&lt;td&gt;A*B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B 就是 A&lt;/td&gt;
&lt;td&gt;如果A和B都是阳，则是阳，否则是阴&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Piet&lt;/h4&gt;
David Morgan-Mar 发明的用位图编程的&lt;a href=&quot;http://www.dangermouse.net/esoteric/piet.html&quot; target=&quot;_blank&quot;&gt;Piet语言&lt;/a&gt;也是BT到了极致，你还记得前两的那个“&lt;a title=&quot;我有一个Hello World的C++程序编译不过&quot; href=&quot;https://coolshell.cn/articles/4170.html&quot; target=&quot;_blank&quot;&gt;我的hello world编不过去&lt;/a&gt;”文章中的那个强人用windows的画图程序编程的例子吗？呵呵Piet完全是用位图编程的语言。

下面这个图片就是其Hello World的示例：
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.topdesignmag.com/wp-content/uploads/2011/04/Piet_hello_big.png&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Piet_hello_big&quot; src=&quot;http://www.dangermouse.net/esoteric/piet/Piet_hello_big.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;145&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;再看看斐波拉契数列的程序示例:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.dangermouse.net/esoteric/piet/fibbig.gif&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://www.dangermouse.net/esoteric/piet/fibbig.gif&quot; alt=&quot;&quot; width=&quot;110&quot; height=&quot;121&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
这里还有更多的示例：&lt;a href=&quot;http://www.dangermouse.net/esoteric/piet/samples.html&quot;&gt;http://www.dangermouse.net/esoteric/piet/samples.html&lt;/a&gt;
&lt;h4&gt;&lt;strong&gt;Malbolge&lt;/strong&gt;&lt;/h4&gt;
&lt;a href=&quot;http://www.lscheffer.com/malbolge.shtml&quot; target=&quot;_blank&quot;&gt;Malbolge语言&lt;/a&gt;，是最早的一个以代码丑陋为目标而设计出的程序语言，你几乎不可能读懂Malbolge的代码。它共有8条指令，所有运算都基于3进制，控制程序流的唯一指令是无条件跳转。其是BenOlmstead在1998年引进公共领域的深奥程序语言，名称来源于“the eighth circle of hell in Dante’s Inferno”，之后更名为Malbolge。

这被认为是地狱级的编程语言。

看看它的Hello World程序：
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;&lt;code&gt;(&#039;&amp;%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@&gt;}=&lt;M:9wv6WsU2T|nm-,jcL(I&amp;%$#&quot;
 </code>]V?Tx&lt;uVtT<code data-enlighter-language="raw" class="EnlighterJSRAW">Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj&quot;Fhg${z@&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Unlambda&lt;/h4&gt;
关于&lt;a href=&quot;http://www.madore.org/~david/programs/unlambda/&quot; target=&quot;_blank&quot;&gt;Unlambda语言&lt;/a&gt;，David Madore是这个语言的发明人，他于1976年8月3日生于法国，其是法国-加拿大籍数学家和计算机科学爱好者）。在unlambda里，所有东西都是函数。基本操作就是S， K， 和I三个组合子。当然，unlambda也加入一些扩展，让程序稍微好些一点。
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;</code><code data-enlighter-language="s" class="EnlighterJSRAW"></code><code data-enlighter-language="sii" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW">ki
 </code><code data-enlighter-language="raw" class="EnlighterJSRAW">s</code><code data-enlighter-language="ks" class="EnlighterJSRAW">s</code>
     <code data-enlighter-language="s" class="EnlighterJSRAW"></code><code data-enlighter-language="s" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW">ks</code><code data-enlighter-language="k" class="EnlighterJSRAW">s</code><code data-enlighter-language="kr" class="EnlighterJSRAW">s</code>
               <code data-enlighter-language="s" class="EnlighterJSRAW"></code><code data-enlighter-language="si" class="EnlighterJSRAW">k</code><code data-enlighter-language="s" class="EnlighterJSRAW"></code><code data-enlighter-language="s" class="EnlighterJSRAW">k</code><code data-enlighter-language="d" class="EnlighterJSRAW">k
                               </code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code><code data-enlighter-language="raw" class="EnlighterJSRAW"></code>.H.e.l.l.o.,. .w.o.r.l.d.!
                        k
      k
  <code data-enlighter-language="raw" class="EnlighterJSRAW">k</code><code data-enlighter-language="raw" class="EnlighterJSRAW">s</code><code data-enlighter-language="ksk" class="EnlighterJSRAW">s</code>`k.*</pre>
<h4>Ook!</h4>
<p><a href="http://www.dangermouse.net/esoteric/ook.html" target="_blank">Ook! 语言</a>也是David Morgan-Mar 发明的，与Brainfuck类似, 但用单词“<code>Ook！”</code>，“<code>Ook.</code>” 和“<code>Ook?</code>”代替。我们来看一个Hello World的一个示例：</p>
<pre style="padding-left: 30px;">Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.</pre>
<p>下面是一些转换器和解释器：</p>
<ul>
<li><a href="http://www.dangermouse.net/esoteric/Ook.java">Java Ook!-to-BrainF*** 和 BrainF***-to-Ook! 转换器</a>.</li>
<li><a href="http://www.ruby-lang.org/en/raa-list.rhtml?name=RubyOok">Ook! Ruby解释器</a>.</li>
<li><a href="http://www.orakel.ntnu.no/~oyving/code/python/pook.py">Ook! Python解释器</a>.</li>
<li><a href="http://bluesorcerer.net/esoteric/ook.html">Ook!  .Net 编译器叫Ook#</a></li>
<li><a href="http://search.cpan.org/search?module=Acme::Ook">Ook! perl 解释器</a>.</li>
</ul>
<h4><strong>TMMLPTEALPAITAFNFAL</strong></h4>
<p>你没看错，上面这一排毫无意义的字母是一个语言的名称。它是The Multi-Million Language Project To End All Language Projects And Isn&#8217;t That A Fine Name For A Language的缩写。<a href="http://p-nand-q.com/humor/programming_languages/tmmlpteal.html" target="_blank">TMMLPTEALPAITAFNFAL语言</a>没有固定的语法规则，每一天都是不同的语法。例如，2000年10月13日你可以使用DIV但不能使用MOD；到了10月14日时你可以使用MOD了但DIV又不能用了。因此，你今天写的程序运行起来完全正常，但是到了明天就无法编译了。下面是一个TMMLPTEALPAITAFNFAL的Hello World程序，当然现在已经无法编译了。</p>
<pre style="padding-left: 30px;"><code>DECLARE CELL 100 AS READPOS
 DECLARE 10 AS NEWLINE
 WRITE CHAR NEWLINE
 COPY "Hello, World" TO CELL 0
 COPY 0 TO READPOS
 WHILE READPOS INDIRECT DO GOSUB 300
 WRITE CHAR NEWLINE
 RETURN
LINE 300: WRITE CHAR READPOS INDIRECT
 ADD 1 TO READPOS
 RETURN</code></pre>
<h4>INTERCAL</h4>
<p><a href="http://catb.org/~esr/intercal/" target="_blank">INTERCAL语言</a>（<a href="http://en.wikipedia.org/wiki/INTERCAL" target="_blank">Wikipedia</a>）全称是“Compiler Language With No Pronounceable Acronym”。自认为是“超级黑客”的人可以试试用这个语言写程序。由老牌黑客<a href="http://en.wikipedia.org/wiki/Don_Woods">Don Woods</a> 和 <a href="http://en.wikipedia.org/wiki/James_M._Lyon">James M. Lyon</a> 在1972年发明，其是用来讽刺当时的那些编程语言。今天 这个语言有两个版本，一个是由牛人<a href="http://en.wikipedia.org/wiki/Eric_S._Raymond">Eric S. Raymond</a>维护的C-INTERCAL，另一个是Claudio Calvelli 维护的CLC-INTERCAL。（<strong>注</strong>：在自由软件启蒙阶段，<a href="http://en.wikipedia.org/wiki/Eric_S._Raymond">Eric S. Raymond</a>以如椽之笔呼啸而出，其核心著作被业界成为&#8221;五部曲&#8221;：《黑客道简史》（A Brief History of Hackerdom）、 《大教堂和市集》（The Cathedral and the Bazaar）、《如何成为一名黑客》（How To Become A Hacker）、《开拓智域》（Homesteading the Noosphere）、《魔法大锅炉》（The Magic Cauldron）。其中最著名的当然还是《大教堂和市集》，它在自由软件运动中的地位相当于基督教的《圣经》。而用黑客们的话说，这是&#8221;黑客藏经阁&#8221;的 第一个收藏。）</p>
<p>来看看其Hello World的程序：</p>
<pre style="padding-left: 30px;">DO ,1 &lt;- #13
PLEASE DO ,1 SUB #1 &lt;- #238
DO ,1 SUB #2 &lt;- #108
DO ,1 SUB #3 &lt;- #112
DO ,1 SUB #4 &lt;- #0
DO ,1 SUB #5 &lt;- #64
DO ,1 SUB #6 &lt;- #194
DO ,1 SUB #7 &lt;- #48
PLEASE DO ,1 SUB #8 &lt;- #22
DO ,1 SUB #9 &lt;- #248
DO ,1 SUB #10 &lt;- #168
DO ,1 SUB #11 &lt;- #24
DO ,1 SUB #12 &lt;- #16
DO ,1 SUB #13 &lt;- #162
PLEASE READ OUT ,1
PLEASE GIVE UP</pre>
<h4>HQ9++</h4>
<p><a href="http://www.dangermouse.net/esoteric/hq9plusplus.html" target="_blank">HQ9++语言</a>同样是David Morgan-Mar 发明的，其带有四个指令的joke语言。</p>
<ul>
<li><strong>H</strong>: 输出 <a title="Hello,world!" href="http://www.esolangs.org/wiki/Hello%2C_world%21">“hello,world”</a></li>
<li><strong>Q</strong>: 输出程序员的源代码</li>
<li><strong>9</strong>: 打印 <a title="99 bottles of beer" href="http://www.esolangs.org/wiki/99_bottles_of_beer">“99 Bottles of Beer”</a> 的歌词</li>
<li><strong>+</strong>: 累加器</li>
</ul>
<h4><strong>PerlYuYan</strong></h4>
<p><a href="http://zh.wikipedia.org/wiki/PerlYuYan" target="_blank">PerlYuYa</a>n语言是一个能令人使用中文文言文开发程式 Perl 程式的 Perl 模块，由<a href="http://zh.wikipedia.org/wiki/%E5%94%90%E9%B3%B3">唐凤</a>于2002年一月发表。它是<a href="http://zh.wikipedia.org/wiki/%E4%B8%AD%E6%96%87%E7%B7%A8%E7%A8%8B%E8%AA%9E%E8%A8%80">中文编程语言</a>的尝试。作者利用中文的特质，将许多指令改成以一个中国汉字来表示，因而造成了文言语法的感觉。</p>
<p>看看下面的这段代码，相当的文言文啊。有兴趣可以<a href="http://search.cpan.org/~autrijus/Lingua-Sinica-PerlYuYan-0.03/" target="_blank">去CPAN上下载</a>回来玩玩。</p>
<pre style="padding-left: 30px;">#!/usr/local/bin/perl

use Lingua::Sinica::PerlYuYan;

用警兮用嚴。

印道
一至一
哉兮

印編曰雜申雜申矣
  又纖曰龍鼠矣
    又曰一矣

亂曰
國無人莫我知兮    又何懷乎故都
既莫足與為美政兮  吾將從彭咸之所居</pre>
<p>还有下面这个五言。</p>
<pre style="padding-left: 30px;"><code># The Sieve of Eratosthenes - 埃拉托斯芬篩法
use Lingua::Sinica::PerlYuYan;

  用籌兮用嚴。井涸兮無礙
。印曰最高矣  又道數然哉。
。截起吾純風  賦小入大合。
。習予吾陣地  並二至純風。
。當起段賦取  加陣地合始。
。陣地賦篩始  繫繫此雜段。
。終陣地兮印  正道次標哉。
。輸空接段點  列終註泰來。</code></pre>
<p>&nbsp;</p>
<h4>参考：</h4>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Category:Esoteric_programming_languages">Esoteric_programming_languages</a></li>
<li><a href="http://www.topdesignmag.com/top-13-most-absurd-programming-languages/" target="_blank">Top 13 Most Absurd Programming Languages</a></li>
<li><a href="http://wei.si/blog/2011/04/befunge-and-perlyuyan/" target="_blank">Befunge语言和文言文编程</a></li>
<li><a href="http://hi.baidu.com/namekin/blog/item/9f36f21fc6be296df724e452.html" target="_blank">疯狂的编程语言——ENGLISH，Chef，Shakespeare</a></li>
<li><a href="http://www.dangermouse.net/esoteric/" target="_blank">DM&#8217;s Esoteric Programming Languages</a></li>
<li><a title="Permanent Link to 十大另类程序语言（上）" rel="bookmark" href="http://www.matrix67.com/blog/archives/253">十大另类程序语言（上）</a></li>
<li><a title="Permanent Link to 十大另类程序语言（下）" rel="bookmark" href="http://www.matrix67.com/blog/archives/255">十大另类程序语言（下）</a></li>
</ul>
<p>看过这些，我我还有什么好说的呢，什么C/C++/Java，神马都是浮云了……</p>
<div><span style="font-family: Simsun; line-height: normal; font-size: medium;">(全文完) </span></div>
<p><!--



<p align="center"><a href= target=_blank><img decoding="async" src=""></a></p>





<p align="center"><img decoding="async" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.weixin.jpg"> <img decoding="async" loading="lazy" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.mini_.jpg" width="300" height="300"> <br />关注CoolShell微信公众账号和微信小程序</p>

 

--></p>
<div style="margin-top: 15px; font-size: 16px;color: #cc0000;">
<p align="center"><strong>（转载本站文章请注明作者和出处 <a href="https://coolshell.cn/">酷 壳 &#8211; CoolShell</a> ，请勿用于任何商业用途）</strong></p>
</div>

<div class="wp_rp_wrap  wp_rp_vertical_m" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">相关文章</h3><ul class="related_post wp_rp"><li ><a href="https://coolshell.cn/articles/2529.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="StackOverflow的404错误页" width="150" height="150" /></a><a href="https://coolshell.cn/articles/2529.html" class="wp_rp_title">StackOverflow的404错误页</a></li><li ><a href="https://coolshell.cn/articles/1142.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/21.jpg" alt="BT雷人的程序语言" width="150" height="150" /></a><a href="https://coolshell.cn/articles/1142.html" class="wp_rp_title">BT雷人的程序语言</a></li><li ><a href="https://coolshell.cn/articles/17010.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2015/04/isolation-150x150.jpg" alt="Docker基础技术：Linux Namespace（上）" width="150" height="150" /></a><a href="https://coolshell.cn/articles/17010.html" class="wp_rp_title">Docker基础技术：Linux Namespace（上）</a></li><li ><a href="https://coolshell.cn/articles/2296.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2010/04/googleOnebox-150x150.png" alt="Google居然在阻止人们自杀？" width="150" height="150" /></a><a href="https://coolshell.cn/articles/2296.html" class="wp_rp_title">Google居然在阻止人们自杀？</a></li><li ><a href="https://coolshell.cn/articles/5709.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/29.jpg" alt="API设计：用流畅接口构造内部DSL" width="150" height="150" /></a><a href="https://coolshell.cn/articles/5709.html" class="wp_rp_title">API设计：用流畅接口构造内部DSL</a></li><li ><a href="https://coolshell.cn/articles/1484.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2009/09/tcp1-150x150.jpg" alt="TCP网络关闭的状态变换时序图" width="150" height="150" /></a><a href="https://coolshell.cn/articles/1484.html" class="wp_rp_title">TCP网络关闭的状态变换时序图</a></li></ul></div></div>The post <a href="https://coolshell.cn/articles/4458.html">BT雷人的程序语言（大全）</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></content:encoded>
					
					<wfw:commentRss>https://coolshell.cn/articles/4458.html/feed</wfw:commentRss>
			<slash:comments>61</slash:comments>
		
		
			</item>
		<item>
		<title>StackOverflow的404错误页</title>
		<link>https://coolshell.cn/articles/2529.html</link>
					<comments>https://coolshell.cn/articles/2529.html#comments</comments>
		
		<dc:creator><![CDATA[陈皓]]></dc:creator>
		<pubDate>Fri, 25 Jun 2010 00:35:41 +0000</pubDate>
				<category><![CDATA[杂项资源]]></category>
		<category><![CDATA[轶事趣闻]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[brainfuck]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Polyglot]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[StackOverflow]]></category>
		<guid isPermaLink="false">http://coolshell.cn/?p=2529</guid>

					<description><![CDATA[<p>不知道大家有没有注意到StakeOverflow的404错误页面？其显示了下面的这个图片： 这个是一个很有意思的图片，不知道你看懂了吗？看上去像Python，又...</p>
<p class="read-more"><a class="btn btn-default" href="https://coolshell.cn/articles/2529.html"> Read More<span class="screen-reader-text">  Read More</span></a></p>
The post <a href="https://coolshell.cn/articles/2529.html">StackOverflow的404错误页</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></description>
										<content:encoded><![CDATA[<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415450859608158"
     crossorigin="anonymous"></script>不知道大家有没有注意到StakeOverflow的<a href="http://stackoverflow.com/404" target="_blank">404错误页面</a>？其显示了下面的这个图片：</p>
<p style="text-align: center;"><img decoding="async" src="http://sstatic.net/stackoverflow/img/polyglot-404.png" alt="" width="500" /></p>
<p style="text-align: left;">这个是一个很有意思的图片，不知道你看懂了吗？看上去像Python，又像 Ruby，还像 Perl，当然也有 C的影子，还有<a href="https://coolshell.cn/articles/1142.html" target="_blank">Brainfuck</a>。是的，这是一个杂交程序，杂交了Python，Ruby，Perl，C，还有Brainfuck（注意其中的#号），所有的语句都是输出“404”字符串。</p>
<p style="text-align: left;">关于这种杂交程序，本站以前也发布过《<a rel="bookmark" href="https://coolshell.cn/articles/1824.html" target="_blank">C语言和sh脚本的杂交代码</a>》，大家可以前往一看。这样的有趣的玩法叫“<a rel="nofollow" href="http://en.wikipedia.org/wiki/Polyglot_%28computing%29" target="_blank">Polyglot</a>”，也就是说，把N种语言写在一个文件中，然后，该文件在任何编译器下都可以运行，上述的那段代码在Python，Ruby，Perl，Brainfuck下都可以正常运行，也可以被C和的编译器编译通过，并被运行。</p>
<p style="text-align: left;">下面是这个图片的字符码，以供各位试试。</p>
<p style="text-align: left;"><span id="more-2529"></span></p>
<pre><code># define v putchar
#   define print(x) main(){v(4+v(v(52)-4));return 0;}/*
#&gt;+++++++4+[&gt;++++++&lt;-]&gt;++++.----.++++.*/
print(202*2);exit();
#define/*&gt;.@*/exit()</code></pre>
<p style="text-align: left;">欢迎你留下你的看法。</p>
<p style="text-align: left;">（全文完）</p>
<p><!--



<p align="center"><a href= target=_blank><img decoding="async" src=""></a></p>





<p align="center"><img decoding="async" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.weixin.jpg"> <img decoding="async" loading="lazy" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.mini_.jpg" width="300" height="300"> <br />关注CoolShell微信公众账号和微信小程序</p>

 

--></p>
<div style="margin-top: 15px; font-size: 16px;color: #cc0000;">
<p align="center"><strong>（转载本站文章请注明作者和出处 <a href="https://coolshell.cn/">酷 壳 &#8211; CoolShell</a> ，请勿用于任何商业用途）</strong></p>
</div>

<div class="wp_rp_wrap  wp_rp_vertical_m" ><div class="wp_rp_content"><h3 class="related_post_title">相关文章</h3><ul class="related_post wp_rp"><li ><a href="https://coolshell.cn/articles/1839.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2009/11/oscar-meyer-wienermobile-150x150.jpg" alt="编程语言汽车" width="150" height="150" /></a><a href="https://coolshell.cn/articles/1839.html" class="wp_rp_title">编程语言汽车</a></li><li ><a href="https://coolshell.cn/articles/1532.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/24.jpg" alt="到处都是Unix的胎记" width="150" height="150" /></a><a href="https://coolshell.cn/articles/1532.html" class="wp_rp_title">到处都是Unix的胎记</a></li><li ><a href="https://coolshell.cn/articles/18360.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2018/05/300x262-150x150.jpg" alt="程序员练级攻略（2018)  与我的专栏" width="150" height="150" /></a><a href="https://coolshell.cn/articles/18360.html" class="wp_rp_title">程序员练级攻略（2018)  与我的专栏</a></li><li ><a href="https://coolshell.cn/articles/10337.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/24.jpg" alt="数据即代码：元驱动编程" width="150" height="150" /></a><a href="https://coolshell.cn/articles/10337.html" class="wp_rp_title">数据即代码：元驱动编程</a></li><li ><a href="https://coolshell.cn/articles/10169.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/5.jpg" alt="类型的本质和函数式实现" width="150" height="150" /></a><a href="https://coolshell.cn/articles/10169.html" class="wp_rp_title">类型的本质和函数式实现</a></li><li ><a href="https://coolshell.cn/articles/7886.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2012/07/muxnt-150x150.jpg" alt="代码执行的效率" width="150" height="150" /></a><a href="https://coolshell.cn/articles/7886.html" class="wp_rp_title">代码执行的效率</a></li></ul></div></div>The post <a href="https://coolshell.cn/articles/2529.html">StackOverflow的404错误页</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></content:encoded>
					
					<wfw:commentRss>https://coolshell.cn/articles/2529.html/feed</wfw:commentRss>
			<slash:comments>27</slash:comments>
		
		
			</item>
		<item>
		<title>BT雷人的程序语言</title>
		<link>https://coolshell.cn/articles/1142.html</link>
					<comments>https://coolshell.cn/articles/1142.html#comments</comments>
		
		<dc:creator><![CDATA[陈皓]]></dc:creator>
		<pubDate>Sun, 12 Jul 2009 03:07:03 +0000</pubDate>
				<category><![CDATA[编程语言]]></category>
		<category><![CDATA[轶事趣闻]]></category>
		<category><![CDATA[brainfuck]]></category>
		<category><![CDATA[LOLCODE]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[WhiteSpace]]></category>
		<guid isPermaLink="false">http://coolshell.cn/?p=1142</guid>

					<description><![CDATA[<p>这个世界从来都不会缺少另类的东西，人类自然世界如此，计算机世界也一样。编程语言方面，看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另...</p>
<p class="read-more"><a class="btn btn-default" href="https://coolshell.cn/articles/1142.html"> Read More<span class="screen-reader-text">  Read More</span></a></p>
The post <a href="https://coolshell.cn/articles/1142.html">BT雷人的程序语言</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></description>
										<content:encoded><![CDATA[<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415450859608158"
     crossorigin="anonymous"></script>这个世界从来都不会缺少另类的东西，人类自然世界如此，计算机世界也一样。编程语言方面，看过本站《<a title="6个变态的C语言Hello World程序 - 661次点击" href="../?p=914">6个变态的C语言Hello World程序</a>》的朋友们一定对BT和另类不会陌生，但那都是些小儿科，真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字，请不要以为这是一个搞笑的语言，这是一个“严肃事情”，请大家用“最虔诚的态度”来阅读本文。</p>
<h4>BF语言介绍</h4>
<p><strong>Brainfuck</strong>，是一种极小化的计算机语言，它是由Urban Müller在1993年创建的。由于“绿王八”的原因，这种语言有时被称为<strong>brainf**k</strong>或<strong>brainf***</strong>，甚至被简称为<strong>BF</strong>。这种 语言，是一种按照“Turing complete（完整图灵机）”思想设计的语言，它的主要设计思路是：用最小的概念实现一种“简单”的语言，BrainF**k 语言只有八种符号，所有的操作都由这八种符号的组合来完成。</p>
<p>BF基于一个简单的机器模型，除了八个指令，这个机器还包括：一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。</p>
<p>下面是这八种指令的描述，其中每个指令由一个字符标识：</p>
<p><span id="more-1142"></span></p>
<table border="0">
<tbody>
<tr>
<th>字符</th>
<th>含义</th>
</tr>
<tr>
<td><code>&gt;</code></td>
<td>指针加一</td>
</tr>
<tr>
<td><code>&lt;</code></td>
<td>指针减一</td>
</tr>
<tr>
<td><code>+</code></td>
<td>指针指向的字节的值加一</td>
</tr>
<tr>
<td><code>-</code></td>
<td>指针指向的字节的值减一</td>
</tr>
<tr>
<td><code>.</code></td>
<td>输出指针指向的单元内容（ASCII码）</td>
</tr>
<tr>
<td><code>,</code></td>
<td>输入内容到指针指向的单元（ASCII码）</td>
</tr>
<tr>
<td><code>[</code></td>
<td>如果指针指向的单元值为零，向后跳转到对应的<code>]</code>指令的次一指令处</td>
</tr>
<tr>
<td><code>]</code></td>
<td>如果指针指向的单元值不为零，向前跳转到对应的<code>[</code>指令的次一指令处</td>
</tr>
</tbody>
</table>
<p>（按照更节省时间的简单说法，<code>]</code>也可以说成“向后跳转到对应的<code>[</code>状态”。这两解释是一样的。）</p>
<p>（第三种同价的说法，<code>[</code>意思是&#8221;向前跳转到对应的<code>]</code>&#8220;，<code>]</code>意思是&#8221;向后跳转到对应的<code>[</code>指令的次一指令处，如果指针指向的字节非零。&#8221;）</p>
<p>Brainfuck程序可以用下面的替换方法翻译成C语言（假设<code>ptr</code>是<code>char*</code>类型）：</p>
<table border="0">
<tbody>
<tr>
<th>Brainfuck</th>
<th>C</th>
</tr>
<tr>
<td align="center"><code>&gt;</code></td>
<td><code>++ptr;</code></td>
</tr>
<tr>
<td align="center"><code>&lt;</code></td>
<td><code>--ptr;</code></td>
</tr>
<tr>
<td align="center"><code>+</code></td>
<td><code>++*ptr;</code></td>
</tr>
<tr>
<td align="center"><code>-</code></td>
<td><code>--*ptr;</code></td>
</tr>
<tr>
<td align="center"><code>.</code></td>
<td><code>putchar(*ptr);</code></td>
</tr>
<tr>
<td align="center"><code>,</code></td>
<td><code>*ptr =getchar();</code></td>
</tr>
<tr>
<td align="center"><code>[</code></td>
<td><code>while (*ptr) {</code></td>
</tr>
<tr>
<td align="center"><code>]</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
<h4>BF解释器</h4>
<p>因为 BrainFuck 只有八种指令，并且没有关键字，也不允许自定义标识符，因此它的编译器实现起来非常简单，初学 C 语言不久的人都可以自己编出来，尽管在座的各位每人都可以自己编一个，不过为了引起大家的兴趣，我这里还是给出大家一个官方发布的版本。这个程序只有短短 50 多行，并且完全由 ANSI C 写成，因此你随便找个 C 语言编译器，把它编译一下。</p>
<pre data-enlighter-language="c" class="EnlighterJSRAW">
#include &lt;stdio.h&gt;;

int  p, r, q;
char a[5000], f[5000], b, o, *s=f;

void interpret(char *c)
{
    char *d;

    r++;
    while( *c ) {
        //if(strchr(&quot;&lt;&gt;;+-,.[]\n&quot;,*c))printf(&quot;%c&quot;,*c);
        switch(o=1,*c++) {
            case &#039;&lt;&#039;: p--;        break;
            case &#039;&gt;;&#039;: p++;       break;
            case &#039;+&#039;: a[p]++;     break;
            case &#039;-&#039;: a[p]--;     break;
            case &#039;.&#039;: putchar(a[p]); fflush(stdout); break;
            case &#039;,&#039;: a[p]=getchar();fflush(stdout); break;
            case &#039;[&#039;:
                for( b=1,d=c; b &amp;&amp; *c; c++ )
                b+=*c==&#039;[&#039;, b-=*c==&#039;]&#039;;
                if(!b) {
                    c[-1]=0;
                    while( a[p] )
                    interpret(d);
                    c[-1]=&#039;]&#039;;
                    break;
                }
            case &#039;]&#039;:
                puts(&quot;UNBALANCED BRACKETS&quot;), exit(0);
            case &#039;#&#039;:
                if(q&gt;;2)
                printf(&quot;%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d\n%*s\n&quot;,
                *a,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],3*p+2,&quot;^&quot;);
                break;
            default: o=0;
        }
        if( p&lt;0 || p&gt;;100)
            puts(&quot;RANGE ERROR&quot;), exit(0);
    }
    r--;
    //        chkabort();
}

main(int argc,char *argv[])
{
    FILE *z;

    q=argc;

    if(z=fopen(argv[1],&quot;r&quot;)) {
        while( (b=getc(z))&gt;;0 )
            *s++=b;
        *s=0;
        interpret(f);
    }
}
</pre>
<p>当然，如果你觉得用C语言来实现BrainFuck语言的解释器是对BrainFuck这种语言的一种侮辱的话，我们的BrainFuck社区是绝对不能容忍你有这种想法的。因为我们有一个使用100%纯brainfuck写成的一个编译器<strong>awib</strong>：<a href="http://code.google.com/p/awib/" target="_blank">http://code.google.com/p/awib/ </a></p>
<h4>Hello World</h4>
<pre>++++++++++[&gt;+++++++&gt;++++++++++&gt;+++&gt;+&lt;&lt;&lt;&lt;-]
&gt;++.&gt;+.+++++++..+++.&gt;++.&lt;&lt;+++++++++++++++.
&gt;.+++.------.--------.&gt;+.&gt;.</pre>
<p>怎么？看不懂吗？下面是解释：</p>
<pre>+++ +++ +++ +           initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    &gt; +++ +++ +             add  7 to cell #1
    &gt; +++ +++ +++ +         add 10 to cell #2
    &gt; +++                   add  3 to cell #3
    &gt; +                     add  1 to cell #4
    &lt;&lt;&lt; &lt; -                 decrement counter (cell #0)
]
&gt;++ .                   print 'H'
&gt;+.                     print 'e'
+++ +++ +.              print 'l'
.                       print 'l'
+++ .                   print 'o'
&gt;++ .                   print ' '
&lt;&lt;+ +++ +++ +++ +++ ++. print 'W'
&gt;.                      print 'o'
+++ .                   print 'r'
--- --- .               print 'l'
--- --- --.             print 'd'
&gt;+.                     print '!'
&gt;.                      print '\n'</pre>
<p><strong>相关链接</strong>：</p>
<ul>
<li>BF的官网：<a href="http://www.muppetlabs.com/~breadbox/bf/">http://www.muppetlabs.com/~breadbox/bf/</a>。</li>
<li>BF的Wikipedia：<a href="http://en.wikipedia.org/wiki/Brainfuck">http://en.wikipedia.org/wiki/Brainfuck</a>。</li>
</ul>
<h4>其它另类语言</h4>
<p>如果你要觉得BF已经很BT了，那么你就错了，下面这些程序语言更BT。</p>
<p><strong>WhiteSpace语言</strong></p>
<p style="padding-left: 30px;">这是一种只用空白字符（空格，TAB和回车）编程的语言，而其它可见字符统统为注释。下面是它的一个示例：</p>
<p style="padding-left: 30px;">&nbsp;</p>
<pre style="padding-left: 60px;">  		 	
	
  	
  
	
</pre>
<p style="padding-left: 30px;">什么？你什么也没有看见，这就对了，因为这正是这门语言的独特之处。访问下面这个链接查看<a href="http://compsoc.dur.ac.uk/whitespace/hworld.ws" target="_blank">Hello,World示例</a>。记得按Ctrl+A来查看程序。</p>
<p style="padding-left: 30px;">官网：<a href="http://compsoc.dur.ac.uk/whitespace/index.php">http://compsoc.dur.ac.uk/whitespace/index.php</a>。</p>
<p><strong>LOLCODE语言</strong></p>
<p style="padding-left: 30px;">LOLCODE是一种建立在高度缩写的网络英语之上的编程语言，一般来说如果一个人能理解这种网络英语就能在未经训练的情况下读懂LOLCODE程序源代码。下面是其Hello,World例程：</p>
<pre style="padding-left: 60px;">HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE</pre>
<p style="padding-left: 30px;">翻译成中文就是：</p>
<pre style="padding-left: 60px;">嗨
我可以用 STDIO 么？
显示一下 “HAI WORLD!”
谢谢啊，再见</pre>
<p style="padding-left: 30px;">&nbsp;</p>
<p style="padding-left: 30px;">官网：<a href="http://lolcode.com/">http://lolcode.com/</a></p>
<p><strong>中文编程语言</strong></p>
<p style="padding-left: 30px;">不要以为只有老外才那么BT，咱们中国也有自己的BT编程语言。</p>
<p style="padding-left: 30px;"><strong>中文Basic</strong></p>
<table border="0">
<tbody>
<tr>
<td>中文指令</td>
<td></td>
<td>对应于的Applesoft BASIC</td>
</tr>
<tr>
<td><tt>10 卜=0</tt></td>
<td></td>
<td><tt>10 Y=0</tt></td>
</tr>
<tr>
<td><tt>20 <span>入</span> 水, 火</tt></td>
<td></td>
<td><tt>20 INPUT E, F</tt></td>
</tr>
<tr>
<td><tt>30 <span>從</span> 日 = 水 <span>到</span> 火</tt></td>
<td></td>
<td><tt>30 FOR A = E TO F</tt></td>
</tr>
<tr>
<td><tt>40 卜 = 卜+<span>對數</span>(日)</tt></td>
<td></td>
<td><tt>40 Y = Y + LOG (A)</tt></td>
</tr>
<tr>
<td><tt>50 <span>下一</span> 日</tt></td>
<td></td>
<td><tt>50 NEXT A</tt></td>
</tr>
<tr>
<td><tt>60 <span>印</span> 卜</tt></td>
<td></td>
<td><tt>60 PRINT Y</tt></td>
</tr>
</tbody>
</table>
<p style="padding-left: 60px;">官网无法访问了，只能看看Wikipedia了：<a href="http://en.wikipedia.org/wiki/Chinese_BASIC">http://en.wikipedia.org/wiki/Chinese_BASIC</a></p>
<p style="padding-left: 30px;"><strong>中蟒语言（中文Python）</strong></p>
<p style="padding-left: 60px;">下面的程序是不是很Cool？</p>
<pre style="padding-left: 60px;">#!/usr/local/bin/cpython
回答 = 读入('你认为中文程式语言有存在价值吗 ? (有/没有)')
如 回答 == '有':
写 '好吧, 让我们一起努力!'
不然 回答 == '没有':
写 '好吧,中文并没有作为程式语言的价值.'
否则:
写 '请认真考虑后再回答.'</pre>
<p style="padding-left: 60px;">官网：<a href="http://www.chinesepython.org/cgi_bin/cgb.cgi/home.html">http://www.chinesepython.org/</a></p>
<p>差不多了，该结束了，再次说明，这是一篇很严肃的文章。</p>
<p>(<strong>全文完</strong>)<!--



<p align="center"><a href= target=_blank><img decoding="async" src=""></a></p>





<p align="center"><img decoding="async" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.weixin.jpg"> <img decoding="async" loading="lazy" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.mini_.jpg" width="300" height="300"> <br />关注CoolShell微信公众账号和微信小程序</p>

 

--></p>
<div style="margin-top: 15px; font-size: 16px;color: #cc0000;">
<p align="center"><strong>（转载本站文章请注明作者和出处 <a href="https://coolshell.cn/">酷 壳 &#8211; CoolShell</a> ，请勿用于任何商业用途）</strong></p>
</div>

<div class="wp_rp_wrap  wp_rp_vertical_m" ><div class="wp_rp_content"><h3 class="related_post_title">相关文章</h3><ul class="related_post wp_rp"><li ><a href="https://coolshell.cn/articles/6639.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2012/02/programming-language-150x150.jpg" alt="千万别惹程序员 " width="150" height="150" /></a><a href="https://coolshell.cn/articles/6639.html" class="wp_rp_title">千万别惹程序员 </a></li><li ><a href="https://coolshell.cn/articles/4626.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/14.jpg" alt="读书笔记：对线程模型的批评" width="150" height="150" /></a><a href="https://coolshell.cn/articles/4626.html" class="wp_rp_title">读书笔记：对线程模型的批评</a></li><li ><a href="https://coolshell.cn/articles/4458.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="BT雷人的程序语言（大全）" width="150" height="150" /></a><a href="https://coolshell.cn/articles/4458.html" class="wp_rp_title">BT雷人的程序语言（大全）</a></li><li ><a href="https://coolshell.cn/articles/3385.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2010/12/rank_scatter1-150x150.png" alt="编程语言流行度" width="150" height="150" /></a><a href="https://coolshell.cn/articles/3385.html" class="wp_rp_title">编程语言流行度</a></li><li ><a href="https://coolshell.cn/articles/3100.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2010/10/language-evolution-150x150.jpg" alt="编程语言进化" width="150" height="150" /></a><a href="https://coolshell.cn/articles/3100.html" class="wp_rp_title">编程语言进化</a></li><li ><a href="https://coolshell.cn/articles/2724.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2010/07/aboutprogramming04.eng_-150x150.jpg" alt="计算机编程简史图" width="150" height="150" /></a><a href="https://coolshell.cn/articles/2724.html" class="wp_rp_title">计算机编程简史图</a></li></ul></div></div>The post <a href="https://coolshell.cn/articles/1142.html">BT雷人的程序语言</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></content:encoded>
					
					<wfw:commentRss>https://coolshell.cn/articles/1142.html/feed</wfw:commentRss>
			<slash:comments>32</slash:comments>
		
		
			</item>
	</channel>
</rss>
