10大怪異的程式語言
人們都認為程式語言很容易使用和學習。程式語言應該給你提供資料結構讓你來解決實際問題,它們的語法也應清晰明瞭,容易理解且執行速度快,沒有任何bug。但有時候程式語言設計者們會建立一些違背這些原則的語言,要麼供研究使用要麼純屬娛樂。下面是10種最怪異的最不切實際的程式語言。
1)LOLCODE
很少有程式語言像LOLCODE這樣注入了這麼多網路時代的成分(譯者注:LOLCODE是一種建立在高度縮寫的網路英語之上的程式語言)。它由英國蘭卡斯特大學研究員 Adam Lindsay於2007年建立,該語言的關鍵字都是大寫的且meme-fied.。你幾乎可以想象一個貓在生產中使用它。
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 序列:
{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不僅是語言的名字,也是該語言允許的唯一關鍵字。關鍵字重複的次數和換行決定執行的具體操作。下面是一個例子,你能猜出它是幹嘛的嗎?
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表示製表符):
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!”的程式:
/ world! world!/Hello,/ world! world! world!
學習更多請看 這裡
7) Befunge
Befunge是一個二維程式語言。你的程式碼放在一個固定大小的場地,該場地的每一列都能存放程式碼或者資料,你的程式可以替換任何想要替換的列。直譯器從左上列開始從左到右解析。你可以用特殊的方向指令控制直譯器的方向。例如,下面是一個無線迴圈的例子:
>v ^<
而下面這個是“Hello, world!”的程式:
0"!dlroW ,olleH">:#,_@
學習更多請看 這裡
8) Piet
Piet程式語言的程式看起來都像抽象畫的點陣圖,基本的構建塊就是顏色塊。它支援20種不同的顏色,有些實現支援的更多。編譯器由影象周圍的移動“指標”引導,在影象中從一個色塊移動到下一個。下面是一個“Hello world!”程式:
Hello World in Piet
學習更多請看該語言的 主頁
9) Malbolge
Malbolge語言由Ben Olmstead於1998年發明,以“但丁的地獄”中地獄的第8圈命名。該名字不是隨機選取的—該語言設計的初衷就是為了不可能寫出有用的程式語言。在建立幾年後,有人發現了設計中的漏洞使其能寫Malbolge程式。你必須得成為一個密碼科學家才能用它寫出有意義的程式。下面是Malbolge中看起來像‘Hello World!”程式:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#" `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
學習更多請看 這裡
10) ~English
~English是一門試圖模仿自然聲音語言的程式語言,其語法非常寬鬆,使程式設計師有很大的自由表達空間。但程式設計師不能自己定義函式而只能使用該語言內建的函式。下面是一個例子程式:
Display "Hello world!" and a newline. Stop the program.
學習更多請看 這裡 ,你可能也對 Shakespeare 感興趣。
榮譽提名: JavaScript
Javascript是如今最受歡迎的程式語言,但受歡迎帶來的副作用就是該語言自身的每處特性,無論該語言多美妙,還是每天給成千上萬的程式設計師帶來了bug,這使得JS也列在這裡。這裡有一個完整的網站列出了Javascript的怪異之處,給你一個例子,下面是兩個簡短的完全有效的JS片段(你可以在你的控制檯上試驗一下):
// This prints 10: alert(++[[]][+[]]+[+[]]); // And this "fail": alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
更多的資訊請看這些 StackOverflow上面的問題: 1、 2
結論
包含在這份列表中的這些深奧的語言,給大家提供了一種提出和驗證新思想的方法。有時候這些想法會影響整個工業界。但是它們中的大部分都是不切實際的且深奧、範圍狹窄,你剛剛只學了其中的10種,但實際上有幾百種。
原文連結: Tutorialzine 翻譯: 伯樂線上 - 敏敏
相關文章
- laptopmag:全球10大怪異社交網路平臺APT
- 撼動IT界的10大程式語言!
- 程式語言的異同及選擇 (轉)
- 程式語言特色:異常難免
- util100%怪異問題分析
- 基於 10 大程式語言的 30 個深度學習庫深度學習
- 2015年最具人氣的10大程式語言
- Java語言與C++語言的差異總結JavaC++
- Google十大怪異投資:投資風電 養蜜蜂Go
- PHP語言需要避免的10大誤區PHP
- PHP 語言需要避免的 10 大誤區PHP
- 怪異的COM 執行緒模型執行緒模型
- Python與其它程式語言的差異化總結Python
- 如何選擇大資料的程式語言大資料
- 永不磨滅的九大尖端程式語言
- 資料處理的 9 大程式語言
- 程式開發語言的七大奇蹟
- IT公司中最流行的10種程式語言
- 256種程式語言大薈萃
- 盤點 2020 年程式語言排行:有 4 種語言高居不下,難怪工資這麼高
- 有錢未必買得到!五大怪異筆記本筆記
- 最‘乾淨’的程式語言——空白程式語言
- Java語言和C++語言的差異 (轉)JavaC++
- 十大最容易找工作的程式語言
- 10個經典的C語言小程式C語言
- js new Date怪異行為JS
- 大資料與程式語言關係大資料
- 大資料:程式語言真的重要嗎?大資料
- Go 語言異常處理Go
- 把程式語言看做語言
- 語言大模型大模型
- 大語言模型模型
- 程式語言BASIC程式設計師的啟蒙語言C程式程式設計師
- JavaScript中this的一些怪異現象JavaScript
- 9個最佳的大資料處理程式語言大資料
- 低程式碼與大語言模型的探索實踐模型
- 國人開發的程式語言-“明”語言
- 學習遊戲要學習程式語言嗎?十大主流程式語言解析遊戲