為什麼我們不發展漢化的編程語言?

鄧衍強


很多個以為編程要高深的英語,其實這是一種錯覺。編程的實質是將解決問題的方法告訴計算機,而要構建這些方法就會產生一些基本的結構,如:順序結構,這是基本的,只需將過程一步一步地寫出來就行了;還有分枝結構,在什麼條件下執行某些操作;還有循環結構,重複地執行某些操作等等。為了實現這些,每種編程語言都有一套自己的關鍵字並且關鍵字不多比起英語數以萬記的單詞來說少得可憐,這些關鍵字和一些語法規則構成了編程語言基本框架,然後是一常常見功能組成的內置函數豐富了語言的功能。如果一定要漢化,不是不行,將關鍵字改成中文,內置函數名改成中文,但是改了之後,你會發現使用起來更麻煩了。比如(ⅠF i>10 THEN a=a+1)這是一簡單的BASⅠC語言寫的一行代碼,功能是當i的值大於10,讓變量a增加1。如果漢化寫成(如果i>10 那麼a=a+1)雖然有漢字好理解一點,但輸入方便嗎?(題外話:也許有些人說漢語拼音化就好輸入了,但有英語簡單嗎?要拼音化那你不如就直接說英語寫英語算了。)

所以編程還是用英語表示關鍵字簡單方便,沒學過英語也能掌握,如果連這幾個關鍵字都掌握不了,別說學編程,學語文、數學都成問題,還學什麼編程!


新熱機發明者曾祥雲


你不知道,不意味著沒人這麼做。

早的有中蟒周蟒,十幾年前Python還遠未到現在的熱度時,就漢化了它的關鍵字和部分標準接口,可惜有點生不逢時。

近一兩年隨著全面編程熱潮,中文編程工具也開始興起。屢見報端的少兒Scratch編程就有不止一家使用了中文關鍵字和API,比如下面的斐波那契算法演示:

碰到的同道更有對各種商業常用的英文編程語言進行漢化的努力,包括C++、Python、TypeScript等等不一而足。

而原創的中文編程語言,包括各種無空格的語法設計等等接近中文語法的特色,都有各方有志之士積極投身。

因此,也許你更想問的是,為何漢化的編程語言至今還沒有發展壯大。

這裡要先提到易語言,因為它作為中文編程的標杆,在普及度上,至今沒有超越的。它即使在語言本身開發不溫不火已經很多年的情況下,仍有活躍的社區和大量開發者用戶。這就是中文編程語言開發工具存在硬需求的明證。

那麼為何沒有後來者複製這一模式呢?在我看來,一個大原因在於有志於創建中文編程語言的開發者往往忽視了API建設以及相關的生態圈發展。

相對於語言本身有限的語法,API往往是真正實現功能時更倚靠,也是開發者更需要熟悉的。簡單例子,下面是JavaScript一個圖形庫的演示例程:

JavaScript本身的語法相關單詞就只有 fuction 和 for 兩個。其他函數體內的單詞幾乎全是API(也就是應用程序接口)。而這恰恰是英文編程的一大門檻。

相較以下將API中文化後的例程,能夠完成完全一樣的功能,但讀起來是不是一目瞭然呢?

現今的英文API在大規模商業項目領域幾乎處於壟斷地位,無論是開源還是閉源,Java Spring,Python Django,MFC等等,幾乎覆蓋了所有應用領域。正是因為這樣,在設計中文編程語言時就要更加重視中文API的積累方式,以及社區培育。

說來話長,就先寫到這裡。關注本號,敬請期待後續。


用中文編程


首先想說一句,你能想到的問題其實程序員早就已經想到了。國內程序員那麼多,為什麼不開發一個屬於自己的編程語言,其實中文的編程語言也有,只不過不普及,現在國內的大部分的編程語言已經被JAVA、Python、HTML、PHP等編程語言佔領了99.9%以上,只不過很少人去用而已。

首先來說一說編程不用中文的原因?

眾所周知,開始計算機技術的國家是美國,美國不僅僅佔有大量的計算機資源,就連編程語言也被美國統治,我們現在使用的操作系統都是國外的,比如Windows、iOS、Linux等等,編程軟件大多數是基於他們的操作系統,而且字節編碼採用的都是國外的標準,要想做到使用中文編程,必須要做到自己開發出一個操作系統,這才是關鍵,才能做到計算機軟硬件結合,有一個屬於自己的知識產權。

中文編程語言有哪些?

(1)易語言

易語言是一門以中文編程的計算機編程語言,以“易”著稱,其創始人問吳濤,起初,易語言名字稱為E語言,最早的版本是在2000年9月11日發佈,創造易語言的初衷也是未來讓國內程序員不再跟隨國外的思想走,有一套屬於中國人自己的編程語言。十八年的時間告訴我們,這並沒有成功。

(2)習語言

習語言被稱為國內的“C語言”,它擁有一套完備的編程語言和與其相配套的工具組成,主要初衷是將編程大眾化、普及化、中文化,至少可以減少初學者因為語言障礙而被阻礙,習語言完全支持彙編和c語言,並且向Windows圖形化界面發展,但是也並沒有成為世界上最好的語言。


總之,作為一名JAVA程序員,也很想希望有一天國內人擁有一套屬於自己的全套中文編程語言,而且被國外程序員爭論為世界上最好的語言,能夠推廣到全世界,希望這一天快點到來。




(默默問一下,現在有人用習語言或者易語言嗎做開發編程語言嗎?)我準備去看看。



作為一枚資深程序員,有必要來回答一下這個問題,其實對於熟悉編譯原理的工程師,如果想要開發一門語言,並不是什麼難事,而且目前國內是有自己的編程語言的,易語言和習語言(C語言中文版),但為什麼沒有大規模普及呢,其實就是一個實用性強不強,普通用戶能不能接受的問題了。


舉個淺顯的例子,比如我們的文字,我們的文化,都是幾千年流傳下來的,都是我們的老祖宗積累下來的,而沒有積累的東西在國內是很難流行起來的,就跟編程語言一樣,當C++,Java,PHP這些語言在國內已經紮根幾十年的情況下,主流網站和各種應用都在使用這些語言的情況下,如果現在有中文編程語言的話,還會有人用麼。


在國內開發一門語言並不難,難的是由語言建立起來的各種基礎設施和應用,個人認為最主要的還是計算機的生態圈,現在計算機的生態圈已經構建的差不多了,我們使用的編程語言只是這個生態圈中的一環而已,因此,編程最大的問題就是跟整個計算機生態圈相兼容,隨著現在科技的發展,在國內開發出一個操作系統或者編程語言根本就不是什麼問題,問題是開發出來了誰會用,在國內,除了騙取經費,基本沒什麼市場。


好了,僅僅淺顯的聊這麼多吧,希望能幫到作者。


奔跑小兔888


Python語言不是美國發明的;

Ruby語言也不是美國的

C#,Delphi的發明者同樣也不是美國的。

但他們的關鍵字都是英文。


並不是我們不想發展中文編程,而是在當下,中文編程的市場實在是不怎麼樂觀。

客觀來講,漢語編程確實有一定的好處,更加適合國人的編程習慣。但不可否認的是,漢語編程存在的弊端,也不在少數。

漢語編程要複雜很多

相對於簡潔的英文編程,漢字要複雜太多了。而且在輸入方面上也沒有英語快。並且漢字在意思的表述上容易有歧義,不太嚴謹。有的時候一字多義,一詞多義就會導致機器難以識別。此外,有些相近的含義詞如何去劃分也是個令人頭疼的問題。寫長句子吧,又太浪費時間。大大加深了開發的成本。

大環境使然,漢語編程註定只適用於小範圍

先說明一點:使用漢語的開發語言是有的,比方說易語言,已經有將近20年的歷史了。

但問題是,易語言這些年一直沒有流行起來,大多數情況下都是圈友們自娛自樂,甚至有一些人用易語言來寫外掛,主流依舊是Java,python,C++等。

究其根本,就在於計算機本事就是由國外開發,底層的東西都是拿英語做的,一個漢語的編譯器實在沒有多大意義,漢字編程只是一個表皮。眾所周知,開發的過程中是很容易出BUG的,假設我是用漢語編程的,由於體量太小我根本就找不到參考的文案。這就直接導致了漢語言編程無法大範圍的推廣開來。語言最終是要落實到產品上,然後面向市場面向客戶的,這些產品有電腦,手機,穿戴設備,智能家居……難道全部都要搞成中文的?


所以綜上所述,漢語編程完全可以實現,但是根本做不大,更別提做到Java,C++那種級別。因為漢語確實不適用於編程本身,歸根到底還在於國人在計算機發展時的落後。當然了我們也完全不用自卑,可以把功夫花在別的技術上不是更好嗎?


愛思考的奧特曼


直接給出結論:因為沒必要。


1.我們有人做過一套所謂的“我們自己的編程語言”,出名的有易語言,不出名的還有其他一些語言。簡單來說,也就是漢語編程。不過講真,易語言說白了就是給C++套個漢語的殼子,把關鍵字翻譯成了漢語,而即使你學C++這樣的大雜燴級別的編程語言,所需要記憶的關鍵詞也不過幾百個而已。

2.假定我們需要一個漢語編程的語言(就假設我們認定用漢語做的編程語言會更加好理解吧),或者說的更誇張一點,編程直接是我們中國人發明的,那麼會是怎樣的呢?

眾所周知,編程最根本的是機器碼,也就是二進制,用開關來輸出/輸出指令。外國人用“0”和“1”來表示,那麼中國人呢?

有可能是陰陽,或者是借用八卦的“—”和“--”來表示。

那麼寫成機器語言可能就會變成:

陰陰陰陰陽陽陽陽陽陰陽陰陽陰陽陰陽陰陽陽陽陽陽陽

或者——----—--————------————--之類的吧……

然後假設它會像現在這樣,出現各種高級語言,那麼寫出來代碼:

高級一點:甲 加一平五後出之 乙三 又丁六之於丙五入棧三 反丁六加甲 末陽殺之 末陰入棧四 乙三與甲或丙一補之入棧三 棧三出之 棧三出之 棧四出之……

再直觀一點: 先聖標準庫雲 出入通暢

實函數 主 無參

言 你好 世界 你好 言葉

回稟 零

再直觀一點:

馬者

機密

整數 眼睛 鼻子 嘴 蹄子

陰陽 釘掌了沒 健康與否

實數 日食青草 日食乾草 日食黑豆

公開

實函數 吃草量

實函數 釘掌

子類 騩者 馬者 字 毛色 淺黑

子類 驪者 馬者 字 毛色 深黑

子類 雒者 驪者 字 鬃色 白

子類 驔者 驪者 字 脊色 黃

……

你可能大概其能看懂它是在討論那個方面的東西了,但顯然你仍然不知道這個函數是什麼意思。

甚至,我們的老祖先為了工作方便,在行業內部,就好像《易經》一樣,往往會發明自己的一套表意符號。

比如過去的減字譜


你可能會以為這是喃文,但這確實是我國古代的古琴減字譜,如果你看過《笑傲江湖》,或許還會記得裡面有江湖人士因不認得減字譜而認定令狐沖手裡的笑傲江湖譜是辟邪劍法的橋段。

還有工尺譜:

這是《玉簪記》的譜子,可能對古典文學或者戲曲有所瞭解的朋友,還能把正常的大字讀出來,

長清短清,那管人離恨?

雲心水心,有甚閒愁悶?

一度春來,一番花褪,怎生上我眉痕?

雲掩柴門,鍾兒磬兒在枕上聽。

柏子座中焚,梅花帳絕塵,

果然是冰清玉潤……

但是旁邊標註的唱腔調門兒,只怕完全抓瞎,一點兒看不懂了。


我說這些,重點是想說什麼呢?

你以為編程語言是英語嗎?不是。編程語言就是一門語言,語法完全不同於英文,只是標識用了英文單詞,這個可以理解為自然語言中的藉詞現象。而事實上,這種標識完全能用中文代替,火星文也可以。

你以為編程語言的標記是英文,所以英語母語的人,學編程很有優勢?是,但沒你想象的大。他們的優勢在於,介紹語言特性的資料,一手的都是英文。中文的都是二手,時間上會晚於國外,還有要是翻譯功力不強,曲解原作意思,或未表達好(比如“句柄”、“魯棒性”這種詞),我們讀者,就只能掉入深淵了。


小貝的STEAM教室


當發展到超高級腳本語言時,漢字的高熵值就開始有優勢了!因此,超高級腳本語言以上時,可以採用漢語編程,更有優勢!

漢語編程不等於全漢字,必然會英漢混用,因為低熵值精準的低層語句必須用英語。漢語程序更適合超高級型腳本語言或半自然語或自然語言尤其適合語音指令,這是英語程序難於企及的,但向下兼容英語程序也是必須的!

如下圖:



皮皮143536687


首先編程語言也並不是基於英文,也就不存在所謂的漢語編程,程序命令不過是跟方程式裡的x,y,z一樣,起一個指代作用,跟英文本身並沒有什麼關係。把這x,y,z換成~,+,》也不影響什麼。所以從這個角度來講漢字編程其實很容易的。



看吧,容易吧?所以回到最開始的問題,問什麼漢字編程不普及?就是因為英文字母好輸入啊。一個漢字需要按幾下能輸入?一個字母呢?


一個稀奇古怪的世界呀


因為沒必要,沒必要,沒必要。

我來說一說,為什麼沒必要。



一、費力不討好

你以為僅僅是漢化編程語言這麼簡單嗎?你以為僅僅是將英文單詞或者英文字母轉變成漢語麼?

將一個編程語言中的關鍵字,語法,語句翻譯一下是很簡單,但是翻譯了又能怎麼樣?編譯器,解釋器又不能識別漢語,那麼你就勢必得重新寫一套編譯器和解釋器等等,寫這個可不簡單,等你搞完這一系列的問題,跟相當於重寫一套編程語言一樣了。

而且有很多編程語言,比如 print 和 echo 都翻譯成輸出麼?不同的編程語言代表輸出的英文可能不一樣,你漢字如何區分?

一門編程語言的關鍵字,語句,語法加起來也就幾百個單詞,用多了自然就記住了,翻譯漢化不是簡單的一件事,費力不討好。



二、編程語言本質上不是自然語言

什麼意思呢?你看到大家編程都是使用的密密麻麻的英文編程的對吧?但是它並不是我們普通意義上的自然語言。本質上就是字母編程,英文字母,只不過是我們給他們重新賦予了一個意思。比如 String 吧,在英文中代表什麼一起,string 自然語言就是“線”的意思,而在編程中是定義字符串。

其實,外國人使用時在很多關鍵字在編程中跟自然語言中代表的意思不一樣。

我們給編程語言中的語法,關鍵字重新定義了,代表了編譯器所理解的東西。

所以,說白了就是字母編程,字母組成的詞代表了編程中不同的指令和意義。



最後

所以啊,漢化編程語言是沒有意義的,費力不討好的,沒必要,非常沒必要。弄成漢字,說不定還影響效率和性能呢。


非著名程序員


從事嵌入式的軟件開發十幾年,個人的一種感覺是稍微有點英語水平的人就能從事軟件開發,但是要達到高手的水準英語還是不可或缺的,其實在編程過程中英語更多是表現在翻閱國外原汁原味的文檔,英文不過關的情況下很難看明白,至於在編程的過程中的英文關鍵字影響其實很小,無論是英文還是中文關鍵字用的次數多了也就記住了,從理論上講不懂英文的人也是可以從事編程代碼的學習,但是要成為真正意義上的高手還是顯得吃力一些,要比通常意義上的程序員要費勁而且在概率上也會小一些,畢竟如果英文不達標可能就是學歷層面的問題,影響的不僅僅是英文可能還會有數學基礎。

為什麼中國的漢化編程語言進展的如此緩慢?

漢化編程語言本身的意義不是很大。如果單純從替換關鍵字的概念入手來解決問題,只是在外觀上顯得好理解一些,在真正寫代碼的時候思維邏輯方式還是一樣的,而且目前計算機的架構就是基於馮諾依曼在機器碼裡面就是一堆的0和1的組合方式,而且設計者本身是基於英文體系,所以轉化成中文在效率也會打折扣,同樣是能夠編程沒有必要非要轉化成中文去編程。

首先要搞清楚一點編程的關鍵是編程邏輯,就是設計上的邏輯層次,至於具體代碼的編寫可能在初級階段覺得特別的難,磨練幾年之後關注的重點就不在本身的代碼實現了,更加關注如何去實現功能或者實現的功能是不是有最優的解決方案。層次再高一些就是如何在框架上進行深層次的改進或者如何設計實現一個新的框架之類的操作,到了這個層面就是編程比較高的境界了,至於是不是漢語編程本身的意義已經不是很大了。

漢化語言易語言在國內的推廣並不順利。最早的易語言在推廣之初還是贏得很多的粉絲,但是大家發現易語言的使用者不是設計什麼複雜產品,大部分是用來設計遊戲外掛或者逆向的工作了,很多學歷不是很高的人覺得從事遊戲的輔助編寫或者外掛能夠賺到很多的錢,於是在投入精力到易語言的學習中去了,只能講現在的易語言的發展歷史還是非常的尷尬,本來在設計之初有著良好的民族感染力,但時間長了之後大家並不覺得這種漢化的語言有多大的優勢,現在的發展態勢只能叫不溫不火。

編程語言的生態建設不順利。一個編程語言能夠發展的關鍵在於生態的建設是否跟得上時代的潮流,在全球範圍內編程語言已經超過500種真正能夠站上主流舞臺也不過幾十種,從概率上講還是非常低,中國軟件發展到今天更多是在吸取外在營養,對於創新方面還是欠缺的比較多,從未來的發展趨勢看擁有中文的編程語言只是時間問題,但至少不是在現在因為從技術層面的積累看還是遠遠不夠,當前階段是發展創新方面以及生態建設方面還是欠缺的相對比較多,在基礎積累到一定層次自然就開始創新發展了,但需要一個長期的過程,但也有給自己保持足夠多的信心,時機到了自然就會有了,希望能幫到你。


分享到:


相關文章: