為什麼大家都很否定中文編程?

或者是用中文關鍵字編程。


中文編程是個偽概念。

我用Python、C++、Java編程,而不是用英文編程。


因為大部分支持的人沒寫過文法分析的有限狀態自動機,在這計算機這個領域混上幾年的,如果還不能明白編程用的英文其實是和實際英文不相關的符號集,那就不要吃這碗飯了。

所謂中文編程目前來說是個噱頭,如果真的某天計算機領域搞出來上下文有關文法的解析,我們再談中文編程或是英文編程,那又是另一回事了。


程序語言並不和自然語言有聯繫,而是另外一種獨立的符號系統 。

「別人都是用英文編程的」這個概念是錯誤的,程序語言就是程序語言。

對於編譯器來說,語義分析本質上是一個數學過程,使用什麼關鍵字都不影響分析過程。而關鍵字只是一種可以任意更換的約定。

如此一來「中文編程」不僅是看起來美好的噱頭,更會降低程序員效率。理由是現有的鍵盤布局下中文關鍵字的輸入速度比英文關鍵字慢上許多。


難道有英文編程?


先定義一下中文編程:

中文編程指的是使用中文書寫關鍵字,類名,函數名,變數名,常量名等。純中文編程就是代碼裡面只有中文和各種符號(含阿拉伯數字,中英文等符號)。非純中文編程指的是,代碼裡面含有部分中文。

我支持中文編程,至少是非純中文編程,純中文編程更好。特別是在上層(行業應用,GUI程序,WEB程序等)開發中。

原因:

先上編程觀,編程觀不同就沒啥好討論的了:

  1. 「編程是一種一個人告訴另一個人他想讓計算機做什麼的藝術。」----Donald Knuth
  2. 好的代碼應該是自釋義的。

中文編程,確切的說是母語編程優勢:

  1. 想必很多程序員知道DSL(DomainSpecificLanguage)的概念。DSL是針對某一特定領域而設計的編程語言,既然只針對一個領域的DSL都有存在的價值。那針對一個語系一個國家的,以及這個國家的n多領域的DSL或者叫MLDSL(mother language domain specific language )就沒有存在價值了?難道MLDSL不是DSL的自然延伸嗎?
  2. 讓更多人學會編程。大家都該聽說過OLPC(One Laptop Per Child)吧。都知道樹莓派吧。他們都是希望讓更多的孩子可以接觸電腦,學習編程。如果讓這些孩子可以用母語學習編程的話,就可以大大降低門檻,讓更多小孩子學會編程。設想一下如果未來任何人都可以很容易的學會編程,再加上軟體開發的虛擬特質帶來的地域無關性,那是不是也是貧困地區孩子一條很好的出路呢?當然,這樣可能就搶了很多人的飯碗。
  3. 再說DSL。你知道各行各業有多少行業特定的辭彙嗎?你知道中國有多少特有的辭彙嗎?這些辭彙你能指望英語普通水平的人知道英文怎麼翻譯嗎?專業書籍的翻譯都需要有專業背景的人翻譯,難道以後招程序員也要必須專業背景,英語過八級嗎?
  4. 有些人說現在也沒用中文編程,不一樣能解決這些問題嗎。我就是行業軟體公司的,你知道剛開始看到一堆的拼音首字母縮寫的欄位名有多崩潰嗎?

綜上:中文、母語編程很有意義。未來必將崛起。給大家看看我們一個專業軟體公司的自動化測試代碼是怎麼寫的,這是我指導下作的,有不服的隨時交流:

還不是純中文編程,但是所有專業相關內容都是中文。混合中文編程其他都很好,就是溝通交流,閱讀代碼比較彆扭,總要中英文混雜著讀。另外,認為自己每天都是在用符號編程而不是英文的,寫出程序估計是這樣的

!function(a,b){function c(){var a=d();ai(f(),function(b){a===b.getAttribute("znonce")g(h(b))})}function d(){var a=b.getElementById("znonce");return a"META"===a.tagNamea.content}function e(){return document.currentScript||document.scripts[document.scripts.length-1]}function f(){var a=b.querySelectorAll,c="text/zscript";if(a)return a.call(b,"script[type=""+c+""]");var d=[];return i(document.scripts,function(a){a.type===cd.push(a)}),d}function g(b){bb.length(a.execScript||function(b){a.eval.call(a,b)})(b)}function h(a)


中文編程的語法分析很好解決的,我當初把 vczh/tinymoe · GitHub 做出來,語法分析也是很快就寫出來了。這雖然用英語,但是我不需要標點符號,本質上跟處理中文是一樣的。

只不過這種編程語言無論怎麼優化,都特別啰嗦,再加上易語言作為中文編程的代表,它的用戶平均水平實在過低,兩個因素加起來,就讓人們傾向於唾棄中文編程了。


你們是有多不想學英語...


記得小時候學英語的時候多次被教育說because後面不能跟so,although後面不能跟but,if後面不能跟then...

於是我寫fortran程序的時候總是有種奇妙的違和感...所以那東西真心不是英語編程...

補充一下,有人說背下來英文關鍵字的難度阻礙了中國人學編程。。。我只想說,即使像C++這種大雜燴語言,裡面的「英文」關鍵字也不過二三十個。。。我才不信你背下來這二三十個關鍵字花的時間夠你去查出哪怕一個不大的bug... 其實這方面英語母語的人相對我們又有什麼優勢?像「segmentation fault」這種錯誤信息你去問問美國總統都不一定知道是啥意思。。。換成中文了叫「段錯誤」你就知道是哪兒錯了?


題主說的是易語言吧?


作者:趙越

鏈接:https://zhuanlan.zhihu.com/p/21261266

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

一、鬧得沸沸揚揚的漢語編程

    這幾年以來,特別是最近一段時間,漢語編程鬧得沸沸揚揚,大有我中華民族之驕傲,如果不加緊實行漢語編程,中華民族就要消失了。徽劍本對於漢語編程不以為然,一直沒有理會。之所以寫這篇文章,是因為徽劍前幾天接到一電話,是北京一家公司打過來的,大談推廣漢語編程,要跟徽劍的公司合作在深圳推廣,於是徽劍查了一下資料,發現這兩年所謂的漢語編程這場鬧劇居然愈演愈烈,於是徽劍不得不出來揭露下。對比去年的漢芯事件,徽劍認為,所謂的漢語編程只不過是另一場漢芯的重演而已。所以看完本文,特別是程序員朋友,如果您認為徽劍說的有理,請將本文多多轉發到各種論壇,揭露這場騙局。

    先來看新聞,2007年09月《通信產業報》以「漢語編程異軍突起 民族產業出黑馬」為題發表了一篇文章。開頭是這樣:

    「當今世界,科技突飛猛進。網路改變了人們的生活和思維,成為人們學習和工作不可或缺的一部分。人們點擊滑鼠進行學習、工作和接收外界信息的時候,計算機程序設計語言在其中起到了至關重要的作用。很多年來,我們一直在使用國外的編程語言,人們已經習慣了用C語言、JAVA等計算機語言編寫應用程序,實現人與計算機的完美對話。但是朋友您知道嗎,真正屬於我們自己的計算機程序設計語言——漢語編程已經問世,而且已經在諸多領域發揮了重要的作用。」

    然後文章介紹了漢語編程:

    「漢語編程萌發於1984年,1994年獲得國家發明專利。漢語程序設計語言,不是對計算機語言的簡單漢化,也不是為某種軟體製造一個中文環境,而是中國人自已掌握全部源代碼,使用漢字信息指令,從計算機底層入手,使計算機的中央處理器(CPU)能夠處理存儲器中的漢字詞典,從而實現計算機對漢字程序的識別,不受現行操作系統控制的技術系統,且完全擁有獨立的自主知識產權。」(呵呵,這段話裡面的問題就先不說了)

    在文章的末尾,還上升到了民族大義的高度:

    「我們曾經因為閉關鎖國錯過了工業革命的巨輪,也曾忙於階級鬥爭,而錯過戰後新技術發展的浪潮。如今,我們有了完全自主知識產權的計算機語言,其核心技術無可挑剔,且優勢日益明顯,我們不能再錯過最好的發展時機。漢語編程是民族的,是國家的,中國這個有著5000年深遠文化的泱泱大國,理應把它好好利用起來,發展和振興我國民族產業,為中國人民所熟知和使用。」

    徽劍在收集到的另外的資料還有這樣報道:

    「近日,用漢語編程實現的資料庫開發環境將通過江蘇省科技廳的驗收。按照進程,漢語程序設計語言資料庫開發環境項目完成後一年,項目承擔方——南京漢語編程有限公司將以漢語編程資料庫教育版為推廣重點並進行其他工程開發。項目完成後兩年,漢語編程資料庫標準版將以OEM方式與國內PC製造商捆綁銷售。項目完成後三年,將推出漢語編程資料庫企業版參與政府、企業、部隊信息化建設,部分替代進口產品。江蘇省科技廳將對該項目投資三百萬元。同樣看好漢語編程的還有重慶市科委,他們的預期投資是上千萬。漢語編程作為重大科技發明發現正在申請重慶市的國家級項目。重慶葯監局正在應用漢語編程開發的資料庫實現對所有下屬藥店的監管。目前這個項目完成了大部分,6月底將最後完工。」

    當然徽劍在報道中也找到了不同的聲音:「從2001到2002的兩年間,北京市科委對漢語編程項目進行了5次評審。評審的結果是,超過50%的專家並不認可漢語編程的可行性,元易達沒有能在北京市科委立項。元易達於是堅持「農村包圍城市」的市場開發路線。當年對北京元易達公司進行評審的時候,原中國科學院計算機軟體研究所研究院員仲萃豪這樣評價,「用漢語編程語言開發資料庫,這條路是相當艱巨的。漢語編程現在還只是一個小玩意。」

    看完這些,有人會問,到底這個漢語編程是怎麼回事?到底有多大價值?對未來的發展有如何貢獻?那麼好,下面就來分析。

    二、漢語編程其實是一個大騙局

    我們知道一個騙局「漢芯事件」, 2003年2月,在摩托羅拉公司做測試的工程師陳進,將一片從美國買來的MOTO-free scale 56800晶元,雇請民工磨掉原有標誌,然後加上自己的「標識」,變成了所謂「完全擁有自主知識產權」的「漢芯一號」,申請了多項專利,並藉此當上了上海交大微電子學院院長、博導以及「長江學者」。

    漢芯事件一大特點就是拿一塊別人的晶元,簡單修改一下,然後包裝成自己的成果。這種如果是商業上,只要不侵犯別人權益也就無可厚非。但是作為科技開發就不同,講究的是原創和事實。我們來對比下漢芯和漢語編程,我們會發現他們有驚人的易曲同工之妙。

    報道這樣說:「漢語程序語言是在1993年由北京百樂航天應用技術公司漢語工控部的沈志斌發布的,最初為PC1.0版,是一個16位版本,只能在MS-DOS環境下運行。2000年,沈志斌組建了北京元易達公司,專門從事漢語編程的產品開發。經過 近十年的發展,漢語程序語言目前最新的版本為2.03,能夠在WINDOWS9X/NT環境下運行。」

    一開始的時候,徽劍也沒明白這到底是什麼語言,還以為這真是漢語編程的原創,只是覺得有些彆扭,一來是覺得「漢語編程」的軟體經過這麼多年的發展,版本一直不變,是否讓人難以理解?而且其開發界面極其難看,用反彙編軟體居然發現漢編編譯器主程序文件居然使用的是微軟的VC運行庫,這裡讓人極其不解,既然漢語編程都到了可以漢語彙編的程度,為什麼編譯器還要用VC來開發?

    最近在鐵血社區看到一篇文章,才完全證實了徽劍的猜測。

    從詞典看某「漢語編程」與Forth語言從詞典看某「漢語編程」與Forth語言

-
尖端科技

    看完了文章上面的圖片對比,相信只要有編程基礎的人士都可以明白,這完全是徹頭徹尾的剽竊。一個把開源代碼複製過來,加以簡單修改,然後包裝成自己的原創。

    這裡很抱歉一開始的時候,徽劍對於這種叫Forth語言確實孤陋寡聞,徽劍正想自己動手比較的時候,有一位網友做了好事,先比較了下:

    原帖鏈接(漢語編程與win32forth關係研究),作者來個分析:

    「漢語編程目前能夠下載到的版本為2.03.1920,由於只使用一個版本的漢語編程,後面的描述中就省掉版本了。在鐵血網中的帖子有一個簡單的比較,用的是一個叫win32forth的forth實現,在其主頁Download』s中可以得到兩個不同的版本,一個是4.2build671,另一個是6.12.00是目前最新的穩定版。在鐵血帖中提到過wincon.dll這個文件,我也是從這個文件入手的。」

    於是該網友用VC6中的Depends查看三了個wincon.dll的結果。發現入口非常相似,也就是有可能是差不多的文件。於是該網友考慮了將三個DLL進行互換。

    「將三個dll文件複製到一起,先將三個文件複製到win32forth4.2中,分別使用三個dll後啟動WIN32FOR.EXE的結果發現「漢語編程的wincon.dll文件能夠被win32forth4.2正常使用,而且讀出來的數值與漢語編程環境下一致,都是10895。由於介面改變,4.2和漢語編程的wincon.dll都不能在6.12中使用了。而win32forth4.2版與6.12版的wincon.dll文件都能夠在漢語編程環境下使用,而且讀出的值都與原環境下一致。綜上情況,漢語編程與win32forth在wincon.dll文件上保持了相當好的兼容性,如果說二者一點關係都沒有,形成這種結果的幾率不知道能有多大。」

    更為搞笑的是,當該網友試著將漢語編程程序和win32forth4.2目錄下的這個同名文件WINCON.DLL刪除時居然發現漢語編程與4.2的提示基本一致(徽劍測試時除了標題的兩個字母大小寫不同外其他一致)。該網友不禁問:「這也是巧合嗎?一個號稱漢語的居然冒出一句英文的提示而且還跟別人的如此相似,而且是"Missing procedures!"這種計算機程序中少見的用詞以及少見的標題欄中用標點。」

    「將漢語編程的win32chp.dll文件複製到win32forth4.2文件夾下並命名為win32for.img,當然之前要備份好原來的win32for.img文件;將漢語編程的ckernel.ovl複製到win32forth4.2文件夾下。然後找一個16進位編輯器,打開win32for.img文件,從偏移4(也就是第5個位元組)開始,連續4個位元組修改為D5 11 92 01,保存。雙擊win32for.exe,」

    徽劍看到的是居然看到的是帶著win32forth 4.2圖標的漢語編程。

    最後該網友總結到:「說到底,漢語編程應該是這麼來的,由於win32forth的源碼是公開的,漢語編程利用其源代碼將win32forth字樣抹去,並且修改了識別詞庫文件的標誌(將win32forth的D5 11 92 01修改為DA B7 6E EF),編譯出可執行程序。然後又根據需要,漢化及添加、修改了詞庫形成了現在用漢字和一堆全形符號編程的漢語編程語言。可以說漢語編程為了掩蓋其與win32forth的關係,將符號修改的很徹底,也不管那一堆全形符號用起來多麼古怪。」

    「如果繼續研究下去,我想還會掌握更多的證據,甚至有希望根據wincon.dll和winapi詞數找到漢語編程使用的那個版本的win32forth,不過目前我覺得這些證據已經足夠了,已經不需要再浪費時間了。」

    最後作者得出結論:

    「其實漢語編程就是win32forth的一個修改版,實現的功能基本上都是win32forth實現的。把這個東西吹噓為民族的希望,漢語編程需要帶的ckernel.ovl和win32forth 4.2需要帶的kernel.bin文件都是詞庫(其實就是編譯過一次的位元組碼)的要求,比如要是用漢語編程的編輯器winedit.dll替換成win32for.img的話就不需要帶ckernel.ovl了。注意觀察一下漢語編程的各個程序,都是由同名的一個exe文件和一個dll文件組成的,那個dll文件並不是真正的win32格式的dll文件,而是與win32forth 4.2的img僅差一個標誌的一種格式;而那個exe文件其實都是可以互換使用的,當然跟win32forth 4.2互換都沒有問題。」

    看到沒有,一個騙子。一個跟漢芯一樣的騙子。

    三.彙編都是英文的,其他變成漢語有什麼用

    下面來介紹下語言的基礎,(這部分主要是給對編程不是很了解的人士看的,有些地方不嚴謹,但是只要說明意思就可以了)

    我們先看語言基礎,我們平時看到的電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。計算機語言的種類非常的多,總的來說可以分成機器語言,彙編語言,高級語言三大類。

    計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。目前通用的編程語言有兩種形式:彙編語言和高級語言。

    作為機器語言,其核心是如何控制內部運算,對於不同的CPU架構體系,其機器語言也會不同。表現出來的就是指令集,CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。

    彙編語言的實質和機器語言是相同的,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。使用彙編語言編寫的程序,機器不能直接識別,要由一種程序將彙編語言翻譯成機器語言,這種起翻譯作用的程序叫彙編程序,由於彙編語言只是機器語言的符號化,雖說相對簡單了,但是還是得要求人們學習相應的內部結構,對於複雜的內部結構,有很大一部分人還是無從著手的.所以就出現了高級語言,當程序員用高級語言指令寫完源程序後,只需用編譯器編譯就可運行了.此時編譯器所做的工作就是把高級語言指令翻譯成彙編語言(機器語言。.

    對於軟體開發者來說,他需要考慮的是CPU的指令集,也就是CUP指令集的彙編指令,只有針對這些指令才能開發出相應的程序來,舉例來說,你在基於英特爾CUP的彙編指令上開發的程序,就不能在蘋果電腦上運行。而這些彙編指令集都是CUP等硬體廠商開發提供的,目前我們知道CUP的大部分廠商都是海外公司,他們的指令集(都是彙編語言寫成)都是英文的。

    高級語言是目前絕大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,這樣就大大簡化了程序中的指令。高級語言如目前流行的VB、VC、FoxPro、Delphi等,高級語言所編製的程序不能直接被計算機識別,必須經過轉換才能被執行。

    通常而言,人們寫程序有兩種方式,

    一是直接用彙編語言寫,然後翻譯成機器語言。

    二是用高級語言寫,然後編譯器翻譯成彙編,最後翻譯成機器語言。

    也就是說,程序語言的編寫分為三個層次。

    第一層次(最低層次)是機器語言 其語言都是01.

    第二層次是彙編語言(使用不同的CUP指令集)其語言都是英文

    第三層次是高級語言

    我們會發現一點,不過你採用什麼語言編寫,最終的都是要編譯成彙編語言然後到機器語言,最終都是要調用CUP指令集。(這裡需要指出的是,任何彙編指令集,都是硬體開發廠商開發的,而不是什麼程序語言公司開發的。)就目前而言,這塊都是英語,目前國內有人推出的漢語彙編編程,徽劍覺得啼笑皆非,就彙編語言而言,是直接對CPU等硬體操作的,必須依賴各種指令集,而這些廠商,有幾個提供漢語指令集?

    在沒有硬體廠商提供的漢語指令集前提下,所謂的漢語彙編是不是「雞對鴨講」?這麼一來是不是要有人把英文指令集翻譯成漢語?那跟漢化有什麼區別?

    這樣一來任何人都可以開發出一套漢語彙編來,很簡單,找一套彙編編譯器,增加一個翻譯過程,當輸入漢語時,將其翻譯成對應的英文彙編程序,然後再翻譯成機器語言,或者直接採用替換方式,當輸入英文的時候,將其翻譯成(英文對應)的機器語言。

    任何彙編指令集,都是硬體開發廠商開發的,而不是什麼程序語言公司開發的。讓程序開發者利用彙編語言來操作他們的硬體。除非硬體廠商提供直接針對漢語的指令集,否則任何所謂的漢語彙編都是,翻譯器加彙編編譯器。

    也就是說,在彙編領域,目前並未有任何廠商提供漢語指令的指令集,那麼意味我們所謂的「先進的漢語彙編」就不是什麼自主開發的東西。那麼這裡有一點就可以明了,就是目前的真正的彙編都是英文的。漢語彙編其實只是「假彙編」。

    四、其實漢語編程很好創造出來,但是卻沒什麼用

    前面談到的那個「漢編」事實上是個騙子,下面徽劍要說說不是騙子的漢語編程,以易語言為例。

    易語言是曾經和朱崇君一起開發CCED的吳濤於 2000年初開始開發的,這是一款Windows下全中文可視化編程語言,最新版本為 4.0。易語言自發布後,以其類似於VB的風格和徹底中文化的特點贏得了不少電腦愛好者的青睞,

    易語言的特點就是用漢語來寫,原來編寫程序輸入的是英文,現在改成輸入漢字了,我們來看段易語言程序:

    引入 apr;

    公開 類 啟動類

    {

     公開 靜態 啟動()

     {

     整數 數量;

     控制台.輸出行("請輸入將要生成的隨機數個數:");

     數量= 控制台.輸入整數();

     隨機數集合.顯示(數量);

     隨機數集合.顯示();

     }

    }

    公開 類 隨機數集合

    {

     公開 靜態 顯示(整數 生成個數=10)

     位元組集 臨時位元組集;

     整數 I,J;

     內存池 局內存池 = 創建 內存池;

     控制台.輸出行("下面開始生成"+生成個數.到文本+"個隨機數====&>");

     計次循環(生成個數,J)

     {

     臨時位元組集=隨機數.生成隨機數(1,局內存池);

     I=位元組集類.到整數(臨時位元組集);

     控制台.輸出行(整數類.到文本(I));

     }

     控制台.輸出行("&<========隨機數已生成");

     控制台.輸入文本();//暫停屏幕滾動用

     }

    }

    事實上,徽劍看不出這裡有什麼優勢,懂中文的人似乎也沒幾個能明白。有人說易語言似乎對於英語不好的人有幫助,其實很荒謬,因為如果但是寫程序部分所使用的英文數量是很少的,常用的也就幾十個英文單詞,一般情況下也就幾百個英文單詞。也就是說,如果僅僅考慮到「寫程序」這塊而言,會個三五百單詞足夠,這點數量的單詞相信沒有幾個人學不會。

    我們必須看到而真正出問題的在於「介面」上面,前面說了,目前的操作系統、幾乎所有的各種應用程序都是英文編寫的,所謂的中文版只是在用戶界面做了漢化,這樣一來,用漢語編寫的程序如果要在操作系統上運行、或者與其他程序交換數據,不可避免的遇到英文代碼,特別是操作系統,比如windows下的API等而這些介面又是成千上萬,如果沒有很好的英文是很頭疼的。

    更為甚者,這些介面的文檔大多都是英文編寫,沒有好的英文水平是閱讀不了的。也就是說如果你想成為程序高手,英文是必須解決的攔路虎。也許有一天有了全中文的硬體指令集、全中文代碼的操作系統,那時候我們就可以說用中文編程了。就目前而言對於專業程序員而言,漢語作為程序設計的描述語言並沒有什麼實際意義。

    如果僅僅是考慮普通用戶不懂英文,不會「寫程序」,那麼徽劍提出一個更為簡單的方法:「漢化」,我們可以分為這麼幾步走:

    第一步,對彙編編程器進行漢化,使其在輸入漢語彙編指令時自動對應相應的機器語言。

    第二步,對諸如C、C++等編譯器進行漢化,將其內部對應的英文指令替換成漢語,這樣一來在輸入漢語C、C++程序時可以直接編譯。

    第三步,編譯C、C++等的教材,將其中英文描述換成規範的漢語程序辭彙。同時大量翻譯各種英文指令書籍,便於中文編程人員查找。

    第四步,創立漢語操作系統,找一套開放源碼的LINUX,修改其編譯器,將編譯器輸入對應的英文換成漢語,然後將全部源代碼翻譯成漢語,再用編譯器編譯一下。當然個別地方要考慮到漢語的編碼特點修正一下。徽劍計算,依照幾十名翻譯人員,差不多一年可以完成,看看一套全面的漢語代碼操作系統出來了,

    看到沒有,就這麼幾步,連強大的C、C++等都成了漢語編程語言了。如果想傻瓜點,也可以啊,跟微軟合作、跟SUN合作,可以把.net、JAVA全部漢化了,想來他們也沒有什麼反對的。

    有人說:「漢語編程的優點概括為以下幾個方面:首先是安全係數高。漢語編程是我們用漢語實現的人機對話,我們掌握所有的源代碼,目前尚未發展能與之對抗的病毒,非常有利於保證計算機內的機密安全。」

    這純粹胡扯,目前的計算機語言,特別是諸如C、C++語言本身都是免費的、開放的,任何人都可以學習、使用。就像相對論不是中國人發現的,但是我們一樣用,這只是一種知識而已,如何在這種知識上開發成果來,那是另外一回事。一種知識是談不上安全的。我們並不因為飛機是外國人發明的,我們自己造飛機就泄露了什麼機密。假如我們完全用自己的漢語編程,難道國外特工就不會學嗎?難道國外的信息部隊就不會針對這個開發病毒嗎?而且還是一開一個準,因為你是單獨的,與眾不同,開發針對你的不用擔心自己受影響。

    有人說:「漢語編程是效率高。漢語編程的原理是建立在漢字的本身優勢上,漢字看起來很複雜,但表達的意義卻很豐富。且在鍵盤上輸入漢字遠比輸入英文快,用漢語編程寫出的程序遠比其他語言篇幅要短很多。」

    這裡同樣也是胡說,請問一下,當你在鍵盤上輸入「if」快還是「如果」快,是輸入「end」快還是「結束」快?要知道在編程的英語不是日常的英語,完全可以說是一種新的人類語言,在鍵盤上輸入漢字只是在總的信息量上比英文多,而不是單位數量漢字敲擊鍵盤的次數比英文少。徽劍做過簡單測試,發現以C++為例,如果把C++翻譯成漢語輸入,單位時間內的擊鍵次數是英文的很多倍。

    有人說:「漢語編程是簡單易學,便於普及。只要認識漢字,上到九十九下到剛會走,都可以學習和使用。」

    這更是胡說八道,如同前面分析的那樣,用漢語「寫程序」是方便了,可是還有那麼多英文介面、英文文檔怎麼辦?再說了,有必要來個全民編程嗎?美國普通人也沒幾個會編程的。而且我們看看上面的易語言代碼,光是認識漢字的人明白嗎?

    我們還是看一段評論:「從理論上講,漢語編程應當是一種以漢語為描述語言的計算機程序設計語言,在程序設計 中體現了漢語語法和邏輯,符合中國人的語言習慣和思維方式,而不是英文程序設計語言的簡單漢化,或者是簡單地營造一個漢語編程環境。很遺憾的是,目前我們 所能見到的漢語編程語言,就只不過停留這個層次上,並沒有取得任何實質性的突破。事實上,從2001年到2002年間,北京市科委對漢語編程項目 進行了5次評審,評審的結果是超過50%的專家並不認可漢語編程的可行性。」

    五、中國人編程難的問題和出路在那裡

    下面我們看看中國人編程難難在那裡?

    徽劍以一個拿到(說混到也可以)的系統分析員證書的編程者的親身體驗,中國人編程難難在難在介面語言和技術資料語言上,而不是「寫程序」的語言上。學過編程的朋友都知道,程序中絕大部分都是邏輯和數學表達式,與採用英語還是漢語來描述的關係實質並不大。

    就程序而言,不管學習編程的是誰,是中國人,還是美國人,有一個共同的難點。那就是計算機語言不是我們人類日常交流的語言,越是效率高的編程語言,越是離人們日常生活交流語言較遠。這點上是共同的。

    而中國人真正不利之處就是如果英文不熟練,無法閱讀技術文檔(諸如C++、Java中上萬個用英文的庫函數也不是需要編程者都得記住的東西),無法理解大量的介面等英文信息。而這一點就不是簡單用漢語編程那麼簡單了。世界上最著名的軟體公司,大多是母語為英語的國家。印度現在之所以成為世界第二軟體大國,因其母語是英語,這樣一來在閱讀和學習過程中接觸相關技術就沒有什麼障礙。

    依照我們目前的發展條件,短期內不大可能出現諸如硬體、操作系統等的全國產化,這樣一來如果我們還是熱衷於所謂的用「漢語寫」程序的話,就未免搞笑了。其實我們來看看編程的發展歷史:

    最早期,直接對硬體編程,使用機器語言和彙編語言。

    後來,出現高級語言,在一定程度便於人們的理解了。

    再後來,出現面向對象的程序開發,使得程序開發進一步容易理解和實施。

    現在流行的是面向對象的可視化程序開發,每個語言本身都是「不可視」的,僅僅是語言而已;所謂「可視化」不過是編程工具所提供的功能,讓你在編窗口等一些「看到著」的程序時可以使用拖拽等可視化操作。 如同C++是門語言,而vc++只是一個可視化編程工具,vc++實現了C++的可視化編程。

    有過較長期編程經驗的老程序員都會有這演感受,在十年前寫C++語言程序是很累的(那時國內還很少大家都是用C較多),現在用C++的話,可以用VS2005多方便啊。諸如.NET代碼生成器有助於快速應用程序開發。

    現在甚至不用寫代碼就可以生成很多小點的程序,這在十年前、二十年前是不可想像的,同樣再過十年,不寫代碼生成很多今天看來是很大的程序也不是難事。所以徽劍以為在未來,程序員編程「寫」的代碼數量將會越來越少,程序員更多的考慮的是程序的結構和性能,然後動動滑鼠,輸入幾個數據,一套程序就編好了。

    在這種情況下,更多的內容被封裝了,到那時,才可以說不懂英文也照樣編程。這才是發展的趨勢。

    至於底層部分,那就只有等到國產的硬體出來了,推出大量中文指令集,才有實現真正漢語底層開發的可能。

http://weixin.qq.com/r/hTh3b-LEBK97rbYM922X (二維碼自動識別)


從程序代碼的字元串到最終跑起來的程序之間有許多步驟,值得研究的地方太多太多了。你在一個最簡單的 tokenizer 上浪費精力,做出來的成果對別人一點用也沒有,你研究它做甚。


很多時候,其它部門的人過來溝通時,

看到滿屏的代碼通常都會說:哇~全英文啊~

我通常會說:這不是英文,這是符號。

對編程語言來說,語法關鍵字其實就是個符號,和日常語言關係不大。

和日常語言有關,通常都是需要你命名的變數名或者類名之類。

而這些命名,如果你喜歡的話,哪怕你是使用一個所謂英文編程語言(其實就是關鍵字為英文),

你也是可以用中文來命名變數名的,比如:

public class 香港人 {
private String 佔中立場;

public 香港人(String 佔中立場) {
this.佔中立場 = 佔中立場;
}

public void 對罵(香港人 港人){
}
}

香港人 佔中支持者 = new 香港人("支持");
香港人 佔中反對者 = new 香港人("反對");
佔中支持者.對罵(佔中反對者);

所以,編程語言無所謂中英文,你完全可以用所謂的「英文」編程語言來中文編程。

既然無所謂中英文,你不覺得對代碼來說,中文輸入很啰嗦嗎?不覺得中文代碼看上去很彆扭嗎?


其實沒有什麼中文編程, 英文編程. 期待中文編程的, 往往是對編程並沒有什麼深刻的認識.

就目前的"英文"編程語言來說, 其英文性質的體現也就是在保留字上面. 比如 if else define begin end等等, 其實這些東西與其說是英文, 不如說是符號. 和數學裡面的 ∑ , Λ, ∞有什麼本質區別?

但是為什麼沒有人期待 "中文"數學呢? 為什麼搞數學的寧可寫∞而不是英菲尼特?

if 改成 如果, else 改成 否則, 就是"中文"編程? 這有什麼意義?


因為鄙視的都是專業程序員呀,都是正宗學過編程的,再加上程序員自黑還有調侃之風就可以想像了

但是今天在QQ的日跡看到了一個大概工地工作的那樣的,打著點滴,群發消息說晚上再看看什麼在學學,突然心酸感觸了一下

其實這些人是沒有受過良好的完整的計算機教育的,可是通過以他們生活中最常用的母語為基礎,不是無所事事,而是能努力學習做點小軟體,是不是有時候還停激動的

或許他們不在圈內,知道的需求,弄不巧還能改善改善生活亦或者改變人生

其實,某些方面我們是否能從這些角度思考一下呢

有許多對計算機軟體有需求的,他們沒有一些基礎,或許以他們母語的方式是最快速的滿足他們需求的了吧


我已經幫題主添加的標籤 「易語言」,這樣有一波會讓您滿意的答案正在路上。

ruby是日本人設計的

python是荷蘭人設計的


一幫人不知道在胡說些什麼 所謂編程這件事 是把人的邏輯用敲鍵盤的方式打到編譯器里的 自然這個過程對程序員思考問題的干擾越小越好,中文編程就是這樣特別好的例子,中文程序員在解決中文環境問題的時候,是用中文來思考的,如果他一遍一遍把無數個中文概念人腦轉化成英文概念再輸入到編譯器里 這個效率是非常的低 還容易出錯,參考雙語Stroop效應。至於說為什麼用英語編程大行其道,因為這樣好抄!那別人的程序看懂了改改完事,所以這就是為什麼我們程序員都只是工匠,出不了大師!因為他們把大把的精力和時間用於花在看英文程序上了,他們的思維無數次被"中斷",調用"人腦英文翻譯器",這怎麼可能有母語使用者流暢的打下他的創造性程序強呢?看這個問題這麼多那樣回答,真是覺得悲哀,水平低還眼光還差。


你應該這樣問,

為什麼某人吃飯的傢伙,現在別人(他看不起的人)如果有能夠更容易使用的武器.

他們是反對,還是擁護這些新武器的出現?

現在的英語編程者,屬於既得利益者.他們已經投入成本了.他們不願將來被淘汰.因為他們裝不了B了.所以漢語編程,是他們最害怕的東西,所以他們極力反對.所以,你看不見一個贊同者.

所以他們是反對者.是逆潮流者.

但都會被歷史滾滾碾壓.

漢語編程才是真正的王者歸來.

就像只有接地氣的東西才有生命力一樣.

外國語編程不過是目前的曇花現開而已.

漢語編程,還得等,等我們的程序員升級.時候到了,自然瓜熟蒂落.

那些反對者的理由,太多,太天真,太無聊,我實在不屑於與其辯論.


有能力編寫編程語言的習慣了使用當下現有的編程語言並認為足夠好了並且沒有產生髮明一個對於大多數人更好理解的編程語言的想法

編程語言實際就是一個過度語言,由於自然語言邏輯和語義等過於複雜在讓計算機理解的實現中難度大所以有了編程語言。

編程語言的目的是跟機器溝通,就像人與人溝通一樣。

中文編程應該不僅僅是文字翻譯成中文這樣,就像中文的語法與英文的語法不同一樣,不同的國家有一些歷史、教育沉澱下來的思維模式或者表達方式等等。

所謂的中文編程,其實就是說需要一種我們能夠更好的理解和表達以及更好的能夠與計算機溝通的語言。

為什麼很多說中文編程就變成了漢語拼音?ABC字母難道是為了計算機而生的么?

經常看到谷歌、蘋果、微軟又出了一種編程語言,為什麼是又?為什麼其他語言的就發展的沒力氣?

你發現編程語言實際上是一種很好的膠水嗎?因為你只會他們的編程語言,於是你只能在他們搭設的環境下使用,所以你只能使用他們提供的服務,所以你需要花費精力和財力向他們學習這種語言,所以當你使用這種語言又開發出很多功能和產品時他們的平台又強大了並增加了語言和平台的粘性,所以你又離不開他們。當你發現你如果要提升產品能力時,你需要更多的功能時就需要不斷的需要他們提供的資源,假設有一天(某極端特殊時期,就像武器被禁止賣給某國)他們不再給你的Windows或者某軟體更新了並且不再提供任何新版本產品,你會發現你用的東西比他們越來越落後。

所以,沒有自己的東西這是一種惡性循環

我們在發展自己的操作系統時、發展自己的硬體時、發展自己的編程語言時,總說沒有完善的產業生態鏈,那你有沒有發現如果你再不做點什麼將來依舊是沒有呢?

就像學渣發現追不上學霸的時候,有沒有發現如果不更加的投入有一天你只能選擇從某個領域退出而另尋他路呢?


我是支持的。

把中文編程的含義推廣一下,母語編程,白話編程。好,現在開始發表自己的看法。

當前的程序開發,可以簡單認為是製作一個工具,然後讓這個工具能替代我們做一些事情。

在進行程序開發之前,通常有一個需求,換個說法就是我有一個方法或者是技術,需要使用程序將之工具化。對方法或者技術程序化的這個技術,現在普遍掌握在程序員手中,這對於沒有這個技能的人來說,很難將自己的方法或者技術轉化為工具使之提高某些工作的效率。

當然,由此就產生了一個新需求,製作一個或者一些工具,方便那些不具備對方法和技術進行程序化的人使用。我想這就是中文編程(母語編程)的由來。

當知道其緣由和目標用戶後,我們應該能理解中文編程這類工具的出發點是進步的,它就是想讓更多的人能寫程序。很少有事情能一蹴而就,所以中文編程還在進步,當前其功用或許不盡人意,但是前景是可想像的。

回到問題上來。

為什麼大家否定?因為當前程序員的潛在客戶群體開始會寫程序製作工具了。對於碼農這一個層級的人來說,你們的飯碗可能會減少,工作能力將會受到質疑。

以上。


我就想問一下 if else for print int end void struct……(不一一列舉了)這幾個單詞很難記嗎?編程要的是簡單高效,我希望不要把每個領域都牽扯到政治高度。在知乎這個平台上,我不希望有人還抱著「學英語就是不愛國」這種狹隘思想。使用英語易於人們編程交流,並不是所謂的語言壟斷(這種說法根本毫無邏輯)。


推薦閱讀:

Rust 和 Go 的並發模型有什麼不同,為什說 Rust 的並發模型更好 ?(1.0已沒有內建模型?
為什麼微軟的編程語言C# F#的編譯器要那麼多黑科技?
微軟蘇州Bing可以接觸要哪些技術?編程語言是不是以C#為主,可以自己選擇嗎?
HTML5 是一門編程語言嗎?
在IDLE上寫Python, low嗎?

TAG:編程語言 | 編程 |