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

鄧衍強


作為一個程序猿,我想我從我的角度來回答一下這個問題。

1、對於編程語言,這個要看你怎麼界定了。從大方向上,誠然。PHP,JAVA,C++,C#等等都不是我們自主開發的。但是這些語言有些已經足夠好用了,語法等方面在我們接觸IT時代已經有了一定的先入為主的意思了,如果不是一個全新的語言有50%以上的碾壓優勢,是很難推翻原有的語言框架的。國內也不是沒有過全新語言的嘗試,比如易語言。

2、對於應用方面。國際化交流是大趨勢,更不要提國內還有很多中小企業是為外企服務的開發導向。這就要求我們必須要用一些國際化的語言,不光是我們重新開發的成本問題,更是甲方需求的問題。重新開發一套語言導致甲方的對接人員完全無法理解,想想就是一件很可怕的事情。

3、對於我們國內的大廠BAT來說,他們並不是不開發自己的語言,一方面通用語言的招聘範圍廣,受眾人群廣,同時對於個人的職業未來的發展還有一個比較寬的口徑。所以這種博弈格局下很難有企業或者組織願意推動一門全新的語言。

4、現階段的格局是雖然我們沒有自己開發的語言,但是我們也在用我們的方式重構整個開發環境。不是隻是開發新語言是打造開發環境,對舊有語言的改進,擴展,提高也是一種對於現階段格局更適合,成本更低,更友好的方案。

希望我的回答能為你解惑。


傻缺歡樂多


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

早的有中蟒周蟒,十幾年前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程序員,也很想希望有一天國內人擁有一套屬於自己的全套中文編程語言,而且被國外程序員爭論為世界上最好的語言,能夠推廣到全世界,希望這一天快點到來。




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



熟悉編譯原理的工程師,很容易開發出一門屬於自己的編程語言。但是實用性強不強這個就得待市場驗證了。我曾針對工控環境,開發過一門腳本語言。我用過易語言,但是不好用。用中文編程,不如用符號編程,用符號編,如int i;完全可以寫@ i;類似這樣。只是取決於編譯器或解釋器怎麼處理這句話而已。要想開發出一門多人用的語言,必須合乎多人的語言習慣。像中文編程的語言,本人覺得必須得從編譯器底層搞起,指令集跟中文語法適配,且兼容cisc,risc指令集。像這樣的工作,一般公司不會搞,不盈利難以持久開發,且可能紕漏很多。我們還是繼續用c,c++,java吧……


GoneWithWind3


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


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

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

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

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

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

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

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

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

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

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

實函數 主 無參

言 你好 世界 你好 言葉

回稟 零

再直觀一點:

馬者

機密

整數 眼睛 鼻子 嘴 蹄子

陰陽 釘掌了沒 健康與否

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

公開

實函數 吃草量

實函數 釘掌

子類 騩者 馬者 字 毛色 淺黑

子類 驪者 馬者 字 毛色 深黑

子類 雒者 驪者 字 鬃色 白

子類 驔者 驪者 字 脊色 黃

……

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

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

比如過去的減字譜


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

還有工尺譜:

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

長清短清,那管人離恨?

雲心水心,有甚閒愁悶?

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

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

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

果然是冰清玉潤……

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


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

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

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


小貝的STEAM教室


中文不夠精確,例如中國男足誰都打不過,中國乒乓誰都打不過,計算機理解不了


天龍夫馬


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

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

如下圖:



皮皮143536687


國內程序員那麼多,為什麼不開發一個屬於自己的編程語言?主要原因是:中文編程技術上不然,但做生態太難了!

先說說純技術上的難度。看到很多回答說操作系統、CPU、芯片、指令集等是英美語系的人發明的,所以中文編程水土不服,開發難度大於英語編程。其實這種說法是完全錯誤的!

編程語言分很多類型。第一種是像C、C++、Go這樣的直接編譯成本地機器碼。第二種是像C#、JAVA這樣的依賴虛擬機,編譯成中間語言(字節碼)。第三種是像JavaScript、Python這樣的依賴解釋器,不需要編譯。不論哪一種類型,都不存在制約中文成為優秀編程語言的技術瓶頸。

對於第一種類型,不論中文英文,最終統統編譯成基於特定CPU芯片指令集的指令。在操作系統看來,它們是完全無差別的。性能上沒有任何區別。對於第二種類型,編譯成中間語言,在虛擬機看來,同樣是無差別的。這裡所謂編譯,說通俗點就是“翻譯”,將中文或英文寫成的代碼翻譯成機器指令或中間語言(字節碼)。

對於第三種類型,解釋器作為進程運行於操作系統,由它直接解釋我們寫的程序代碼。比如JavaScript,解釋器就是瀏覽器。離開了瀏覽器,JavaScript是運行不了的(這裡不考慮特殊手段,其本質也是其他解釋器)。很明顯,解釋器既可以解釋英文代碼,也可以解釋中文代碼,甚至未來還可以解釋人類自然語言或語音。比方你用普通話向一個智能家居說“開空調”,然後內置的解釋器就會將空調打開。說明就連中文語音都可以編程了,更不用說中文文字!

總之,技術上看來,中文編程相比英文編程沒有任何更難的地方。這與中文輸入法比英文輸入法難做沒有任何可比性。

下面討論另一個重點,生態問題。

正如同工業化一樣,現在越來越提倡合作開發,從輪子造起的汽車廠已經不復存在。編程語言也是如此。現在沒有任何一個流行的編程語言開發團隊可以開發出所有的相關庫函數和框架。早些年,似乎微軟具備這個能力。微軟能開發出從操作系統,編譯器,數據庫,圖形界面框架,顯卡加速動畫,瀏覽器支持庫,web開發框架等等一系列“配套設施”。但是,現在已經明顯力不從心。

怎麼辦?那就需要藉助全世界的力量去共同維護,維護這個生態。

說通俗點,假如用中文開發出一個編程語言,單從編譯器(或解釋器)來說,難度並不大。但是還有很多工作要做。因為還需要開發很多很多的庫函數給其他開發者用。隨便舉一些栗子。XML和json解析,主流數據庫連接,http客戶端和服務器支持,主流加密算法支持,圖形界面支持。這些工作量非常大。它們不是必須的,但是如果支持的太少,該中文編程的使用者就會要什麼沒有什麼,什麼都得自己寫,會很累。比如想解析一個json,居然發現官方不支持,怎麼辦?網上搜,資料又少,也沒有搜索到第三方庫,只好自己寫了。這就叫生態做的差。

我們還可以往大了說,該編程語言是否有現成的2D/3D動畫庫,是否有現成的科學技術、數據挖掘、深度學習庫,是否有現成的web mvc框架,是否可以支持Windows、Linux、安卓等多個操作系統的跨平臺開發。很多很多!這都需要無數的高手共同去開發完善,絕對不是幾十人、幾千人團隊可以搞定的!

生態這種問題還有馬太效應,即強者更強。試想,一個編程語言,如果本來生態就差(配套的各種庫函數,框架太少),那麼就吸引不了開發者。開發者不願意幫著開發各種開源庫和框架,那麼生態就好不了……當年微軟的手機操作系統就是這樣,其技術上非常優秀,但是WP手機上能安裝的APP實在太少,連微信都沒有,最終用戶就不願意買,都去買安卓和iOS了。WP用的少,開發者自然就沒有激情去學習這麼一套開發技術。就更沒有優秀APP被開發出來。而指望憑著微軟那區區幾十萬人去開發APP顯然不現實,它甚至連微信是個啥可能都沒有搞明白。就算知道微信,那滴滴、京東、淘寶、王者農藥、抖音呢……

總之,生態需要動用全世界的牛人一起去完善!

好了,回到主題,如果開發一箇中文編程語言,那就只有懂中文的人才能完善這個生態,而IT發達的其他國家基本不會過問。不是漲別人威風,就我們這點程序員,真做不成像樣的成熟大型庫。我們就說火的一塌糊塗的Python,它是荷蘭人發明的,荷蘭人說話用荷蘭語。但是如果當初真的限制於用荷蘭語來實現Python,今天就沒有這個地位了。Python的成功得益於它的生態。連Alpha Go這樣的圍棋大師,都是用了Python,底層深度學習是谷歌的tensorflow,其接口是Python。沒有這些大佬的“推波助瀾”,就憑那幫荷蘭人自己玩,會有今天嗎?

我們現有的中文編程語言,像易語言,習語言,為什麼沒有成功?毫無疑問嘛,生態差!如果用的人多,就會開發出很多開源的庫,同時也會有很多人提出修改建議,有了建議,易語言習語言就會不斷版本迭代,不斷完善。怕的不是技術,怕的是沒有人提意見建議,沒有人幫著一起改(假設開源)。

另外再說一個原因,做中文編程語言的必要性不大,遠遠不如開發芯片的必要性。世界上的開源的,優秀的編程語言很多,我們開箱即用,不存在付費、版權的問題。

總結一下,國人沒有開發中文編程語言,不是因為技術上難以實現,而是生態太難做了。


犍為真人


中文編程,這是一個偽命題!

參考一下(大時代)這個電視,中國不缺人才,更不缺時代的精英,但是,嚴重缺乏上層關心的土壤,這是最要命的! 各位,可以算一下,一個普通程序員,月工資按1萬算,1000個員工,一個月就幹掉1000萬,更別說國稅房租之類的,試問下,在短期內無法贏利的前提下,有幾個私營企業能生存?比如當下的WPS中文辦公軟件(不比外國的差),被逼的在首頁做廣告,為什麼?生存逼的!如果,政府部門將採購外國OFFICE的資金全給WPS,wps對個人全免費,wps就一定會走得更好……

故而,中國的CPU、芯片、中文視窗平臺、中文編程語言、中文應用軟件、電子硬件等等,這是一條龍產業,必須由政府出面並出臺一系列的扶持政策,中國獨立強大之路不可能不實現的!


金融紅纓


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

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


分享到:


相關文章: