一篇其貌不揚的博客文章,無非是講了講自己工作的事情,一時間卻攪得IT業(yè)界、互聯(lián)網(wǎng)上風(fēng)生水起,眾說紛紜,爭議不休,關(guān)注的媒體也不下千家,何事具有如此之威?它就是“漢語編程”。
漢語編程,也許對于讀者朋友們已不再陌生,從1984年初見雛形到現(xiàn)在也有二十多年的歷史了。我們先來看看漢語編程的簡介:漢語編程設(shè)計系統(tǒng)是一套獨立開發(fā)、擁有自主版權(quán)的以漢語為核心、東方思維為基礎(chǔ),面向組件和對象,具有跨系統(tǒng)和平臺無關(guān)性的計算機語言。其特點和優(yōu)勢是:編程思維的創(chuàng)新、軟件方法的創(chuàng)新、漢字的親和力、跨越平臺的靈活性、嵌入式操作系統(tǒng)的新機遇、極佳的安全性、超越傳統(tǒng)編程工具;發(fā)展方向為:跨平臺應(yīng)用、數(shù)據(jù)庫開發(fā)、漢字元件庫完善,中文操作系統(tǒng)平臺、中文CPU。
看過以上簡介,不免讓筆者心潮澎湃、熱血沸騰。可冷靜下來仔細想想,卻不難發(fā)現(xiàn)漢語編程的宣傳之中為何還隱含著種種漏洞?也許,我們并不應(yīng)該去懷疑眾多專家對于漢語編程價值的肯定,畢竟計算機語言是整個軟件業(yè)的核心技術(shù),是實現(xiàn)人機對話的工具,掌握了屬于自己的編程語言就意味著我們不再受制于人。但問題是我們能夠做到這一點嗎?那么,漢語編程究竟是一項劃時代的技術(shù)呢。還是經(jīng)不起推敲的鬧劇呢?
語言不是編程的本質(zhì)
在此,筆者先摘錄計算機教育專家譚浩強先生著作中的一段話:
要使計算機按人的意圖工作,就必須使計算機懂得人的意圖,接受人向它發(fā)出的命令和信息。人要和機器交換信息就要解決一個“語言”的問題,但計算機并不懂人類的語言(無論是中文或英文),例如,我們寫A+B=c,機器不能接受。它只能識別0和1兩種狀態(tài)。
人們經(jīng)常用語言(或文字)來表達思想、交流經(jīng)驗、互通信息。其中漢語、英語,法語是使用人數(shù)最多的語種,人類相互交流信息所用的語言稱為自然語言,但是當(dāng)前的計算機還不具備直接理解自然語言的能力,于是人們希望找到一種和自然語言接近,并能為計算機接受的語言,這種語言被稱為計算機的高級語言,用高級語言編寫的程序由英文字母、數(shù)字、運算符號等按照一定的語法規(guī)則組成,不過計算機并不會直接執(zhí)行用高級語言編寫的程序,需要先將其翻譯成機器能執(zhí)行的語言(機器語言,由二進制代碼表示的指令組成),再在機器上運行,因此現(xiàn)代計算機解題的一般過程為;用戶用高級語言編寫程序,連同數(shù)據(jù)一起送入計算機(用戶程序一般稱為源程序),然后由計算機翻譯成機器語言程序(稱為目標程序),在計算機上運行后輸出結(jié)果。
而這種“翻譯”過程通常有兩種做法,即編譯方式和解釋方式。編譯(或解釋)程序替代了人工把用高級語言寫的源程序翻譯為機器指令程序,適用于不同的計算機,這就大大節(jié)省了使用者的工作量。
由于程序中絕大部分都是邏輯和數(shù)學(xué)表達式,不論我們采用漢語、英語或者其他各種語言作為編程語言,都要通過“翻譯”才能讓計算機識別,并執(zhí)行指令。既然程序的執(zhí)行過程沒有任何變化。那么我們采用各自習(xí)慣的英文或漢字進行編程設(shè)計,對于計算機的解題原理而言又有何種區(qū)別呢?程序中涉及的字符僅僅是為了滿足一定的語法結(jié)構(gòu),思維邏輯而構(gòu)建的,一味地糾纏“if…else…”和“如果()”或“rg”哪個簡單、好記,是沒有任何意義的,也就更談不上以漢語或英語為核心、東方或西方思維為基礎(chǔ)了。我們姑且拋開英語和漢語,舉個印度SKTN語法的例子,這樣的程序大家能看懂嗎?所以,使用規(guī)范、通用的字符結(jié)構(gòu),不僅為了方便自己,更是為了便于程序的發(fā)展和溝通。要知道文字和語言都是工具,統(tǒng)一的標準才是項目開發(fā)、事業(yè)發(fā)展前進的根本保障。
再從編程語言的發(fā)展歷史來看,它經(jīng)歷了從匯編到高級、從面向過程到面向?qū)ο蟮霓D(zhuǎn)變,而沒有英語、德語、俄語等不同語種工具的說法。更何況,即便把c++、Java中上萬個用英文拼成的庫函數(shù)名用漢字來代替,對于編程語言本身的發(fā)展也沒有任何價值,充其量不過是一種“漢化”工作。
編程是否老少皆宜
所謂編程,無非就是用程序的語言實現(xiàn)自己想要的功能。功能已經(jīng)擺在這里,不同的語言的區(qū)別應(yīng)該就是語法上的不同,最終實現(xiàn)出來的,應(yīng)該是一樣的結(jié)果。既然語言不是編程的本質(zhì),那么我們啟動漢編新版編輯器再來看一段漢編代碼,是否真如介紹那樣“只要認識漢字,上到九十九下到剛會走,無需學(xué)習(xí)計算機知識,都可以學(xué)習(xí)和使用,人人都可成為程序員”呢?
漢編代碼中同樣出現(xiàn)了大量的計算機術(shù)語,如此的語法結(jié)構(gòu),怕不是簡單地學(xué)學(xué)漢語就能完成的吧!要知道,我們所學(xué)習(xí)的計算機知識并不是僅僅為了編寫代碼,而縮寫代碼必須先了解許多的計算機基礎(chǔ)知識,一個程序員如果沒有堅實的計算機基礎(chǔ)知識,幾乎不可能編寫一個有價值的程序,同樣,我們在學(xué)習(xí)編程時,面臨的兩大最佳途徑就是:讀程序、寫程序。而讀程序需要具備的就是必須有一定的語言基礎(chǔ)知識(指語法知識),最起碼要能讀懂別人程序的每—行意思。
由于漢語是意義最豐富的語言之一,字詞的不同組合隨使用環(huán)境的不同往往包含多種含義,容易導(dǎo)致很多理解上的歧義,這樣在語法結(jié)構(gòu)的構(gòu)成上就會出現(xiàn)很多差異,即便可以提前在編譯器中定義漢字辭典,那這種做法又與現(xiàn)有的高級語言有何區(qū)別?除非我們的電腦早已進化得如同“變形金剛”一般,自己就能學(xué)習(xí)理解編者使用的漢語含義!
對于編程來說,思維當(dāng)然是最為重要的,我們從開始的面向過程,到面向?qū)ο?,到最新的一些編程思想都有著完整的理論證明,借助順序,判斷和循環(huán)就可以解決所有的問題。但是在漢語編程中,我們并沒有看到什么理論解釋,僅從實例代碼看來,漢編無非是更接近于面向?qū)ο蟮恼Z言,并在其中包含了一些繼承和屬性的概念而已。
就Borland C++、VisuaI c++、Delphi等編程環(huán)境中已經(jīng)成熟開發(fā)運作的IDE(Integerated DevelopmentEnvironment。集成開發(fā)環(huán)境)而言,現(xiàn)有這些主流可視化編程語言在控件拖放、代碼點擊、所見即所得的人機對話窗口上更顯成熟,使得程序開發(fā)過程更加簡單方便。而漢編設(shè)計過程卻沒有提供自己的IDE,雖說現(xiàn)有的漢編編輯器已經(jīng)實現(xiàn)了參數(shù)、代碼點擊輸入,但依舊需要獨立的編譯程序?qū)λM行編譯而生成OBJ文件(目標文件),再用連接程序?qū)BJ文件與庫文件(LIB文件)連接而成為可執(zhí)行的EXE文件;還要對程序進行調(diào)試,整個過程顯得繁瑣復(fù)雜。
再從軟件開發(fā)技術(shù)的發(fā)展歷史來看,歷經(jīng)了算法技術(shù)、結(jié)構(gòu)化軟件技術(shù)、面向?qū)ο蠹夹g(shù)、分布式面向?qū)ο蟆⒓夹g(shù)軟件構(gòu)件技術(shù)幾個階段。編程語言的生命力在于它能夠不斷地適應(yīng)新的開發(fā)技術(shù)特點,與它采用的語種沒有多大關(guān)系,至于利用漢語編程就可實現(xiàn)“數(shù)據(jù)管理程序化,程序設(shè)計數(shù)據(jù)化”、中文CUP可以執(zhí)行中文指令集、“詞與詞可以任意組合,并可以生成新詞”等等的宣傳口號,認真看看我們所學(xué)的教材和理論,就不免覺得謬誤百出了。
編后語
雖說,我們今天正在面臨各種各樣的專業(yè)技術(shù)壁壘,需要我們努力開發(fā)擁有自主知識產(chǎn)權(quán)的技術(shù)項目,但計算機領(lǐng)域發(fā)展了這么久,要想打破這些技術(shù)壟斷,遠遠不是一個所謂漢語編程就能達到的。我們現(xiàn)在的技術(shù)水平真有如此智能化嗎?我們真的具備從內(nèi)核到外圍源碼的自主專利技術(shù)嗎?以我國軟件產(chǎn)業(yè)的現(xiàn)狀來看,漢語編程要達到吸收國外優(yōu)秀編程工具的優(yōu)點。并把漢語編程應(yīng)用到最新的軟件開發(fā)技術(shù)中去還有很多難關(guān),更談不上要在漢語編程中體現(xiàn)漢語語法和邏輯、符合中國人的語言習(xí)慣和思維方式。
所以,我們?nèi)绻娴南朐谶@個領(lǐng)域開發(fā)自主知識產(chǎn)權(quán)的產(chǎn)品和技術(shù),光靠片面地夸大漢語編程的重要性,為了眼前利益不切實際地炒作是不行的,應(yīng)當(dāng)正確認識到國內(nèi)的軟件技術(shù)水平與國外的巨大差距,靜下心來踏踏實實做點事情,做到既能務(wù)實創(chuàng)新。體現(xiàn)自己特有的靈活、方便、優(yōu)雅,又能為提升我國的軟件技術(shù)水平作出自己的貢獻,提出為快捷編程而生的嚴謹?shù)膶I(yè)架構(gòu)。