最近REBOL推出Unicode版本,它對於Unicode的支援非常徹底。身為REBOL alpha團隊內唯一住在東亞CJK(中日韓)語言地區的人,也就由我負責這個版本的測試,當我測試到alias(別名)時,心生一計:利用alias,可以讓REBOL實現「用中文寫程式」。

其實,用中文寫程式並不是什麼新的構想,我小學時就玩過了。大約26年前,我買了生平第一部電腦「小神通」。由於這部電腦的市場定位似乎是教育用途,所以具有不錯的中文介面,一開機就會出現「大家好,我是小神通,現在為你服務……」。更神奇的是,「小神通」居然還可以用中文寫程式,這對於當時小小年紀的我來說,相當具有吸引力。

當時的BASIC語言被稱為「培基語言」,廠商將它的指令全面中文化,所以我們在程式中可以不用寫「DEFINE X = 10」,而是寫「定義 X = 10」(儘管對於一個國小學童來說,「定義」是一個神祕難解的詞彙,但跟英文相比,它終究是熟悉的中文字)。

幾十年來,試圖設計中文編程(或稱漢語編程)的技術者,大有人在,例如易語言、中蟒(中文Python)、中文Perl、中文Forth、中文Logo。大多數的例子是利用Alias、Macro或其他「前處理」技術,將既有編程語言的指令(或關鍵字)中文化;也有少數自創語言者(但似乎創新度不高)。

科技一直在進步,中文編程卻遲遲沒有形成主流,其實是有原因的。早期,中文編程無法成為主流,是因為中文輸入的阻礙。英文指令只需要敲幾個鍵,就可以輸入完畢;輸入中文指令卻還必須看螢幕挑出正確的字才行,所以用中文寫程式並不實際。同樣的程式,改用中文寫要多花好幾倍的時間,誰願意?

即使現在有了自動挑字的輸入法,中文輸入的速度已經大幅提升,但還是比不上英文輸入的速度。更何況用中文編程時,打字必須一直中文英文切換,所以,中文編程還是有其窒礙難行的地方。

除此之外,用中文寫出來的程式,普遍比英文更不容易閱讀。主要原因是中文字的筆畫太多,所以沒辦法像英文的字母符號一樣,可以看一眼就立刻被大腦接收解讀。

如果實務上行不通,或許中文編程可以用在教育方面,讓兒童學習程式設計、訓練邏輯能力。不過,這如果是在20年前,或許還有可行性,但現在可能就不行了。現在臺灣的小學生都已經普遍學英文,區區幾個英文指令(關鍵字),難不倒他們的。反倒是如果要他們輸入中文,遇到的障礙可能會更高。

我於是突發奇想,或許可以在「老人圈子」推廣中文編程呀!因為很多老人不懂英文,用中文會比較容易,而且老人家多動腦筋可以防止老人癡呆症。我很快地發現,我一定是有癡呆症才會想出這樣愚蠢的點子。有哪個想不開的老人家會想寫程式?當然30年後的我,會是個例外。

現今中文編程的價值,似乎只停留在「民族自尊心」的層面,而不是在實用性上。在中國大陸,由於民族意識強烈,利用民族意識推廣中文編程似乎還「有那麼一點市場」(大陸甚至還有所謂的「中文CPU」,這讓我相當難以理解)。

但是臺灣的狀況和大陸比較不一樣,臺灣電腦化、西化得早,而且臺灣一直以來屬於移民性格的社會,用民族意識推廣中文編程在臺灣行不通。別說中文編程,連程式碼中出現任何中文字都要盡量避免。以Java來說,Java允許package名稱、class名稱使用中文。但是package會對應到目錄,class會對應到檔案,如果檔案系統不支援中文,就會造成程式的困擾。Java的識別字(identifier)雖然也能使用中文,但是這可能會造成別人呼叫此識別字時的困擾。

加上現在軟體強調i18n(國際化)與L10n(本土化),為了讓軟體能夠適用在其他族群和文化環境,所以程式中也要盡量把中文字串(其實是任何字串)取出,變成外部檔案,以便以後更替成其他國家的語言。

如果真的需要用中文呈現資訊,最多就是在註解中使用,不過現在國際交流頻繁,你的同事可能是美國人、日本人、歐洲人,當外國人閱讀你的程式時,他看不懂你的中文註解。為了讓註解讓所有人都看得懂,最好還是不要用中文,免得其他人不懂中文,或者當時的環境不能顯示中文,形成阻礙。

中文編程不具有可讀性、可寫性;工程師不肯用、小孩不想用、老人不會用;又妨礙國際交流,到底中文編程有沒有實際的必要呢?除了「提升民族自尊心」之外,我實在想不出其他的意義。或許,「用中文寫程式」,在程式設計史上,自始至終無法成為一個篇章,頂多只是一個註腳吧!

文章寫到這裡,就像是一盆冷水從頭頂上淋下來,於是我打消了設計「中文REBOL編程」的念頭。

作者簡介:
蔡學鏞-技術顧問
清華大學資訊工程碩士,曾任華碩集團軟體工程師、元智大學資訊系講師、美商歐萊禮出版社技術編輯、臺灣微軟特約專欄作家。

熱門新聞

Advertisement