2011年4月13日星期三

FW: BT雷人的程序语言(大全)

Subject: BT雷人的程序语言(大全)

没有BT, 只有更BThttp://coolshell.cn/articles/4458.html
下面摘录了几个.
PS : 那个Perl 太牛了,学会了,文学修养马上提高(我们的Perl程序也能改成那样么?恩,可以考虑.)


Befunge


第一个变态语言Befunge <http://quadium.net/funge/spec98.html> 。维基 <http://en.wikipedia.org/wiki/Befunge> 上面说――这门语言由Chris Pressey在1993年创造,本意为设计一种为难编译器的语言……结果马上出现了一批编译器。Befunge的代码是二维的。它用 < > v ^ 这四个符号来控制一个指针在代码中移动,指针经过一个字符或数字则把它压入一个栈,四则运算符号的功能就是弹出栈顶两个元素进行计算后把结果压回去。用 _ 和 | 来表示有条件的方向选择:当栈顶元素为0时向右(上)走,否则向左(下)走。& 和 ~ 分别用于读入数字或字符并压入栈,句号和逗号分别表示将栈顶元素作为整数或字符输出。最后以一个@符号表示程序结束。Befunge代码的注释不需要任何符号标明,你可以把注释写在程序的任何地方,只要运行时指针不会经过它就行了。

下面这段Hello World代码:

> v
v ,,,,,"Hello"<
>48*, v
v,,,,,,"World!"<
>25*,@

下面一个是算圆周率的代码,非常的壮观:

aa* v +------------------------+
vp*9920p*9930< | Pi generator in Bef-97 |
>:09a*pa*3/1+19a*p09a*g:09b*v | |
v_@# g*b90 p*b910 < p< | 7/2/1997, Kevin Vigor |
>19a*g:+1-29b*p19a*g::09v +------------------------+
v*a90g*b90*g*b91: _v#p*9<
>g-#v_ 2a*+\$ v :$
>\1-aa*ga*+v p
v1:/g*b92p*991:< *
>9b*p29b*g*199*g\v9
v*b92p*aa-1g*990-<9
>g2-29b*p099*g1-:0^
v -9p*b92:%ag*991 <
>#v_ 299*g1+299*p> ^
>09b*g:#v_$v
v93p*b90-1<
>9*g199*ga/+.v
v:g*992 <p*9 92-<
v_29b*g399*p ^
>09b*g:#v_v 1
vp*b90-1 < $ g
>199*g9`#v_'9,v *
>'0, >' ,299^

通常认为Befunge是第一个基于"二维控制流"的语言,后来衍生出的一大批类似的语言都是受的Befunge影响。例如PingPong语言就是把Befunge的四种箭头符号换成正反斜杠,控制指针移动方向90度旋转,起一个反弹的作用。


Chef


Chef <http://www.dangermouse.net/esoteric/chef.html> 如其名一样"主厨"(Wiki link <http://en.wikipedia.org/wiki/Chef_(programming_language)> ),这门语言主要是为了让程序代码看起来像菜谱。这可以使得我们的程序员更像是大厨 <http://coolshell.cn/articles/3589.html> 了,呵呵。该语言于2002年由David Morgan-Mar推出,核心是栈操作,特征就是――一套完整的Chef代码就是一个菜谱,程序名就是菜名,变量声明就是罗列原材料,后面一系列栈操作,就是菜肴的制作方法。把程序编写比作调和鼎鼐,有点意思,家庭主妇(或者"准家庭主妇")试试看,权且当作人生预习。

用Chef编写Hello World代码如下:(在其网站上还有一个斐波拉契数的例子 <http://www.dangermouse.net/esoteric/chef_fib.html> )

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.

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




PerlYuYan


PerlYuYa <http://zh.wikipedia.org/wiki/PerlYuYan> n语言是一个能令人使用中文文言文开发程式 Perl 程式的 Perl 模块,由唐凤 <http://zh.wikipedia.org/wiki/%E5%94%90%E9%B3%B3> 于2002年一月发表。它是中文编程语言 <http://zh.wikipedia.org/wiki/%E4%B8%AD%E6%96%87%E7%B7%A8%E7%A8%8B%E8%AA%9E%E8%A8%80> 的尝试。作者利用中文的特质,将许多指令改成以一个中国汉字来表示,因而造成了文言语法的感觉。

看看下面的这段代码,相当的文言文啊。有兴趣可以去CPAN上下载 <http://search.cpan.org/~autrijus/Lingua-Sinica-PerlYuYan-0.03/> 回来玩玩。

#!/usr/local/bin/perl

use Lingua::Sinica::PerlYuYan;

用警兮用�。

印道
一至一
哉兮

印�曰�申�申矣
又�曰�鼠矣
又曰一矣

�曰
��人莫我知兮 又何�乎故都
既莫足��美政兮 吾��彭咸之所居

还有下面这个五言。

# The Sieve of Eratosthenes - 埃拉托斯芬�法
use Lingua::Sinica::PerlYuYan;

用�兮用�。井涸兮��
。印曰最高矣 又道�然哉。
。截起吾�� �小入大合。
。�予吾�地 �二至��。
。�起段�取 加�地合始。
。�地��始 ��此�段。
。��地兮印 正道次�哉。
。�空接段� 列��泰�。

没有评论: