10 大怪異的編程語言

人們都認爲編程語言很容易使用和學習。編程語言應該給你提供數據結構讓你來解決實際問題,它們的語法也應清晰明瞭,容易理解且執行速度快,沒有任何bug。但有時候編程語言設計者們會創建一些違背這些原則的語言,要麼供研究使用要麼純屬娛樂。下面是10種最怪異的最不切實際的編程語言。

 

1)LOLCODE

很少有編程語言像LOLCODE這樣注入了這麼多網絡時代的成分(譯者注:LOLCODE是一種建立在高度縮寫的網絡英語之上的編程語言)。它由英國蘭卡斯特大學研究員 Adam Lindsay於2007年創建,該語言的關鍵字都是大寫的且meme-fied.。你幾乎可以想象一個貓在生產中使用它。

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

與該份列表中的大部分語言一樣,LOLCODE沒有標準庫可言。這意味着你只能使用LOLCODE來讀取文件或寫入文本到控制檯而不能幹其他的事。如果你需要功能更強的版本,那麼看看因LOLCODE受到啓發的LOLPython它可以讓你訪問所有Python的強大的功能庫。

更多的代碼和例子請看維基百科介紹。

 

2)Glass

Glass是一門深奧的編程語言,由Gregor Richards於2005年發展起來。它將非直觀的後綴符號與沉重的面向對象結合起來,需要一個主棧與其面向對象的結構相結合才能進一步玩出花樣。據作者所言沒有其它的語言像這樣執行,因爲看起來非常的白癡。

下面是該語言的一個例子,程序輸出Fibonacci 序列:

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

更多的例子和說明請看這個網頁。

3) Brainfuck

Brainfuck是晦澀難懂的語言巨星,受到了大批崇拜者的追捧。該語言是出了名的難以編程,僅有8個簡單的命令和一個指令指針。它的設計就是爲了挑戰和娛樂程序員,而不是爲了用於實際用途。它由Urban Müller於1993年創建。

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

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

更多請看 這裏

 

4) Chicken

Chicken不僅是語言的名字,也是該語言允許的唯一關鍵字。關鍵字重複的次數和換行決定執行的具體操作。下面是一個例子,你能猜出它是幹嘛的嗎?

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

更多請看 這篇文章

 

5) Whitespace

Whitespace是一門很出色的編程語言。它僅通過空格、製表符和回車來理解並忽略所有其他字符。這個特性還允許Whitespace程序隱藏在其他語言程序的源代碼中,例如JavaScript,Javascript的縮進就是用空格寫的。下面是一個例子用以打印“Hello, world!”(S表示單個空格,T表示製表符):

01 S S S T S S T   S S S
02 T  
03 S S S S S T T   S S T   S T
04 T  
05 S S S S S T T   S T T   S S
06 T  
07 S S S S S T T   S T T   S S
08 T  
09 S S S S S T T   S T T   T   T  
10 T  
11 S S S S S T S T T   S S
12 T  
13 S S S S S T S S S S S
14 T  
15 S S S S S T T   T   S T T   T  
16 T  
17 S S S S S T T   S T T   T   T  
18 T  
19 S S S S S T T   T   S S T   S
20 T  
21 S S S S S T T   S T T   S S
22 T  
23 S S S S S T T   S S T   S S
24 T  
25 S S S S S T S S S S T  
26 T  
27 S S

學習更多請看 這裏

 

6) ///

///是一門極簡派風格的編程語言,僅包含一個操作—即用/source/replacement/這樣的形式進行字符串替換。它由Tanner Swett於2008年發明。該語言的功能十分有限,但是一些聰明的程序員能夠將字符串替換轉換爲完整的工作程序,用以循環和輸出數據,下面是一個簡單的“Hello, world!”的程序:

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

學習更多請看 這裏

 

7) Befunge

Befunge是一個二維編程語言。你的代碼放在一個固定大小的場地,該場地的每一列都能存放代碼或者數據,你的程序可以替換任何想要替換的列。解釋器從左上列開始從左到右解析。你可以用特殊的方向指令控制解釋器的方向。例如,下面是一個無線循環的例子:

1 >v
2 ^<

而下面這個是“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 ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
2 `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

學習更多請看 這裏

 

10) ~English

~English是一門試圖模仿自然聲音語言的編程語言,其語法非常寬鬆,使程序員有很大的自由表達空間。但程序員不能自己定義函數而只能使用該語言內置的函數。下面是一個例子程序:

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

學習更多請看 這裏 ,你可能也對 Shakespeare 感興趣。

 

榮譽提名: JavaScript

Javascript是如今最受歡迎的編程語言,但受歡迎帶來的副作用就是該語言自身的每處特性,無論該語言多美妙,還是每天給成千上萬的程序員帶來了bug,這使得JS也列在這裏。這裏有一個完整的網站列出了Javascript的怪異之處,給你一個例子,下面是兩個簡短的完全有效的JS片段(你可以在你的控制檯上試驗一下):

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

更多的信息請看這些 StackOverflow上面的問題: 1 2

結論

包含在這份列表中的這些深奧的語言,給大家提供了一種提出和驗證新思想的方法。有時候這些想法會影響整個工業界。但是它們中的大部分都是不切實際的且深奧、範圍狹窄,你剛剛只學了其中的10種,但實際上有幾百種


原文鏈接: Tutorialzine   翻譯: 伯樂在線 - 敏敏
譯文鏈接: http://blog.jobbole.com/53408/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章