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