比比谁更无聊:Whitespace语言

    我们已经见过了满篇没有一句人话的代码,我们也见过了没有字母数字只有一堆符号的代码。还有比这个更牛B的吗?下面介绍满篇全是空白的代码——Whitespace语言。dd说它的信息学竞赛中的软件工程学系列很无聊,我倒觉得介绍这种疯狂的语言更无聊一些。
    Whitespace语言只接受三种字符:空格、Tab和回车。其余的字符该语言一律忽略。它的语法比前面说过的BrainFuck语言略复杂,但不知比现在我们常用的语言简单到哪儿去了。BrainFuck语言对一个线性表进行操作,而Whitespace语言对一个栈进行操作。它的语法主要可以实现这些操作:

  • 压入一个数字或字母
  • 弹出一个元素
  • 把指定元素的值复制到栈顶
  • 交换栈顶两个元素
  • 对栈顶两个元素进行加减乘除,并把他们替换成运算结果
  • 在代码当前位置做一个标记
  • 跳到一个指定的标记
  • 当栈顶为0时跳到一个指定的标记
  • 当栈顶为负数时跳到一个指定的标记
  • 读入字母或数字到指定的位置
  • 输出栈顶字母或数字

    数字和字母(ASCII)都用二进制表示,空格表示0,Tab表示1。你可以在这里看到详细的教学。

    很多人会问,这个有什么用呢?
    确实没啥用。不过也确实很好玩。根据它的特点怎么也能编出一些不太靠谱儿的“用途”来。比如,和BrainFuck一样,这种语言要写注释就方便了,写的注释根本不需要标识,编译器直接跳过你写的文字信息。还有,我们完全可以在满篇空白的代码中插入一篇文章,从而在看起来完全无关的文章中隐藏一段代码。对于间谍工作来说这种语言帮助很大,因为它可以防止别人把代码打印出来拿走(还记得24的EMP那一集吗?)。

    下面这段代码将在屏幕上打印“Hello World!”。
    
               
                
                      
                
                      
                    
                      
                  
                            
                     
                  
                    
           
                        
                            
                  
                            
                      
                     
                     
                      
                         
                   
                      
           
                         
                            
                        
                     
                            
           
                    
                         
                       
                   
                      
                   
                          
                      
                       
                      
                          
                         
       
60;                 
               
                             
    
            

                                                                                                              

                                                                                                                                                            

                                                     
      
    

                                                                                                            

            

                                                                                                                                                                                                     
    
         
      

                                                                                                         

                                                                                                                                                                                                  

    

                                                                            

  
    
                 
             
          
                                                                                                                                                                     

       
      

                                               
0;                         

                                                                                                                                                                  

       
          
        
    

                                                                                                                                                          
            
                
    
      
  
    

做人要厚道
转贴请注明出处

11 条评论

发表评论