對許多不擅長英文的程式設計萌新來說,乍看程式碼中各類英文關鍵字 、變數名稱、函式名稱等,難免十分頭大,甚至還會對自己能否學好程式設計提出質疑。
如此心境下,他們腦海中往往會冒出一種想法:「如果可以用中文編程就好了。」
你還別說,最近真有人落實了這個想法:一位湖南長沙的軟體工程師 Jason.shao 用中文編寫了一個作業系統,並自信地說:「火龍作業系統是全宇宙首個採用中文編寫的作業系統」!
一、自創了甲、乙、丙語言
既然要開發作業系統,程式語言必必不可少——為了更好地“砍柴”,Jason.shao 自然要先“磨刀”,為此他創建了三種編程語言,取名還透著一分隨性:
#甲語言:一門對機器碼助記語言,讓人更容易理解的語言,發明目的是為了開發作業系統。
乙語言:一門對甲語言進行結構化過程化的語言,發明目的是為了提高開發效率。
丙語言:一門物件導向的高階語言,可以理解為把任何東西看做是一個對象,這個物件應該有什麼樣的屬性,物件導向語言更容易用電腦去描繪這個世界。
「刀」磨好了之後,Jason.shao 便開始設計其「全宇宙首個採用中文寫的作業系統」。
根據專案介紹,火龍作業系統使用其自創的甲語言和乙語言開發,支援64 位元多核心多任務圖形化、分頁式記憶體管理,還擁有Windows 11 介面風格,支援x86_64、ARMv8 (僅QEMU 測試)架構。
同時,火龍作業系統具備一系列基礎功能,甚至還在向區塊鏈、元宇宙方向進發(第14、15條):
#1.中文顯示。
2.圖片顯示。
3.文本閱讀。
4.支援32位元真色彩,最高2560*1080解析度。
5.實作300個常用win api,支援部分exe程式。
6.全新檔案系統。
7.支持USB。
8.支援sb16、ac97、es1370、es1371、hda等音效卡。
9.支援Ne2000、PCnet、intel 82545EM、intel 82574L、intel 82579LM等網路卡。
10.支援實體機Tiger Lake核顯,Vmeare svga Ⅱ虛擬顯示卡。
11.紅白機遊戲。
12.自舉編譯。
13.史丹佛兔。
14.區塊鏈元宇宙(正在進行中)。
15.元宇宙之鏡像世界(正在進行中)。
光說無用,Jason.shao 也在專案介紹中特地展示了幾張火龍作業系統的運行截圖:
從運行效果來看,火龍作業系統的整體表現可圈可點,那麼接下來需要驗證的就是它是否真的由中文編寫。
隨便點開一個系統中的記憶體管理原始碼:
#有點不信邪?那就再開啟一個圖層管理程式碼:
由此可以看出,火龍作業系統的原始碼「畫風」顯然有別於往常見到的其他程式碼,滿屏中文也印證了其「用中文寫」的特色。
二、「抄襲」風波?
然而,就在我們驚嘆於Jason.shao 真的可以用中文寫作業系統的時候,專案評論中@dragon-os 的一條留言卻激起了巨大討論:
這個就是日本人川合秀實《30 天自製操作系統》裡的“紙娃娃操作系統”,所謂的“甲語言”其實就是asm 彙編語言,使用了拙劣的文本替換方式,把諸如mov 這樣的指令用蹩腳的「移送」來替換,就是換了個名稱罷了。 「乙語言」就是 c 語言。那個 z_tools 目錄就是《30 天自製作業系統》原始碼光碟裡的資料夾,太明顯了。
《30 天自製作業系統》是什麼?簡單來說這是一本從電腦構造、彙編語言、C 語言等角度全面解說如何自製作業系統的書籍,旨在幫助開發者從零編寫所有程式碼、30 天即可創建出一個具有視窗系統的32位元多任務作業系統。
而據@dragon-os 分析,火龍操作系統其實就是這本書裡的“紙娃娃操作系統”,甚至項目中的“z_tools 目錄”也是《30 天自製操作系統》源碼光盤裡的文件夾,盜用痕跡「太明顯」。
面對負面質疑,專案作者Jason.shao 直接在留言區回覆:
「請你仔細閱讀30 天自製作業系統的開源協定再來吐槽,作者明確說明了程式碼可以隨意修改,修改後的程式碼也不必開源,拿來商用都是可以的,關於本專案之後的程式碼都不在開源!」
不僅如此,Jason.shao 也早在“參考文獻”中,明確指出專案有引用這本書:
儘管Jason.shao 已將事件起因解釋清楚,但仍有部分開發者認為這種行為須註明來源:
@akemimadoka:「請註明基於《30天自製作業系統》的原始碼開發。」
@longware:「這種非100% 自研,建議作者加個標註。」
不過也有很多人肯定 Jason.shao 勇於嘗試的精神:
@安靜書生:「不可否認,短期內沒有任何意義,但是如果作者堅持下去了,有更多人參與進來,可能會引起革命性的變化,支持作者。」
@pcd:「思路還是挺好。 甲語言直接用編譯器批量替換成機器碼,乙語言用編譯器轉換成 C 語言然後用編譯,丙語言直接使用C# 批次替換編譯。最妙的是這玩意兒竟然真的跑起來了!」
#@久永:「無論成敗如何,為行動者點贊,為開拓者喝采!」
三、中文編程是否必要?
在眾多評論中,還有一種中立的聲音:「先點贊, 但還是不明白用中文的意義何在」。
如文章開頭所說,很多會產生「想用中文程式設計」這個想法的人中,最大的原因就是:英文不好。
那麼不擅長英文是否真的會影響程式設計學習,中文程式設計必要嗎?對於這個問題,答案可能因人而異。
支援中文程式設計
此觀點可結合「@qwas982 曾經請求C# 團隊開發特製的中文版「這一事件,當時其對於中文程式設計的呼籲引起了許多人關注。
針對「程式設計中沒有多少英文相關的文法更費力的是背景知識學習」這一觀點,身為多年程式設計師的@吳烜曾反對道:「程式設計仍有英文文法相關性,需要學習背景知識並不意味著不需要進一步降低學習程式語言的門檻。」
美籍華裔程式設計師Brian 也曾發出感慨:「對我來說,英文的資源簡直就是理所當然,以至於我根本難以想像如果程式碼或文件用別的語言寫會是什麼模樣。如果不會英文的話,人們就會很容易埋沒在那些起步更早、作出更大貢獻的程式設計師的陰影之中。」
中文程式設計不必要
#同時,也有部分開發者認為,想要中文程式設計的人大多是“程式設計門外漢」:以為自己之所以學不好編程,是因為不適應英文。
但實際上,換成「漢語」他們也還是不適應。因為他們不適應的不是英語,而是結構化思考和表達。 中文程式設計看似會降低入門門檻,但不論中文還是英文,複雜的程式設計思維並不會變。
那麼,對於以上觀點,你有什麼看法呢?歡迎大家發表評論進行討論!