十大怪異的程式語言

評論
評論

程式語言應該是有條有理井然有序,是種邏輯清晰的語言。通常它們都是用來解決實際問題,而且應該沒有缺陷並且可以快速執行。不過有時就是有些調皮的開發者,違背這些原則,創造出怪異且不切實際的程式語言,它們有可能會激怒你,也或許讓你躍躍欲試,來看看吧 1!(點選每個程式語言標題可以連結到該語言的網站或者 Wikipedia 介紹頁面。)

LOLCODE

medium_2542236565

LOLCODE 是極少數注入網路時代成分的程式語言,2007 年英國 Lancaster 大學研究員 Adam Lindsay 創造了這門語言。LOLCODE 試圖模仿網路上非常流行的「貓照片加上語焉不詳的貓語」,關鍵字都是大寫,你或許可以想像一隻貓用它來寫程式!

螢幕快照 2013-12-25 下午6.27.35

跟該份列表中的多數語言一樣,LOLCODE 沒有什麼標準庫可言。這表示你只能使用 LOLCODE 讀取文件或寫入文本到控制台,不然毫無用武之地。如果你需要更實用的版本,可以參考看看受到 LOLCODE 啓發的 LOLPython,讓你能夠訪問所有 Python 強大的功能庫。

001

Glass

2005 年 Gregor Richards 開發的 Glass 是一門深奧的程式語言,它結合了迂迴的後置形式(postfix notation)與沉重的物件導向(object-orientation),需要主要堆疊(main stack)跟物件導向結構合作,才能玩出花樣。根據作者所言,沒有任何語言是這樣執行的,因為這簡直就是白痴。

這是 Glass 的例子,輸出 Fibonacci 序列:

螢幕快照 2013-12-25 下午6.29.00
002

Brainfuck

Brainfuck 是一門晦澀難以捉摸的語言巨星,這個語言是出了名的難以編寫,只有 8 個簡單命令與 1 個指令指標。Brainfuck 大概只是為了挑戰程式設計師,或純粹娛樂用,沒有什麼實際作用。Urban Müller 於 1993 年創造了 Brainfuck,以下是用這門語言編寫「Hello World!」的樣子:

螢幕快照 2013-12-25 下午6.29.58
003

Chicken

Chicken 不只是這門語言的名稱,也是該語言唯一允許的關鍵字。關鍵字重複的次數與換行決定執行的具體操作,以下是 Chicken 的範例,你能猜到它是幹嘛的嗎?

螢幕快照 2013-12-25 下午6.31.01
004

Whitespace

Whitespace 是一門很特立獨行的程式語言,它只認空格、製表符(tab)以及換行符號(new line,感謝網友指正),而忽略所有非空白字元。 這個特點讓 Whitespace 得以隱藏在其它程式語言如 JavaScript 中,後者的縮排就是空白字元。以下是用 Whitspace 寫出「Hello, World!」的範例(空格標記為 S,製表符標記為 T):

螢幕快照 2013-12-25 下午6.31.59
005

///

/// 是一門非常簡約的語言,其實它就只有一個操作:使用 /source/replacement/ 這樣的形式進行字串替換。2006 年 Tanner Swett 開發了這門語言。/// 功能很有限,但是某些聰明的程式設計師能夠將字串替換轉為完整且有用的程式,可以用來循環與輸出數據。以下為簡單的「Hello, World!」程式:

螢幕快照 2013-12-25 下午6.32.58
006

Befunge

Befunge 是一門二維程式語言,程式寫在一個固定大小的範圍,這個範圍的每一列都可以放置程式或數據,程式可以替換任何想要替換的列。編譯器從左上列開始,自左而右編碼,你可以使用特殊方向指令控制編譯器的方向,比如下方是一個無限循環的例子:

螢幕快照 2013-12-25 下午6.33.46

而這個則是「Hello, World!」的程式:

螢幕快照 2013-12-25 下午6.33.51
007

Piet

Piet 是由 Ben Olmstead 於 1998 年創造,這門語言是以點陣圖的形式呈現,就像一幅抽象畫一樣。基本的程式區塊就是一個個色塊,支援 20 種顏色。編譯器由色塊周遭的「指標」引導,在圖像中的一個色塊移動到下一個。以下為「Hello, World」程式:

008

Malbolge

1998 年 Ben Olmstead 發明了 Malbolge,以但丁《神曲》中的第八圈地獄命名。這名字可不是隨便亂取的,Malbolge 的創立初衷就是要讓工程師再怎樣也無法用它寫出可以發揮實際作用的語言。不過幾年後,有人發現其中存有漏洞,用 Malbolge 寫出了有意義的程式,但前提是你最好是一名密碼科學家,才能看穿「地獄」。以下是 Malbolge 中寫起來比較像「Hello, World」的程式:

螢幕快照 2013-12-25 下午6.36.10
009

~English

~English 是一種模仿自然聲音語言的程式語言,語法相當寬鬆,給予程式設計師很大的自由揮灑空間。不過,你無法自己定義函數,只能使用該語言內建的函數,以下是範例:

螢幕快照 2013-12-25 下午6.42.01
010

 

榮譽獎:JavaScript

就算是程式門外漢,應該也聽過 JavaScript,它是最受歡迎的程式語言之一,不過 JS 仍不完美,每天成千上萬的程式設計師都要苦思如何解除其中的 bug。有個網站列出 JS 的詭異之處,先讓你們看個兩個雖然簡短但是有實質作用的 JS 片段(不妨在自己的控制器上試試):

螢幕快照 2013-12-25 下午6.44.07
JS

bonus:最優雅的程式語言:Shakespeare)

雖然已經介紹了十種有點莫名其妙的程式語言,不過大家應該還會想玩玩這個:英國偉大文學作家莎士比亞除了寫出經典劇作、詩歌與小說,他的生花妙筆也可以變成優雅的程式語言!Shakespeare 可是 SourceForge 的專案,模仿莎士比亞戲劇,是一種以堆疊為基礎的語言,每個出場人物都代表一個堆疊,自由度非常高,同一個程式可以寫出截然不同的程式,整個程式包含人物簡介,幕、場標題,人物動作、台詞,看起來就是一齣完整的戲劇,史詩巨作版的 Hello, World:

fef3f923-5dcf-4fb9-a958-ddd7c917a688

精選熱門好工作

市調平台會員行銷 PM(RIG)

台灣樂天市場
臺北市.台灣

獎勵 NT$20,000

Data Analyst / Data Scientist

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$20,000

網頁前端工程師

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$20,000

評論