{eval=Array;=+count(Array);}
你不知道,不意味著沒人這么做。
早的有中蟒周蟒,十幾年前Python還遠未到現(xiàn)在的熱度時,就漢化了它的關(guān)鍵字和部分標準接口,可惜有點生不逢時。
近一兩年隨著全面編程熱潮,中文編程工具也開始興起。屢見報端的少兒Scratch編程就有不止一家使用了中文關(guān)鍵字和API,比如下面的斐波那契算法演示:
碰到的同道更有對各種商業(yè)常用的英文編程語言進行漢化的努力,包括C++、Python、TypeScript等等不一而足。
而原創(chuàng)的中文編程語言,包括各種無空格的語法設(shè)計等等接近中文語法的特色,都有各方有志之士積極投身。
因此,也許你更想問的是,為何漢化的編程語言至今還沒有發(fā)展壯大。
這里要先提到易語言,因為它作為中文編程的標桿,在普及度上,至今沒有超越的。它即使在語言本身開發(fā)不溫不火已經(jīng)很多年的情況下,仍有活躍的社區(qū)和大量開發(fā)者用戶。這就是中文編程語言開發(fā)工具存在硬需求的明證。
那么為何沒有后來者復(fù)制這一模式呢?在我看來,一個大原因在于有志于創(chuàng)建中文編程語言的開發(fā)者往往忽視了API建設(shè)以及相關(guān)的生態(tài)圈發(fā)展。
相對于語言本身有限的語法,API往往是真正實現(xiàn)功能時更倚靠,也是開發(fā)者更需要熟悉的。簡單例子,下面是JavaScript一個圖形庫的演示例程:
JavaScript本身的語法相關(guān)單詞就只有 fuction 和 for 兩個。其他函數(shù)體內(nèi)的單詞幾乎全是API(也就是應(yīng)用程序接口)。而這恰恰是英文編程的一大門檻。
相較以下將API中文化后的例程,能夠完成完全一樣的功能,但讀起來是不是一目了然呢?
現(xiàn)今的英文API在大規(guī)模商業(yè)項目領(lǐng)域幾乎處于壟斷地位,無論是開源還是閉源,Java Spring,Python Django,MFC等等,幾乎覆蓋了所有應(yīng)用領(lǐng)域。正是因為這樣,在設(shè)計中文編程語言時就要更加重視中文API的積累方式,以及社區(qū)培育。
說來話長,就先寫到這里。關(guān)注本號,敬請期待后續(xù)。
大家好,我是王小編。
首先想說一句,你能想到的問題其實程序員早就已經(jīng)想到了。國內(nèi)程序員那么多,為什么不開發(fā)一個屬于自己的編程語言,其實中文的編程語言也有,只不過不普及,現(xiàn)在國內(nèi)的大部分的編程語言已經(jīng)被JAVA、Python、HTML、PHP等編程語言占領(lǐng)了99.9%以上,只不過很少人去用而已。
首先來說一說編程不用中文的原因?
眾所周知,開始計算機技術(shù)的國家是美國,美國不僅僅占有大量的計算機資源,就連編程語言也被美國統(tǒng)治,我們現(xiàn)在使用的操作系統(tǒng)都是國外的,比如Windows、iOS、Linux等等,編程軟件大多數(shù)是基于他們的操作系統(tǒng),而且字節(jié)編碼采用的都是國外的標準,要想做到使用中文編程,必須要做到自己開發(fā)出一個操作系統(tǒng),這才是關(guān)鍵,才能做到計算機軟硬件結(jié)合,有一個屬于自己的知識產(chǎn)權(quán)。
中文編程語言有哪些?
(1)易語言
易語言是一門以中文編程的計算機編程語言,以“易”著稱,其創(chuàng)始人問吳濤,起初,易語言名字稱為E語言,最早的版本是在2000年9月11日發(fā)布,創(chuàng)造易語言的初衷也是未來讓國內(nèi)程序員不再跟隨國外的思想走,有一套屬于中國人自己的編程語言。十八年的時間告訴我們,這并沒有成功。
(2)習語言
習語言被稱為國內(nèi)的“C語言”,它擁有一套完備的編程語言和與其相配套的工具組成,主要初衷是將編程大眾化、普及化、中文化,至少可以減少初學者因為語言障礙而被阻礙,習語言完全支持匯編和c語言,并且向Windows圖形化界面發(fā)展,但是也并沒有成為世界上最好的語言。
總之,作為一名JAVA程序員,也很想希望有一天國內(nèi)人擁有一套屬于自己的全套中文編程語言,而且被國外程序員爭論為世界上最好的語言,能夠推廣到全世界,希望這一天快點到來。
因為,王小編等著一天等的太久了……
(默默問一下,現(xiàn)在有人用習語言或者易語言嗎做開發(fā)編程語言嗎?)我準備去看看。
直接給出結(jié)論:因為沒必要。
1.我們有人做過一套所謂的“我們自己的編程語言”,出名的有易語言,不出名的還有其他一些語言。簡單來說,也就是漢語編程。不過講真,易語言說白了就是給C++套個漢語的殼子,把關(guān)鍵字翻譯成了漢語,而即使你學C++這樣的大雜燴級別的編程語言,所需要記憶的關(guān)鍵詞也不過幾百個而已。
2.假定我們需要一個漢語編程的語言(就假設(shè)我們認定用漢語做的編程語言會更加好理解吧),或者說的更夸張一點,編程直接是我們中國人發(fā)明的,那么會是怎樣的呢?
眾所周知,編程最根本的是機器碼,也就是二進制,用開關(guān)來輸出/輸出指令。外國人用“0”和“1”來表示,那么中國人呢?
有可能是陰陽,或者是借用八卦的“—”和“--”來表示。
那么寫成機器語言可能就會變成:
陰陰陰陰陽陽陽陽陽陰陽陰陽陰陽陰陽陰陽陽陽陽陽陽
或者——----—--————------————--之類的吧……
然后假設(shè)它會像現(xiàn)在這樣,出現(xiàn)各種高級語言,那么寫出來代碼:
高級一點:甲 加一平五后出之 乙三 又丁六之于丙五入棧三 反丁六加甲 末陽殺之 末陰入棧四 乙三與甲或丙一補之入棧三 棧三出之 棧三出之 棧四出之……
再直觀一點: 先圣標準庫云 出入通暢
實函數(shù) 主 無參
言 你好 世界 你好 言葉
回稟 零
再直觀一點:
馬者
機密
整數(shù) 眼睛 鼻子 嘴 蹄子
陰陽 釘掌了沒 健康與否
實數(shù) 日食青草 日食干草 日食黑豆
公開
實函數(shù) 吃草量
實函數(shù) 釘掌
子類 騩者 馬者 字 毛色 淺黑
子類 驪者 馬者 字 毛色 深黑
子類 雒者 驪者 字 鬃色 白
子類 驔者 驪者 字 脊色 黃
……
你可能大概其能看懂它是在討論那個方面的東西了,但顯然你仍然不知道這個函數(shù)是什么意思。
甚至,我們的老祖先為了工作方便,在行業(yè)內(nèi)部,就好像《易經(jīng)》一樣,往往會發(fā)明自己的一套表意符號。
比如過去的減字譜
你可能會以為這是喃文,但這確實是我國古代的古琴減字譜,如果你看過《笑傲江湖》,或許還會記得里面有江湖人士因不認得減字譜而認定令狐沖手里的笑傲江湖譜是辟邪劍法的橋段。
還有工尺譜:
這是《玉簪記》的譜子,可能對古典文學或者戲曲有所了解的朋友,還能把正常的大字讀出來,
長清短清,那管人離恨?
云心水心,有甚閑愁悶?
一度春來,一番花褪,怎生上我眉痕?
云掩柴門,鐘兒磬兒在枕上聽。
柏子座中焚,梅花帳絕塵,
果然是冰清玉潤……
但是旁邊標注的唱腔調(diào)門兒,只怕完全抓瞎,一點兒看不懂了。
我說這些,重點是想說什么呢?
你以為編程語言是英語嗎?不是。編程語言就是一門語言,語法完全不同于英文,只是標識用了英文單詞,這個可以理解為自然語言中的借詞現(xiàn)象。而事實上,這種標識完全能用中文代替,火星文也可以。
你以為編程語言的標記是英文,所以英語母語的人,學編程很有優(yōu)勢?是,但沒你想象的大。他們的優(yōu)勢在于,介紹語言特性的資料,一手的都是英文。中文的都是二手,時間上會晚于國外,還有要是翻譯功力不強,曲解原作意思,或未表達好(比如“句柄”、“魯棒性”這種詞),我們讀者,就只能掉入深淵了。
作為一枚資深程序員,有必要來回答一下這個問題,其實對于熟悉編譯原理的工程師,如果想要開發(fā)一門語言,并不是什么難事,而且目前國內(nèi)是有自己的編程語言的,易語言和習語言(C語言中文版),但為什么沒有大規(guī)模普及呢,其實就是一個實用性強不強,普通用戶能不能接受的問題了。
舉個淺顯的例子,比如我們的文字,我們的文化,都是幾千年流傳下來的,都是我們的老祖宗積累下來的,而沒有積累的東西在國內(nèi)是很難流行起來的,就跟編程語言一樣,當C++,Java,PHP這些語言在國內(nèi)已經(jīng)扎根幾十年的情況下,主流網(wǎng)站和各種應(yīng)用都在使用這些語言的情況下,如果現(xiàn)在有中文編程語言的話,還會有人用麼。
在國內(nèi)開發(fā)一門語言并不難,難的是由語言建立起來的各種基礎(chǔ)設(shè)施和應(yīng)用,個人認為最主要的還是計算機的生態(tài)圈,現(xiàn)在計算機的生態(tài)圈已經(jīng)構(gòu)建的差不多了,我們使用的編程語言只是這個生態(tài)圈中的一環(huán)而已,因此,編程最大的問題就是跟整個計算機生態(tài)圈相兼容,隨著現(xiàn)在科技的發(fā)展,在國內(nèi)開發(fā)出一個操作系統(tǒng)或者編程語言根本就不是什么問題,問題是開發(fā)出來了誰會用,在國內(nèi),除了騙取經(jīng)費,基本沒什么市場。
好了,僅僅淺顯的聊這么多吧,希望能幫到作者。
當發(fā)展到超高級腳本語言時,漢字的高熵值就開始有優(yōu)勢了!因此,超高級腳本語言以上時,可以采用漢語編程,更有優(yōu)勢!
漢語編程不等于全漢字,必然會英漢混用,因為低熵值精準的低層語句必須用英語。漢語程序更適合超高級型腳本語言或半自然語或自然語言尤其適合語音指令,這是英語程序難于企及的,但向下兼容英語程序也是必須的!
如下圖:
還真有用漢化的編程語言。在2000年的時候,一名叫做吳濤的人,發(fā)明了一種基于已中文為代碼的編程語言——易語言。后面還衍生出了移動客戶端的中文編程語言——易安卓。雖然說,中文編程在一定程度上降低了國人學習編程的門檻,但是,中文編程語言還是只能在小眾范圍內(nèi)使用。
首先,計算機誕生于美國,所以制定編程標準和編程語言的時候,肯定是以英語作為編程語言。你可以看一下我們常用的這些編程語言中,C、Java、C++、C#、phyton等的編程語言都是英文。
其次,人類如果想指揮好計算機,只能通過編程語言向其下達指令,但是中文的語法和表達方式博大精深,而且較為復(fù)雜。不如英文簡單直接,所以,英文更適合作為編程語言。
如果要想用中文來編程,那么就需要有統(tǒng)一、高效、標準、共享的代碼庫。從技術(shù)層面來講,也要拋棄二進制,采用三進制的計算機。因為一個漢字和一個英文字母所占用的空間是不一樣的。同時,如果想要讓漢字編程占有一席之地,必須要有更加合理有力的說服理由。這樣才能讓漢字編程成為主流的可能性大幅提高。
很多個以為編程要高深的英語,其實這是一種錯覺。編程的實質(zhì)是將解決問題的方法告訴計算機,而要構(gòu)建這些方法就會產(chǎn)生一些基本的結(jié)構(gòu),如:順序結(jié)構(gòu),這是基本的,只需將過程一步一步地寫出來就行了;還有分枝結(jié)構(gòu),在什么條件下執(zhí)行某些操作;還有循環(huán)結(jié)構(gòu),重復(fù)地執(zhí)行某些操作等等。為了實現(xiàn)這些,每種編程語言都有一套自己的關(guān)鍵字并且關(guān)鍵字不多比起英語數(shù)以萬記的單詞來說少得可憐,這些關(guān)鍵字和一些語法規(guī)則構(gòu)成了編程語言基本框架,然后是一常常見功能組成的內(nèi)置函數(shù)豐富了語言的功能。如果一定要漢化,不是不行,將關(guān)鍵字改成中文,內(nèi)置函數(shù)名改成中文,但是改了之后,你會發(fā)現(xiàn)使用起來更麻煩了。比如(ⅠF i>10 THEN a=a+1)這是一簡單的BASⅠC語言寫的一行代碼,功能是當i的值大于10,讓變量a增加1。如果漢化寫成(如果i>10 那么a=a+1)雖然有漢字好理解一點,但輸入方便嗎?(題外話:也許有些人說漢語拼音化就好輸入了,但有英語簡單嗎?要拼音化那你不如就直接說英語寫英語算了。)
所以編程還是用英語表示關(guān)鍵字簡單方便,沒學過英語也能掌握,如果連這幾個關(guān)鍵字都掌握不了,別說學編程,學語文、數(shù)學都成問題,還學什么編程!
Python語言不是美國發(fā)明的;
Ruby語言也不是美國的
C#,Delphi的發(fā)明者同樣也不是美國的。
但他們的關(guān)鍵字都是英文。
并不是我們不想發(fā)展中文編程,而是在當下,中文編程的市場實在是不怎么樂觀。
客觀來講,漢語編程確實有一定的好處,更加適合國人的編程習慣。但不可否認的是,漢語編程存在的弊端,也不在少數(shù)。
相對于簡潔的英文編程,漢字要復(fù)雜太多了。而且在輸入方面上也沒有英語快。并且漢字在意思的表述上容易有歧義,不太嚴謹。有的時候一字多義,一詞多義就會導(dǎo)致機器難以識別。此外,有些相近的含義詞如何去劃分也是個令人頭疼的問題。寫長句子吧,又太浪費時間。大大加深了開發(fā)的成本。
先說明一點:使用漢語的開發(fā)語言是有的,比方說易語言,已經(jīng)有將近20年的歷史了。
但問題是,易語言這些年一直沒有流行起來,大多數(shù)情況下都是圈友們自娛自樂,甚至有一些人用易語言來寫外掛,主流依舊是Java,python,C++等。
究其根本,就在于計算機本事就是由國外開發(fā),底層的東西都是拿英語做的,一個漢語的編譯器實在沒有多大意義,漢字編程只是一個表皮。眾所周知,開發(fā)的過程中是很容易出BUG的,假設(shè)我是用漢語編程的,由于體量太小我根本就找不到參考的文案。這就直接導(dǎo)致了漢語言編程無法大范圍的推廣開來。語言最終是要落實到產(chǎn)品上,然后面向市場面向客戶的,這些產(chǎn)品有電腦,手機,穿戴設(shè)備,智能家居……難道全部都要搞成中文的?
所以綜上所述,漢語編程完全可以實現(xiàn),但是根本做不大,更別提做到Java,C++那種級別。因為漢語確實不適用于編程本身,歸根到底還在于國人在計算機發(fā)展時的落后。當然了我們也完全不用自卑,可以把功夫花在別的技術(shù)上不是更好嗎?
很多人把問題搞偏了,中國人自己開發(fā)語言變成了沒有中文編程語言。
中國人發(fā)明的編程語言還沒有(自己基于語言加點特性或簡單如模板引擎不算),中文編程語言也沒有(那個什么易語言不算),或者說我們能看到用于工業(yè)生產(chǎn)的編程語言里沒有中國人創(chuàng)造的。
確實有點奇怪,中國可能是世界上程序員最多的國家,程序員水平也很高。但,就是沒有創(chuàng)造出一門編程語言。其實不只是語言,操作系統(tǒng)、數(shù)據(jù)庫、大型中間件、瀏覽器、大型IDE,基本上也沒有中國人創(chuàng)造的。
這是為什么?
1、中國人拿來主義,缺乏創(chuàng)造精神。雖然不斷鼓勵創(chuàng)新,但是因為創(chuàng)新機制和既得利益,存在著打壓創(chuàng)新和遏制創(chuàng)造的現(xiàn)象。
2、中國人單打獨斗,缺乏合作精神。中國人喜歡搞關(guān)系,喜歡禮尚往來。中國文化里講和為貴,但非和而不同而是同而不和。
3、中國人不注重細節(jié),不寫文檔,不注重工程質(zhì)量。這一點中國人雖然勤奮努力,但卻也不喜歡做細枝末節(jié)的小事。大談治國平天下,卻很少修身齊家。
4、中國人考慮問題含混不清、模棱兩可、湊湊合合,缺乏系統(tǒng)思考和高級抽象,不夠嚴謹縝密。中國的哲學就是這樣,非常深邃,但是又缺乏系統(tǒng)結(jié)構(gòu)和嚴密邏輯。
5、中國人鼓勵盜版,缺乏版權(quán)意識。或者是法律意識淡薄,整體都如此。
6、中國人推崇外國人的,外國人尤其是西方世界的就是好。這是近百年來形成的心理問題。
7、中國處于發(fā)展中國家,軟件與信息產(chǎn)業(yè)起步較晚,離國際領(lǐng)先還有差距。隨著中國經(jīng)濟崛起,這個差距在逐步縮小。
8、中國人不重視基礎(chǔ)學科,不喜歡理論研究,比較重視實際效益。現(xiàn)在國家意識到這個問題了。錢學森之問引人深思,國家在搞“核高基”專項計劃以及《中國制造2025》。
9、中國人培養(yǎng)的是偏科人才,而不是綜合人才。軟件是科學與藝術(shù)的結(jié)合,越到深處才越發(fā)現(xiàn)很多知識是想通的。我們只注重數(shù)理化考試成績,忽視了文史哲,很多計算機畢業(yè)生連基本文化素養(yǎng)都沒有,詩詞歌賦、歷史哲學更是糊里糊涂。我們不缺一般的專業(yè)型人才,計算機畢業(yè)生多如牛毛,而真的棟梁之才鳳毛麟角,頂尖人才比如圖靈獎可以說沒有。
10、中國人還不太懂得反思,把“吾日三省吾身”拋諸腦后。雖然一方面拿來主義和崇洋媚外,表現(xiàn)的懦弱卑怯,而另外一方面又驕傲自豪無比,自我沉醉在夢境中不能自拔。須知只有不斷反思才能不斷進步,只有不斷提升自己、不斷學習,才能趕上別人。
以上種種不好,都說明中國目前難以產(chǎn)出自己的編程語言。但是,我完全相信中國人隨著1-2代人的努力,到我兒子成為程序員時,他們或者他的下一代人,一定可以發(fā)展出自己的編程語言和大型基礎(chǔ)軟件來。
因為:中國人勤奮、聰明、務(wù)實以及對明天有著美好的向往。
10
回答0
回答10
回答6
回答10
回答0
回答10
回答0
回答10
回答10
回答