1024程式設計師節,帶你看看全球奇葩的程式語言,小白也能看得懂~
手持兩把錕斤拷
口中疾呼燙燙燙
今天是個特殊的日子, 10 月 24 日。( 不是 25 日 ! )
差評君想了想,之前和大家分享過一些搞笑程式語言,趁著今天這個日子,再拿出來和各位程式設計師們一起樂一樂 ~
順帶一提,差評君今天又發現了更多的搞笑程式語言。
不少人對於程式設計師的印象可能是這樣的↓
但差評君發現了一門程式語言,它可以讓寫程式的人變成這樣↓
這是一門叫 ArnoldC 的程式語言
沒錯,ArnoldC 裡的 Arnold 指的是阿諾德·施瓦辛格
為毛程式語言會和電影演員扯上關係,差評君給大家介紹一下這個玩意兒你們就知道為啥這麼叫了。。。
“ ArnoldC : 一門受到阿諾德·施瓦辛格在終結者2電影中的表演而啟發的程式語言 ”
差評君為了讓不瞭解程式設計的差友們也能看懂,簡單說兩句啥是程式語言,有技術背景的可以考慮跳過。
程式設計說白了就是你寫一段話(一段程式碼)去命令電腦做事兒。
概念上說來簡單,但電腦不懂人話,只懂機器語言,而且機器語言我們人類用著不太趁手,它們大多長這個樣兒↓
程式語言就是一套我們人類用起來舒服一點的命令。
一門語言還有一套對應的編譯工具,類似於一位翻譯官,把你說的命令轉成機器語言給電腦執行。
比如說你用 Python 告訴電腦輸出一句話 “ Hello World ”,你可以這麼寫:
print("Hello World")
其實很好理解,print 就是列印的意思,上面這句話就是讓電腦把括號裡的內容列印到顯示屏上來。
執行一下~
ArnoldC 這個語言是基於 Java 開發的,裡面的用詞取自電影 《終結者2》 裡阿諾德·施瓦辛格的臺詞,很是獵奇。。。
比如說上面那個列印命令,在 ArnoldC 裡,要寫成 TALK TO THE HAND
這個短語 “ talk to the hand ”,大意是用一種鄙視的語氣讓對方說話,類似於中文的 “ 有屁快放 ” 。。。
類似的獵奇詞句還有很多,而且全部都要大寫,給人一種霸氣外露的感覺。
每個程式最後還要致敬經典臺詞,來一句 YOU HAVE BEEN TERMINATED
差評君裝了一下這個語言,按照開發者給的提示寫了個簡單程式
覺得自己敲的每一行字都自帶冷酷的語氣
然後編譯的時候報了個錯( 就是翻譯官說我下的命令有問題 )
重點是這個報錯的語氣挺有態度的。。。
差評君稍微改了改,再執行一下
成功輸出了 Hello World !
再舉個例子大家感受一下,打個比方,你想寫個程式把數字 1 到 10 列印一下
這是用 C 語言寫的,看不懂沒事兒~
( 其實這段話哪怕不會程式設計,只要懂英語,也不難理解,一個數一開始等於 1,當它小於等於 10 的時候就重複兩件事:1. 列印自己 2. 給原來的值加 1 )
這是用 Arnold C 寫的程式,大致直接翻譯裡面的短語
其實輸出結果是一樣的:
但是差評君寫完後面的程式,覺得自己酷到飛起~
其實呢程式設計師比你們想象得要會玩兒,除了這個 ArnoldC,不正經程式語言多了去了
例如 Cow 語言
沒錯,這個 Cow 就是牛。。。
這個 cow 語言和上面提到的 ArnoldC 一樣,是可以編譯並且成功執行的!
語法是根據牛的叫聲 “ moo ” 進行一些變化,例如 “ Moo ” 和 “ mOo ” 代表的是不同意思,來實現不同的命令。。。
開發人員提供的開發文件,一本正經有沒有!
下面這個程式的原始碼可以印出一句 “ Hello World ”↓
再來看這門叫 INTERCAL 的組合語言,它的特點是要求程式設計師非常有禮貌,你得加上一些 PLEASE ( 請 )。
INTERCAL 寫的 Hello World 程式
更獵奇的是,你要是 PLEASE 用得太多了,會顯得過於刻意,編譯的時候有一定機率不給你通過。。。
還有一些語言屬於沒事兒增加難度型別的搞笑。。。
比如下面要介紹的 Brainfuck 的語言,它寫個 Hello World 的話,原始碼長這樣↓
是不是超級難,看不懂?
所以它叫 Brainfuck 嘛,就是你沒事兒寫它就好比在 gan 自己的大腦。。。
再看另一門語言, Whitespace (空格),它的特點是所有程式都是空白,編譯器只把空格和換行符號視為有效的程式碼。
這是用 Whitespace 程式碼寫的 Hello World
誰特麼看得出寫了啥啊?
其實要是把它選中高亮一下,還是有 “ 內容 ” 的
嗯。。。雖然這門語言看起來很難,但是寫起來一定很爽,可以啪啪啪狂敲鍵盤!
以上程式語言都有人做了完整的編譯器,真的可以拿來開發程式!
差評君再放一些奇葩語言寫的 Hello World 程式感受一下
皮卡丘專用語言
這個語言就叫 fuck ↓
還有華盛頓大學的一名教授 Doug Zongker,搞了個 Chicken 的語言
雞語言版 Hello World,也就 546 個 Chicken 吧。。。
人家搞學術的就是認真,還發表了個論文
而且還特麼被引用了 17 次 ?!!!
類似的這類程式語言叫做 esoteric programming language ,意思是 “ 深奧的程式語言 ” ,經常簡寫成 “ esolang ” 。
Esolang 的開發者們並不打算讓它們成為主流程式語言,畢竟作為工具 esolang 也太蹩腳了。。。
Brainfuck 作者寫的升級版,叫 “ ( ͡° ͜ʖ ͡°)fuck ”
這些語言雖然易用性差得一逼,但是一定是能用的,這才能保證它們還是 “ 程式語言 ” 。
這些語言為啥要拋棄可用性,做那些可有可無的事情呢?
你想想,最早古代人畫畫是為了記錄場景,可後來衍生出了印象派,野獸派等等完全和 “ 寫實 ” 脫離的繪畫流派。
Esolang 和那些後來的畫派一樣,在試圖探索藝術的邊界,只不過出發點是程式語言。
比如有一門語言 “ Shakespeare ” ,目的是使程式看起來像莎士比亞的戲劇。
一個簡單的條件判斷,都會寫成一段臺詞 ( 註釋為翻譯 ):
Juliet: Am I better than you?//茱麗葉:我比你更好嗎?Hamlet: If so, let us proceed to scene III.//哈姆雷特:如果是真的,那就讓我們來到第三場。
創作者在程式碼溜的飛起的同時,一定是個戲劇愛好者。
而一門叫 “ Rockstar ” ( 搖滾巨星 ) 的語言,則通過程式語言體現了 80 年代西方搖滾樂研究。
一句簡單的,把兩個變數相乘的 Rockstar 程式碼:
Put the whole of your heart into my hands.//把你的全部心意放在我的手掌上
上一句程式碼,簡直是當年流行搖滾歌詞的一個模版,體現了 80 年代流行搖滾的精髓。。。( 瞎說的 )
還有一門叫 Piet 的程式語言,則使用了深奧的視覺空間語法。
以下是它的程式碼示範:
//這有什麼好寫註釋的啊喂!!!
程式是通過指標依次經過一個個色塊,來執行一項項操作的。。。
這個畫風瞭解過藝術史的差友們都知道,是荷蘭畫家蒙德里安的 “ 幾何形體派 ” , 主張幾何形體與簡單色彩構成的形式美。
講到這裡,你想到了啥?
沒錯,就是程式設計師們最愛的格子襯衫。
現在你懂了吧?喜歡世人嘲笑程式設計師不懂時尚,畢竟追求藝術的道路是孤獨的。
關於 esolang 在藝術道路上的探索,例子有很多,差評君根本舉不完;
關於這些藝術的說法也有很多,差評君編不下去了。。。
不過 esolang 也是程式設計師造出來的,其實他們一點也不木訥,還充滿了藝術追求。
致敬這些偉大,有趣,同時又想改變世界的工程師, 1024 快樂~!
“ 什麼論壇?啥???沒聽過,沒見過,別亂講! ”