史上最奇葩的5个编程语言,其指令更算计了奶牛、空格等

时间:2021-08-09 20:06:03

原文:Most Difficult (and Strangest) Programming Languages 
作者:Deepak Karanth 
译者:王鹏,OneAPM工程师

最难学编程语言有哪些?很多人都用过Java、C、C++之类的编程语言编写代码。再早几年,很多人会使用Pascal、Fortran、COBOL等编程。在学习这些语言的过程中,会遇到足够的挑战,让你抓狂。但是最终,当你投入足够的时间和精力之后,一切也变得顺利起来。

但是,也的确有些难到极致的编程语言。这些语言被称为*编程语言。创造它们的原因通常是为了测试编程语言设计的临界,或者只是一个玩笑。好消息是,它们永远不会成为主流,所以你不需要学习它们!闲话少说,下面一起看最难的(或最怪异的?)编程语言。

Brainf*ck

Brainf*ck由Urban Müller在1993年创建的,目的是为Amiga OS 2.0版本打造使用最小的编译器的语言。 Brainf * ck主要操纵内存单元数组,此数组也被称为纸带(the tape),被初始化为0。Brainf * ck只提供了8个指令:“>” 、 “<” 、 “+” 、 “-” 、 “.” 、 “,” 、 “[” 、 “]”。其“Hello world”代码是这样的:

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

参考阅读

COW

对。就是母牛的Cow.COW编程语言设计时充分考虑了母牛的想法。鉴于母牛的词汇有限,因此只包含了它们仅有的词汇。因此,所有指令都是“moo”的变体,恰好是母牛能理解的唯一词汇。

其他非指令的词汇或符号则被完全忽略。因此,空格可有可无,换行符也可有可无。因此,注释COW程序非常简单,只要不使用任何嵌入指令的词汇就行了。

MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO
MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MOo
MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo
MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo
OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO

参考阅读

INTERCAL

全称为The Compiler Language With No Pronounceable Acronym,缩写为INTERCAL。表达式看起来类似线路噪音。而指令构造会让你抓狂、大笑,甚至大骂。

INTERCAL还有许多其他特性,让程序员很难接受:它使用“READ OUT”,“IGNORE”,“FORGET” 之类的声明,“PLEASE”之类的修饰符。使用“PLEASE”时,若遭到编译器的拒绝,原因一般有二:如果没有经常使用“PLEASE”,该程序会被认为不够礼貌,且会有提示信息;如果使用得过于频繁,则会被认为过分礼貌。

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

参考阅读

Whitespace

发布于2003年4月1日,大多数人认为这是一个愚人节玩笑,但不是!在Whitespace语言中,只可使用空格,制表符和换行符。Whitespace解释器忽略任何其他非空白字符。不过,有趣之处在于,Whitespace程序可以轻易隐藏在其他语言的空白符中。

参考阅读

Chef

Chef是一个基于栈的语言,程序看起来就像菜谱。根据Chef的主页,Chef的设计原则是:

  • 程序食谱不仅要生成有效的输出,也要容易准备,并且美味。
  • 食谱可以根据不同的预算调节。
  • 食谱是公制的,但也可以使用传统烹饪度量工具,比如杯子和汤匙。

其“Hello world”是这样的!

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes
Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. Pour contents of the mixing bowl into the baking dish.
Serves 1.

参考阅读一参考阅读二

其他语言……

其实,还有更多难到极致的奇怪语言。请访问此处,获得更多信息!