首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

最奇特的编程语议和语句,绝对亮瞎了

2012-11-11 
最奇特的编程语言和语句,绝对亮瞎了(1)brainfuck语言就象它的名字所暗示的,brainfuck程序很难读懂。尽管如

最奇特的编程语言和语句,绝对亮瞎了

(1)brainfuck语言

就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。是的,你没看错,虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。哈哈,是不是一听这个名字就很带感,这种语言由八种运算符构成,只有240个字节大小。

Hello World!

一个在屏幕上打印"Hello World!"的程序:

 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

看不懂吗?下面是解释:

+++ +++ +++ +           initialize counter (cell #0) to 10[                       use loop to set the next four cells to 70/100/30/10    > +++ +++ +             add  7 to cell #1    > +++ +++ +++ +         add 10 to cell #2    > +++                   add  3 to cell #3    > +                     add  1 to cell #4    <<< < -                 decrement counter (cell #0)]>++ .                   print 'H'>+.                     print 'e'+++ +++ +.              print 'l'.                       print 'l'+++ .                   print 'o'>++ .                   print ' '<<+ +++ +++ +++ +++ ++. print 'W'>.                      print 'o'+++ .                   print 'r'--- --- .               print 'l'--- --- --.             print 'd'>+.                     print '!'>.                      print '\n'

相关链接

  • BF的官网:http://www.muppetlabs.com/~breadbox/bf/。
  • BF的Wikipedia:http://en.wikipedia.org/wiki/Brainfuck。

    下面是这八种状态的描述,其中每个状态由一个字符标识:

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

    BF解释器

    因为 BrainFuck 只有八种指令,并且没有关键字,也不允许自定义标识符,因此它的编译器实现起来非常简单,初学 C 语言不久的人都可以自己编出来,尽管在座的各位每人都可以自己编一个,不过为了引起大家的兴趣,我这里还是给出大家一个官方发布的版本。这个程序只有短短 50 多行,并且完全由 ANSI C 写成,因此你随便找个 C 语言编译器,把它编译一下。

    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include <stdio.h>; int p, r, q;chara[5000], f[5000], b, o, *s=f; voidinterpret(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(intargc,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写成的一个编译器awib:http://code.google.com/p/awib/


    是不是很厉害,接下来一门语言更亮。。。

    (2)WhiteSpace语言

    这是一种只用空白字符(空格,TAB和回车)编程的语言,而其它可见字符统统为注释。下面是它的一个示例:

    这是一种只用空白字符(空格,TAB和回车)编程的语言,而其它可见字符统统为注释。下面是它的一个示例:

     

           

    什么?你什么也没有看见,这就对了,因为这正是这门语言的独特之处。访问下面这个链接查看Hello,World示例。记得按Ctrl+A来查看程序。

    官网:http://compsoc.dur.ac.uk/whitespace/index.php。

    附上几个链接再:

    http://coolshell.cn/articles/1142.html

    http://stackoverflow.com/questions/1995113/strangest-language-feature

    http://www.aqee.net/strangest-language-feature/


    4楼landor_昨天 18:23
    如果在编写的过程中出了一丁点纰漏,那岂不是死定了??一大堆的空白怎么调试?
    3楼wm5920昨天 18:16
    [img]http://www.asqql.com/upfile/2009pasdfasdfic2009s305985-ts/2010-8/_asqql.com_QQbiaoqing201082853290.gif[/img]
    2楼hetengfei_昨天 16:05
    补充:n1· 声音可能是打破 ”键盘作输入” 的一大方向。n2· 还有就是 “图形处理 智能化”n就是说 摄象机 看‘操作者’ 的表情与动作, 智能算法来读取‘操作者’ 的 意愿,n-----这可能要用到“人工智能学习算法”
    1楼hetengfei_昨天 15:11
    我想:n 如果读不懂,再“牛”的语言也没有用,nn我认为,图形才是语言的进化方向,n 当 然,最好先攻下 “中文 领地” n中文博大精深, 要攻下 “中文 领地” 先要n 攻下“中文 输入法“n 要攻下“中文 输入法“ 可能要攻下”键盘“n就是发明比”键盘作输入“ 还要方便百倍的 ”中文输入硬件“。nn。。。n个人见解。

热点排行