zoukankan      html  css  js  c++  java
  • 10大怪异的编程语言

    本文由 伯乐在线 - 敏敏 翻译自 Tutorialzine。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。

    人们都认为编程语言很容易使用和学习。编程语言应该给你提供数据结构让你来解决实际问题,它们的语法也应清晰明了,容易理解且执行速度快,没有任何bug。但有时候编程语言设计者们会创建一些违背这些原则的语言,要么供研究使用要么纯属娱乐。下面是10种最怪异的最不切实际的编程语言。

     

    1)LOLCODE

    很少有编程语言像LOLCODE这样注入了这么多网络时代的成分(译者注:LOLCODE是一种建立在高度缩写的网络英语之上的编程语言)。它由英国兰卡斯特大学研究员 Adam Lindsay于2007年创建,该语言的关键字都是大写的且meme-fied.。你几乎可以想象一个猫在生产中使用它。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    HAI
    CAN HAS STDIO?
    I HAS A VAR
    IM IN YR LOOP
       UP VAR!!1
       VISIBLE VAR
       IZ VAR BIGGER THAN 10? KTHX
    IM OUTTA YR LOOP
    KTHXBYE

    与该份列表中的大部分语言一样,LOLCODE没有标准库可言。这意味着你只能使用LOLCODE来读取文件或写入文本到控制台而不能干其他的事。如果你需要功能更强的版本,那么看看因LOLCODE受到启发的LOLPython它可以让你访问所有Python的强大的功能库。

    更多的代码和例子请看维基百科介绍。

     

    2)Glass

    Glass是一门深奥的编程语言,由Gregor Richards于2005年发展起来。它将非直观的后缀符号与沉重的面向对象结合起来,需要一个主栈与其面向对象的结构相结合才能进一步玩出花样。据作者所言没有其它的语言像这样执行,因为看起来非常的白痴。

    下面是该语言的一个例子,程序输出Fibonacci 序列:

    1
    2
    3
    4
    {F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*(_a)(le).?=/(_isle)^(_n)*(_a)
    s.?(_t)f.?(_n)*(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)=(_nlm)
    =/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*(_a)a.?=(_nlm)(_n)*
    (_a)(le).?=]}

    更多的例子和说明请看这个网页。

     

    3) Brainfuck

    Brainfuck是晦涩难懂的语言巨星,受到了大批崇拜者的追捧。该语言是出了名的难以编程,仅有8个简单的命令和一个指令指针。它的设计就是为了挑战和娱乐程序员,而不是为了用于实际用途。它由Urban Müller于1993年创建。

    下面是“Hello world!”的例子:

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

    更多请看 这里

     

    4) Chicken

    Chicken不仅是语言的名字,也是该语言允许的唯一关键字。关键字重复的次数和换行决定执行的具体操作。下面是一个例子,你能猜出它是干嘛的吗?

    1
    2
    chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
    chicken chicken chicken chicken chicken chicken

    更多请看 这篇文章

     

    5) Whitespace

    Whitespace是一门很出色的编程语言。它仅通过空格、制表符和回车来理解并忽略所有其他字符。这个特性还允许Whitespace程序隐藏在其他语言程序的源代码中,例如JavaScript,Javascript的缩进就是用空格写的。下面是一个例子用以打印“Hello, world!”(S表示单个空格,T表示制表符):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    S S S T S S T   S S S
    T  
    S S S S S T T   S S T   S T
    T  
    S S S S S T T   S T T   S S
    T  
    S S S S S T T   S T T   S S
    T  
    S S S S S T T   S T T   T   T  
    T  
    S S S S S T S T T   S S
    T  
    S S S S S T S S S S S
    T  
    S S S S S T T   T   S T T   T  
    T  
    S S S S S T T   S T T   T   T  
    T  
    S S S S S T T   T   S S T   S
    T  
    S S S S S T T   S T T   S S
    T  
    S S S S S T T   S S T   S S
    T  
    S S S S S T S S S S T  
    T  
    S S

    学习更多请看 这里

     

    6) ///

    ///是一门极简派风格的编程语言,仅包含一个操作—即用/source/replacement/这样的形式进行字符串替换。它由Tanner Swett于2008年发明。该语言的功能十分有限,但是一些聪明的程序员能够将字符串替换转换为完整的工作程序,用以循环和输出数据,下面是一个简单的“Hello, world!”的程序:

    1
    / world! world!/Hello,/ world! world! world!

    学习更多请看 这里

     

    7) Befunge

    Befunge是一个二维编程语言。你的代码放在一个固定大小的场地,该场地的每一列都能存放代码或者数据,你的程序可以替换任何想要替换的列。解释器从左上列开始从左到右解析。你可以用特殊的方向指令控制解释器的方向。例如,下面是一个无线循环的例子:

    1
    2
    >v
    ^<

    而下面这个是“Hello, world!”的程序:

    1
    0"!dlroW ,olleH">:#,_@

    学习更多请看 这里

     

    8) Piet

    Piet编程语言的程序看起来都像抽象画的位图,基本的构建块就是颜色块。它支持20种不同的颜色,有些实现支持的更多。编译器由图像周围的移动“指针”引导,在图像中从一个色块移动到下一个。下面是一个“Hello world!”程序:

    Hello World in Piet

    学习更多请看该语言的 主页

     

    9) Malbolge

    Malbolge语言由Ben Olmstead于1998年发明,以“但丁的地狱”中地狱的第8圈命名。该名字不是随机选取的—该语言设计的初衷就是为了不可能写出有用的编程语言。在创建几年后,有人发现了设计中的漏洞使其能写Malbolge程序。你必须得成为一个密码科学家才能用它写出有意义的程序。下面是Malbolge中看起来像‘Hello World!”程序:

    1
    2
    ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
    `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

    学习更多请看 这里

     

    10) ~English

    ~English是一门试图模仿自然声音语言的编程语言,其语法非常宽松,使程序员有很大的自由表达空间。但程序员不能自己定义函数而只能使用该语言内置的函数。下面是一个例子程序:

    1
    2
    Display "Hello world!" and a newline.
    Stop the program.

    学习更多请看 这里 ,你可能也对 Shakespeare 感兴趣。

     

    荣誉提名: JavaScript

    Javascript是如今最受欢迎的编程语言,但受欢迎带来的副作用就是该语言自身的每处特性,无论该语言多美妙,还是每天给成千上万的程序员带来了bug,这使得JS也列在这里。这里有一个完整的网站列出了Javascript的怪异之处,给你一个例子,下面是两个简短的完全有效的JS片段(你可以在你的控制台上试验一下):

    1
    2
    3
    4
    5
    // This prints 10:
    alert(++[[]][+[]]+[+[]]);
     
    // And this "fail":
    alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);

    更多的信息请看这些 StackOverflow上面的问题: 1、 2

    结论

    包含在这份列表中的这些深奥的语言,给大家提供了一种提出和验证新思想的方法。有时候这些想法会影响整个工业界。但是它们中的大部分都是不切实际的且深奥、范围狭窄,你刚刚只学了其中的10种,但实际上有几百种。.

    原文链接: Tutorialzine   翻译: 伯乐在线 敏敏
    译文链接: http://blog.jobbole.com/53408/
    转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

    BTY: 程序员的世界确实是一个神奇的世界。你觉得呢?? 

  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/hnrainll/p/3477782.html
Copyright © 2011-2022 走看看