“Hello World”居然有这么鬼畜的打开方式
全文共2447字,预计学习时长7分钟
图源:unsplash
当大家都在谈论c、c++、Java、Python时,还有些大神级语言“深藏不漏”,地狱难度的它们对于大多数开发人员来说几乎是无法理解的。这些语言被称为深奥的编程语言(或esolang)。
设计esolang的目的不在于普通软件开发,而是一个概念验证,或者仅仅为了有趣。以下是五种最难的深奥编程语言,我试着用这些语言分别执行'Hello World!’程序。
Malbolge
Malbolge是1998年由Ben Olmstead发明的,被认为是最复杂的编程语言。据说,Malbolge编程语言的作者从来没有用该语言写过任何程序。Olmstead发明该语言近两年后Malbolge才有的hello world代码。
以下是在Malbolge中打印'Hello World!’的代码片段。
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)'Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
输出如下:
使用 tio.run 执行的代码
Brainfuck
1993年,Urban Muller开发了Brainfuck,用于程序员娱乐玩耍。从名字本身就可看出,这门语言对所有程序员来说应该是极难理解的。整个语言只由8个不同的字符组成,用于实现所有代码。Muller开发的原始编译器只用了296个字节。
以下是在Brainfuck中打印'Hello World!’的代码片段。
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++ ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
输出如下:
COW
COW是由Sean Heber在2003年开发的。当你看到代码时,就会明白为什么这门语言会被命名为“COW”。
COW在难度上与Brainfuck类似,但多了4个命令,也就是说,整个语言中有12个命令。以下是在COW中打印'Hello, World!’的代码片段。
MoO MoOMoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoOMoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO mOo mOo mOomOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOoMoo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoOMoo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moomoO moO MoO MoO MoO MoO MoO MoO MoO MoO Moo MMM MMMMoo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOoMoO Moo
输出如下:
INTERCAL
Jim Lyon和Don Woods在1972年开发了INTERCAL,它模仿了众多编程语言。最初它的名字是“无发音缩写的编译器语言”。
INTERCAL的许多功能设计让程序员感到沮丧。比如,它使用了“PLEASE”等修饰语。如果代码中不经常使用“PLEASE”,编译器会报错,认为该程序“不够礼貌”。但如果“PLEASE”使用次数过多,编译器也会报错,称其“过分礼貌”。
以下是在INTERCAL中打印“Hello, World!”的代码片段。
DO ,1 <- #13PLEASE DO ,1 SUB #1 <- #238DO ,1 SUB #2 <- #108DO ,1 SUB #3 <- #112DO ,1 SUB #4 <- #0DO ,1 SUB #5 <- #64DO ,1 SUB #6 <- #194DO ,1 SUB #7 <- #48PLEASE DO ,1 SUB #8 <- #22DO ,1 SUB #9 <- #248DO ,1 SUB #10 <- #168DO ,1 SUB #11 <- #24DO ,1 SUB #12 <- #16DO ,1 SUB #13 <- #162PLEASE READ OUT ,1PLEASE GIVE UP
输出如下:
Whitespace
Whitespace是由Chris Morris和Edwin Brady在杜伦大学开发的,于2003年愚人节发布。整个语言都依赖于space,tab和linefeed(空格、制表符和换行符)来编写程序。Whitespace 解释器忽略非Whitespace字符,并将其视为代码注释。
以下是打印'Hello World!’的代码片段。在下面的代码中,每个空格、制表符或换行符前面分别有注释'S’、'T’或'L’。
S S S T S S T SS S LT LS S S S S T T S S T S T LT LS S S S S T T S T T S S LT LS S S S S T T S T T S S LT LS S S S S T T S T T T T LT LS S S S S T S T T SS LT LS S S S S T S S S S S LT LS S S S S T T T ST T T LT LS S S S S T T S T T T T LT LS S S S S T T T SS T S LT LS S S S S T T S T T S S LT LS S S S S T T S S T S S LT LS S S S S T S S S S TLT LS S LLL
输出如下:
类似的深奥编程语言还有很多,真无法想象这些程序员无聊时都做了些什么打发时间。