我們需要一種其他人能使用的程式語言

發表於2011-07-21

導讀:原作者Chris Tompkins以前是一位記者,此文基本是從一個新手的角度來討論程式語言。此文在Reddit上的標題很有意思:“新聞記者說程式設計很難,希望能像買蕃茄一樣簡單”,討論也很激烈,約500多條評論,其中有不少精彩評論。

最近,我開始從頭努力學習Objective-C語言,可是我無法擺脫的事情是:它實在太難了。一位有經驗的開發人員可能會嘲笑我講的這句話,但確實是這樣的。我要坦誠地對待我的教育,微積分II是我學過的最高階別的數學,我在美國加州大學柏克萊分校拿到新聞學的高等學位。我是一個熟練的HTML / CSS開發人員,我能把javascript粘合起來,以解決幾乎任何出現的問題。第一次遇到C語言是在一個社群大學中,那時我13歲,我覺得它的語法重複,並且目標不明確,所以很多年來我總是避開著。

現在,過了好多年後又嘗試要重新學起,你可能會指責我不夠努力,但很明顯這是不對的——我將繼續埋頭學習Objective-C語言,直到我能熟練運用它為止。然而,我發現C語言是一種不能擴充套件學習的語法,背後有著極度複雜的系統。

複雜性的困擾

說C語言太複雜,這是因為它需要非常詳細的語法來實現計算機上的所有功能(或可能的功能)。我承認它的特殊性,因為它要跨平臺,與多平臺的硬體有相互作用,但學習C語言不是一定要自下而上的。我想按著我的奇思妙想使之進行,我想這樣做的並不會只有我一人。我不禁想到由博士創造出的語言竟也會遭受“複雜性的困擾”。換句話說,那些知道了這一點的人對於簡化它並不感興趣,因為這讓他們的知識貶值了。

編碼逐漸成為計算機基礎知識的重要組成部分。在當前資訊科技如此重要的社會,這種看法是不能持續的。

要是我們有更好的程式碼雜貨店,事情就較為簡單了

最近,我陪女朋友去雜貨店買東西,我們在一堆堆的新鮮水果和蔬菜中翻找著做飯要用到的所有材料。這個情景使我想到,為什麼編碼不能更像這樣一點?我想,要更像是在挑選做飯用到的材料。學習C語言就像在學習蕃茄的基因序列一樣。要長出蕃茄當然需要有基因序列,可是要把它切片以及加入我的材料清單中,我並不需要熟悉它。這超出了準備一餐飯菜所需要知道的常識。

最重要的是,如果每個想成為廚師的人,在做一餐飯菜時都需要知道一份番茄的基因序列,那麼他們可能就永遠都不會抽空出來做飯了。事實上,他們當然不會是一位非常成功的基因學家,所以他們就更可能永遠也不會成為一名廚師。

沒有足夠的庫、基礎程式碼、以及其他合適的程式碼聚集地

我所說的是並不是新時代中的一些Visual Basic程式或C語言的一個WYSIWYG程式,而是一種自然語言的語法,它通過呼叫C語言的物件庫來使其簡單易學。

編注:WYSIWYG,是“what you see is what you get”的縮寫,即“所見即所得”。

因為電腦程式日益成為人們日常生活中不可缺少的一部分,我們需要幫助孩子學習程式碼,這將使他們受益終生。可是強制他們學習高階別級的數學技巧和晦澀的計算機語言(用“*”表示指標,“.”縮寫語法)是不現實的。這使擁有好奇心的小孩學不到基本的技能,阻礙了他們為以後要學習的多變數微積分打好基礎。與此同時,其餘的人能夠受益於一個程式設計語言,他們不需要花幾年的時間去學習。簡而言之,我們需要有一種語言,它能夠讓那些數學領域的門外漢懂得使用;它包含有更自然的語法(是的,這是有可能的);它使得初級開發人員不需用到規模龐大的術語庫就能為其定義和編寫指令碼。你知道在所有的各種C語言的分支所使用的方法呼叫機制的數量嗎?

讓程式碼儘可能簡單,對於我們中其餘的人來說是一種仁慈

可以把複雜的C語言分支機構可以濃縮成一系列的目物件嗎?——這些物件可以用自然語言串聯到一起。我是這樣認為的,可是目前這遠遠超出我的能力範圍。我知道我們不能繼續使程式語言日趨複雜下去,否則,它最終會變得過於複雜,只有最專業的使用者才能使用。這個人造壁壘,將阻礙幾千甚至幾百萬的人的聲音得以實現。

 

原文:Chris Tompkins   翻譯:伯樂線上 – 張瑞霞

譯文連結:http://blog.jobbole.com/1124/

【如需轉載,但請註明原文/譯文出處、譯文超連結和譯者等資訊,否則視為侵權,謝謝合作!】

相關文章