“永遠沒有完功的程序”是程序界的一個定律,人們都認為編程語言很容易使用和學習。編程語言應該給你提供數(shù)據(jù)結構讓你來解決實際問題,它們的語法也應清晰明了,容易理解且執(zhí)行速度快,沒有任何bug。但有時候編程語言設計者們會創(chuàng)建一些違背這些原則的語言,要么供研究使用要么純屬娛樂。下面是10種最怪異的最不切實際的編程語言。
1.LOLCODE
很少有編程語言像LOLCODE這樣注入了這么多網(wǎng)絡時代的成分(譯者注:LOLCODE是一種建立在高度縮寫的網(wǎng)絡英語之上的編程語言)。它由英國蘭卡斯特大學研究員 Adam Lindsay于2007年創(chuàng)建,該語言的關鍵字都是大寫的且meme-fied.。你幾乎可以想象一個貓在生產中使用它。
與該份列表中的大部分語言一樣,LOLCODE沒有標準庫可言。這意味著你只能使用LOLCODE來讀取文件或寫入文本到控制臺而不能干其他的事。如果你需要功能更強的版本,那么看看因LOLCODE受到啟發(fā)的LOLPython,它可以讓你訪問所有Python的強大的功能庫。
2.Glass
Glass是一門深奧的編程語言,由Gregor Richards于2005年發(fā)展起來。它將非直觀的后綴符號與沉重的面向對象結合起來,需要一個主棧與其面向對象的結構相結合才能進一步玩出花樣。據(jù)作者所言沒有其它的語言像這樣執(zhí)行,因為看起來非常的白癡。
下面是該語言的一個例子,程序輸出Fibonacci 序列:
3.Brainfuck
Brainfuck是晦澀難懂的語言巨星,受到了大批崇拜者的追捧。該語言是出了名的難以編程,僅有8個簡單的命令和一個指令指針。它的設計就是為了挑戰(zhàn)和娛樂程序員,而不是為了用于實際用途。它由Urban Müller于1993年創(chuàng)建。
下面是“Hello world!”的例子:
4.Chicken
Chicken不僅是語言的名字,也是該語言允許的唯一關鍵字。關鍵字重復的次數(shù)和換行決定執(zhí)行的具體操作。下面是一個例子,你能猜出它是干嘛的嗎?
5.Whitespace
Whitespace是一門很出色的編程語言。它僅通過空格、制表符和回車來理解并忽略所有其他字符。這個特性還允許Whitespace程序隱藏在其他語言程序的源代碼中,例如JavaScript,Javascript的縮進就是用空格寫的。下面是一個例子用以打印“Hello, world!”(S表示單個空格,T表示制表符):
6.///
///是一門極簡派風格的編程語言,僅包含一個操作—即用/source/replacement/這樣的形式進行字符串替換。它由Tanner Swett于2008年發(fā)明。該語言的功能十分有限,但是一些聰明的程序員能夠將字符串替換轉換為完整的工作程序,用以循環(huán)和輸出數(shù)據(jù),下面是一個簡單的“Hello, world!”的程序:
7.Befunge
Befunge是一個二維編程語言。你的代碼放在一個固定大小的場地,該場地的每一列都能存放代碼或者數(shù)據(jù),你的程序可以替換任何想要替換的列。解釋器從左上列開始從左到右解析。你可以用特殊的方向指令控制解釋器的方向。例如,下面是一個無線循環(huán)的例子:
而下面這個是“Hello, world!”的程序:
8.Piet
Piet編程語言的程序看起來都像抽象畫的位圖,基本的構建塊就是顏色塊。它支持20種不同的顏色,有些實現(xiàn)支持的更多。編譯器由圖像周圍的移動“指針”引導,在圖像中從一個色塊移動到下一個。下面是一個“Hello world!”程序:
9.Malbolge
Malbolge語言由Ben Olmstead于1998年發(fā)明,以“但丁的地獄”中地獄的第8圈命名。該名字不是隨機選取的—該語言設計的初衷就是為了不可能寫出有用的編程語言。在創(chuàng)建幾年后,有人發(fā)現(xiàn)了設計中的漏洞使其能寫Malbolge程序。你必須得成為一個密碼科學家才能用它寫出有意義的程序。下面是Malbolge中看起來像‘Hello World!”程序:
10.~English
~English是一門試圖模仿自然聲音語言的編程語言,其語法非常寬松,使程序員有很大的自由表達空間。但程序員不能自己定義函數(shù)而只能使用該語言內置的函數(shù)。下面是一個例子程序
榮譽提名: JavaScript
Javascript是如今最受歡迎的編程語言,但受歡迎帶來的副作用就是該語言自身的每處特性,無論該語言多美妙,還是每天給成千上萬的程序員帶來了bug,這使得JS也列在這里。這里有一個完整的網(wǎng)站列出了Javascript的怪異之處,給你一個例子,下面是兩個簡短的完全有效的JS片段(你可以在你的控制臺上試驗一下):
瀏覽量:02024-10-10
瀏覽量:12021-05-10
瀏覽量:02021-05-10
瀏覽量:02017-08-09
瀏覽量:02017-08-05
瀏覽量:02015-04-17