智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4670|回复: 22
打印 上一主题 下一主题

[其他] 有趣的非主流编程语言,轻松一刻

  [复制链接]

26

主题

457

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5381

论坛元老奖章在线王奖章

威望
2166
贡献
1705
兑换币
576
注册时间
2011-9-19
在线时间
755 小时
跳转到指定楼层
1#
发表于 2013-1-10 19:57:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[转]
总有人喜欢标新立异,人类社会如此,计算机世界也一样。本来今天在研究vim,顺便编译几个程序,中途发现问题,遂google之,结果看到了好玩的code,仔细深究发现了不少乐趣,都是关于编程语言的。先来看看一个比较另类的语言BrainFuck。 关于程序语言的名字,请不要忘文生义,有人以为这是一个搞笑的语言,不,这是一种严肃的语言,请诸位虔诚地看待它。


Brainfuck,是一种极小化的计算机语言,按照wiki,它由Urban Müller在1993年创建,也被简称为BF。这种语言,是按照“Turing complete(完整图灵机)”思想设计的,它的主要设计思路是用最小的概念实现一种“简单”的语言,BrainF**k 语言只有八种符号,所有的操作都由这八种符号的组合来完成。
BF基于一个简单的机器模型,除了八个指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
下面是这八种指令的描述,其中每个指令由一个字符标识:

字符含义
>指针加一
<指针减一
+指针指向的字节的值加一
-指针指向的字节的值减一
.输出指针指向的单元内容(ASCII码)
,输入内容到指针指向的单元(ASCII码)
[如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处
]如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处

BrainFuck 只有八种指令,没有关键字,也不允许自定义标识符,因此它的编译器实现起来非常简单,初学 C 语言不久的人都可以自己编出来,尽管在座的电院同仁都可以自己编一个,不过为了引起大家的兴趣,我这里还是给出大家一个官方发布的版本。这个程序只有短短 50 多行,并且完全由 ANSI C 写成,因此你随便找个 C 语言编译器,把它编译一下。
#include <stdio.h>;
int  p, r, q;
char a[5000], f[5000], b, o, *s=f;
void interpret(char *c)
{
    char *d;
     r++;
    while( *c ) {
        //if(strchr("<>;+-,.[]\n",*c))printf("%c",*c);
        switch(o=1,*c++) {
            case '<': p--;        break;
            case '>;': p++;       break;
            case '+': a[p]++;     break;
            case '-': a[p]--;     break;
            case '.': putchar(a[p]); fflush(stdout); break;
            case ',': a[p]=getchar();fflush(stdout); break;
            case '[':
                for( b=1,d=c; b && *c; c++ )
                b+=*c=='[', b-=*c==']';
                if(!b) {
                    c[-1]=0;
                    while( a[p] )
                    interpret(d);
                    c[-1]=']';
                    break;
                }
            case ']':
                puts("UNBALANCED BRACKETS"), exit(0);
            case '#':
                if(q>;2)
                printf("%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d\n%*s\n",
                *a,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],3*p+2,"^");
                break;
            default: o=0;
        }
        if( p<0 || p>;100)
            puts("RANGE ERROR"), exit(0);
    }
    r--;
    //        chkabort();
}
main(int argc,char *argv[])
{
    FILE *z;
    q=argc;
     if(z=fopen(argv[1],"r")) {
        while( (b=getc(z))>;0 )
            *s++=b;
        *s=0;
        interpret(f);
    }
}

等等,难道你不觉得用C语言来实现BrainFuck语言的解释器是对BrainFuck这种语言的一种侮辱吗?我们的BrainFuck社区是绝对不能容忍这种情形的。因为我们有一个使用100%纯brainfuck写成的一个编译器awibhttp://code.google.com/p/awib/


看下面这段hello world的程序:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

第一遍读不懂是吗?读不懂是正常的= =到这里去找对应C语言的解释吧:
如果你要觉得BF已经很另类了,那么下面这些程序语言更令人匪夷所思。
WhiteSpace语言
这是一种只用空白字符(空格,TAB和回车)编程的语言,而其它可见字符统统为注释。下面是它的一个示例:



什么?你什么也没有看见,这就对了,因为这正是这门语言的独特之处。访问下面这个链接查看Hello,World示例。(PS:不要寄希望与在人人日志页面上通过ctrl+A来查看空白字符。。因为我根本没有输入什么,^ ^)

中文编程语言
这才是重点!我们的汉语国粹!
中文basic
中文指令 对应于的Applesoft BASIC
10 卜=0 10 Y=0
20 入 水, 火 20 INPUT E, F
30 從 日 = 水 到 火 30 FOR A = E TO F
40 卜 = 卜+對數(日) 40 Y = Y + LOG (A)
50 下一 日 50 NEXT A
60 印 卜 60 PRINT Y

很牛啊有木有= =!

#!/usr/local/bin/cpython
回答 = 读入('你认为中文程式语言有存在价值吗 ? (有/没有)')
如 回答 == '有':
写 '好吧, 让我们一起努力!'
不然 回答 == '没有':
写 '好吧,中文并没有作为程式语言的价值.'
否则:
写 '请认真考虑后再回答.'

上面这段程序很厉害有木有!
看官网,国人都去支持一把吧= =  官网:http://www.chinesepython.org/
如果官网无法访问了,那你就只能看看Wikipedia了:http://en.wikipedia.org/wiki/Chinese_BASIC



就写到这吧。。。这个系统下面中文输入法略鸡肋。。。
再次声明,这是一篇很严肃的文章。恩,就是这样。

38

主题

1651

帖子

0

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
8770
威望
4444
贡献
2638
兑换币
1818
注册时间
2010-12-29
在线时间
844 小时
2#
发表于 2013-1-10 20:03:12 | 只看该作者
编码问题是硬伤啊。。。
回复 支持 反对

使用道具 举报

0

主题

50

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2292
威望
972
贡献
626
兑换币
412
注册时间
2012-7-6
在线时间
347 小时
毕业学校
清华
3#
发表于 2013-1-10 20:14:54 | 只看该作者
回复 支持 反对

使用道具 举报

51

主题

1633

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
7556

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章论坛骨干奖章

威望
3701
贡献
2453
兑换币
1398
注册时间
2012-5-3
在线时间
701 小时
4#
发表于 2013-1-10 20:21:20 | 只看该作者
囧。可读性差
回复 支持 反对

使用道具 举报

11

主题

583

帖子

0

精华

常驻嘉宾

MISS Gao

Rank: 8Rank: 8

积分
5774

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2282
贡献
1682
兑换币
935
注册时间
2012-2-12
在线时间
905 小时
5#
发表于 2013-1-10 20:26:47 | 只看该作者
长见识了..
回复 支持 反对

使用道具 举报

11

主题

231

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1682
威望
846
贡献
492
兑换币
237
注册时间
2012-5-23
在线时间
172 小时
6#
发表于 2013-1-10 20:32:20 | 只看该作者
大千世界,无奇不有!
回复 支持 反对

使用道具 举报

16

主题

208

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1963
威望
1232
贡献
461
兑换币
284
注册时间
2012-3-12
在线时间
135 小时
7#
发表于 2013-1-10 20:37:51 | 只看该作者
回复 支持 反对

使用道具 举报

16

主题

1510

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5586

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

QQ
威望
2953
贡献
1231
兑换币
29
注册时间
2012-6-2
在线时间
702 小时
8#
发表于 2013-1-10 20:49:20 | 只看该作者
回复 支持 反对

使用道具 举报

13

主题

721

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1909

优秀会员奖章活跃会员奖章

威望
1115
贡献
330
兑换币
3
注册时间
2012-12-31
在线时间
232 小时
9#
发表于 2013-1-10 20:49:30 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
10#
发表于 2013-1-10 20:58:47 | 只看该作者
好像有个叫混乱编程大赛,有类似的东西
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 22:53 , Processed in 0.083009 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表