當前位置:
首頁 > 知識 > 憑什麼編程只能用英語?

憑什麼編程只能用英語?

編程依賴英語,但是從技術角度上看這完全沒有必要。

圖片來源:Pixabay

來源 Wired

撰文 Gretchen McCulloch

翻譯 鄭逸嫻

審編 阿金 沛米

下圖是世界上誕生的第一個網頁,被編程網站 Glitch 重現。該編程網站允許用戶對程序進行修補,並指引用戶切換到源代碼視圖,去看那些標有 和 和

的部分。對於一個講英語的人來說,TA 可以輕易猜到

代表「段落」——對於以英語為母語的人來說,理解一個英文代碼頁面顯然要比非英語人群容易得多。

圖片來源:Glitch

現在想像一下,這是你見過的第一個網頁,你興沖沖地揭開它的面紗,想了解它如何工作。但是標籤上不再是那些熟悉的單詞,你看到的是我創建的版本,它與原始版本完全相同,只是因為源代碼是俄語而不是英語。我不會說俄語,假設你也不會俄語,那麼你還敢去修改 (title)、(title) 和 (body) 以及 (p) 的內容嗎?

從理論上講,你可以使用任何符號來寫代碼,電腦才不管這些。計算機一直運行的是一個我們看不見的程序(編譯器),它將你的 IF 或 轉換成它所能識別的 1 和 0,即使我們用馬鈴薯表情符號 來代表 IF,用 15 世紀晦澀的西里爾符號——由多個 O 組成的 ? 來代表 ,它依然能夠正常運行。實際上,通常編程語言用英語單詞 body 或者 IF,只是為了方便我們人類大腦,它們更容易記住那些用我們熟悉的單詞寫下的指令。

但並不是所有人都熟悉這些指令:只有會英語的人才熟悉。「網路的最初承諾」只是一個對英語用戶的承諾,包括母語是英語的人,和非英語母語地區能夠將英語作為第二語言流利使用的精英人群。

確實,現在軟體程序和社交媒體平台通常能呈現大約 30 到 100 種語言——但是那些計算機工具呢?它們可以使我們成為創造者,而不僅僅是消費者。我不是說應該用普及程度低的小語種來寫程序(儘管這很酷),我想說的是,即使是那些擁有廣泛文字記錄的、作為區域貿易通用語言的語種,比如漢語普通話,西班牙語,印地語和阿拉伯語,也並未成為被廣泛使用的編程語言。

我發現有四種編程語言可以在多語言版本中廣泛使用。不是 400。而是 4。

其中兩種專門用於教小孩子編程:ScratchBlockly。Scratch 甚至還做過一項研究,表明如果編程語言是基於他們的母語,那麼小孩子就會學得更快。這些孩子長大後呢?如果成年人不喜歡學習語言,他們可以選擇另外兩種編程語言:Excel 公式Wiki 標記,它們都得到了很好的本地化。

沒錯,無論你的製表軟體界面使用哪種語言,你都可以用公式來命令表格。比如你可以用 Excel 和谷歌表格編寫:=IF(condition,value_if_true,value_if_false), 也可以用西班牙語編寫同樣的內容:=SI(prueba_lógica,valor_si_es_verdadero,valor_si_es_falso),同理,使用其他語種也一樣。當你想到編碼時,這可能不是你想的第一件事,但在技術上,電子表格可以變成圖靈機,它確實展示了一種編程本地化版本的商業案例。

同樣,你可以使用多語言的 Wiki 標記來編輯維基百科和其他維基網站。Wiki 標記的基本功能與語言無關(例如在鏈接兩端放置方括弧 [[鏈接]],但更高級的功能確實要用到單詞,而且這些單詞都是使用當地語言。例如,如果你想編寫一個關於某個人的信息框,在英語維基百科上的參數是「name=」和「birth_place=」之類,而在保加利亞語的維基百科上則是「име=」和「роден-място=」。

除了這四種被廣泛使用的編程語言之外,還有幾十種甚至上百種左右的編程語言可以使用英語以外的一兩種語言,例如Qalb(阿拉伯語),中文 Python,farsinet(波斯語),Hindawi 編程系統(孟加拉語,古吉拉特語和印地語),甚至是拉丁文版的 Perl。一些非英語編程語言甚至可以追溯到由政府贊助、如房間大小的超級計算機時代,例如幾種蘇聯時代基於俄語的編程語言,多語言 ALGOL 68(20 世紀 60 年代)和第四維度(20 世紀 80 年代)。但是許多較新的編程語言,如Python,Ruby 和 Lua,它們雖然來自非英語國家(荷蘭、日本和巴西),但仍使用基於英語的關鍵詞。對於許多人來說,萬維網的最初承諾更像是一種威脅——要麼說英語,要麼被排除在網路之外。

這些編程語言之所以存在,是因為翻譯編程語言並不難。編程語言之間有很多轉換器——你可以在 JavaScript 中輸入一段代碼,然後在 Python 中輸出,或者在 Markdown 中輸入,在 HTML 輸出。這並不是特別困難。編程語言的辭彙數量有限,且定義明確,不存在含義模或文化差異,而這兩者會困擾自然語言的機器自動翻譯。只要弄清楚約一百條命令之間的相互轉換,你就能夠將任何一段代碼從一種編程語言自動映射到另一種語言上。

實際上,翻譯編程語言非常可行,人們往往從藝術角度,或者出於搞笑目的定期翻譯各種編程語言,這種造福他人的書獃子行為使用的是只有圈內人才懂的編程語言。例如,LOLCODE 是以 lolcats 為原型的,你用 HAI 開始寫程序,最後用 KTHXBAI 結尾。還有 Whitespace,它對人眼完全隱形,由不可見的字元空格,製表符和換行符組成。甚至還有一種叫皮卡丘(pikachu)的編程語言,它僅由 pi,pika 和 pikachu這幾個單片語成,所以從理論上說皮卡丘可以脫離神奇寶貝(Pokémon)訓練師,自己成為程序員,並獲得高薪工作。

但是,一種編程語言不僅僅在於其技術應用——更重要的是它形成了人類社區。到目前為止,這四種廣泛使用的多語種編程語言比單語種的非英語編程語言更能促進社區交流,不過它仍然有自己的關鍵瓶頸。當你用谷歌搜索你的錯誤信息時,你需要找到有用的資源。也就是說,你需要弄清楚如何在你的計算機上獲取特定的語言並運行它。這就是第一代網頁瀏覽器能夠讓你編輯網頁,而不僅僅瀏覽網頁為什麼如此重要的原因,也是為什麼 Glitch 能夠做到讓你在瀏覽器窗口內編輯工作代碼,以便於尋求幫助的原因。但是非英語世界的 Glitch 在哪裡?對那些剛開始使用它的人(或者過去十年一直使用的人),如何使網路變得易於修改?

我為什麼仍抱有希望呢?在中世紀的歐洲,如果你想要獲得寫作能力,你必須同時學會一種新的語言。寫作意味著要用拉丁文。用白話比如母語、或者用人們在說的語言去寫作,只能算一種無名之輩不入流的副業。所以你為什麼要學慣用英語或法語寫作呢?又沒有資料可供閱讀。但是通曉拉丁語卻向你打開了通往整個通用語書寫的傳統知識的大門。

當回顧中世紀時,我們總是好奇,既然當時人們能夠用日常講的語言來寫作,為什麼還要不厭其煩地學習拉丁語。在當時,要學寫作就要學習拉丁語,與今天要學編程就要學習英語的邏輯是一樣的。即使我們現在知道如果對小孩子使用母語教學,他們能更快地學會閱讀。我在 Stack Overflow 等網站上看到的有關英語代碼的論點大致相同:為什麼不學習英語呢?它能讓你獲得以英語為基礎的一整套技術傳統。

現在拉丁語一統書面語言的時代早已結束。寫作技術已經在其他語言中普及。從本質上講,編碼技術不再與英語綁定,就像寫作技術不再與拉丁語綁定一樣。我認為,既然編程語言包含人類語言,我們先調整談論它們的方式。第一個網站不是用 HTML 編寫的——它是用英文 HTML 編寫的。那麼 Glitch 重現的底部代碼片段呢?它不是 JavaScript 編寫的,而是英文 JavaScript。當我們突出這些編程語言的英文默認屬性時,我們可以更加明顯地提出質疑——我們可以開始想像一個也包含俄語 HTML 或斯瓦希里語 JavaScript 的世界,而如果你的母語碰巧是英語,那你在學習編程時就沒有所謂的先天優勢。

這樣的世界還不存在。也許在未來 30 年,我們會將其創造出來。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科研圈 的精彩文章:

CCF關於對IEEE撤銷其錯誤決定的聲明
新的帕金森病生物標誌物,可能就藏在腦電圖裡

TAG:科研圈 |