首個採用中文編寫的作業系統出現了!

2022-03-22 13:01:07
對許多不擅長英語的程式設計萌新來說,乍一看程式碼中各類英文關鍵字 、變數名、函數名等,難免十分頭大,甚至還會對自己能否學好程式設計提出質疑。

如此心境下,他們腦海中往往會冒出一種想法:「要是可以用中文程式設計就好了。」

你還別說,最近真有人落實了這個想法:一位湖南長沙的軟體工程師 Jason.shao 用中文編寫了一個作業系統,並自通道:「火龍作業系統是全宇宙首個採用中文編寫的作業系統」!

7a58311967dcc747582f2f26be26dbd.png

一、自創了甲、乙、丙語言

既然要開發作業系統,程式語言必不可少——為了更好地「砍柴」,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 還在專案介紹中特地展示了幾張火龍作業系統的執行截圖:

400447ee174e9513e634a5351985a83.png

cda86f72fa4b6198a0ebcdb2a10a0f1.png

e6d2bd1ba7e9e11defaebc74137f37a.png

從執行效果來看,火龍作業系統的整體表現可圈可點,那麼接下來需要驗證的就是它是否真的由中文編寫。

隨便點開一個系統中的記憶體管理原始碼:

ffe989354065afb8a9fe877f060c4b6.png

有點不信邪?那就再開啟一個圖層管理程式碼:

61627290b2b67aed35bd77aafac08ae.png

由此可以看出,火龍作業系統的原始碼「畫風」顯然區別於往常見到的其他程式碼,滿屏中文也印證了其「用中文編寫」的特點。

二、「抄襲」風波?

然而,就在我們驚歎於 Jason.shao 真的可以用中文編寫作業系統的時候,專案評論中 @dragon-os 的一條留言卻激起了巨大討論:

這個就是日本人川合秀實《30 天自制作業系統》裡的「紙娃娃作業系統」,所謂的「甲語言」其實就是 asm 組合語言,使用了拙劣的文字替換方式,把諸如 mov 這樣的指令用蹩腳的「移送」來替換,就是換了個名稱罷了。「乙語言」就是 c 語言。那個 z_tools 目錄就是《30 天自制作業系統》原始碼光碟裡的資料夾,太明顯了。

1ca77e839c1c908d277bf72ed8c3d98.png

《30 天自制作業系統》是什麼?簡單來說這是一本從計算機構造、組合語言、C 語言等角度全面解說如何自制作業系統的書籍,旨在幫助開發者從零編寫所有程式碼、30 天即可建立出一個具有視窗系統的 32 位多工作業系統。

而據 @dragon-os 分析,火龍作業系統其實就是這本書裡的「紙娃娃作業系統」,甚至專案中的「z_tools 目錄」也是《30 天自制作業系統》原始碼光碟裡的資料夾,盜用痕跡「太明顯」。

面對負面質疑,專案作者 Jason.shao 直接在評論區回覆道:

「請你仔細閱讀 30 天自制作業系統的開源協定再來吐槽,作者明確說明了程式碼可以隨意修改,修改後的程式碼也不必開源,拿來商用都是可以的,關於本專案之後的程式碼都不在開源!」

不僅如此,Jason.shao 也早在「參考文獻」中,明確指出專案有參照這本書籍:

0dac4478b81d5267049466d97c160b7.png

儘管 Jason.shao 已將事件起因解釋清楚,但仍有部分開發者認為這種行為須註明來源:

@akemimadoka:「請註明基於《30天自制作業系統》的原始碼開發。」

@longware:「這種非 100% 自研,建議作者加個標註。」

不過也有很多人肯定 Jason.shao 勇於嘗試的精神:

@安靜書生:「不可否認,短期內沒有任何意義,但是如果作者堅持下去了,有更多人蔘與進來,可能會引起革命性的變化,支援作者。」

@pcd:「思路還是挺好。 甲語言直接用編譯器批次替換成機器碼,乙語言用編譯器轉換成 C 語言然後用編譯,丙語言直接使用 C# 批次替換編譯。最妙的是這玩意兒竟然真的跑起來了!」

@久永:「無論成敗如何,為行動者點贊,為開拓者喝彩!」

三、中文程式設計是否必要?

在眾多評論中,還有一種中立的聲音:「首先點贊, 但還是不明白用中文的意義何在」。

如文章開頭所說,很多會產生「想用中文程式設計」這一想法的人中,最大的原因就是:英語不好。

那麼不擅長英語是否真的會影響程式設計學習,中文程式設計必要嗎?對於這個問題,答案可能因人而異。

  • 支援中文程式設計

這一觀點可結合「@qwas982 曾請求 C# 團隊開發特製的中文版」這一事件,當時其對於中文程式設計的呼籲引起了諸多人關注。

針對「程式設計中沒有多少英文相關的語法更費力的是背景知識學習」這一觀點,身為多年程式設計師的@吳烜曾反對道:「程式設計仍然有英文語法相關性,需要學習背景知識不意味著不需要進一步降低學習程式語言的門檻。」

美籍華裔程式設計師 Brian 也曾發出感慨:「對我來說,英文的資源簡直就是理所應當,以至於我根本難以想象如果程式碼或檔案用別的語言寫會是什麼模樣。如果不會英文的話,人們就會很容易埋沒在那些起步更早、作出更大貢獻的程式設計師的陰影之中。」

  • 中文程式設計不必要

同時,也有部分開發者認為,想要中文程式設計的人大多是「程式設計門外漢」:以為自己之所以學不好程式設計,是因為不適應英語。

但實際上,換成「漢語」他們也還是不適應。因為他們不適應的不是英語,而是結構化思考和表達中文程式設計看似會降低入門門檻,但不論中文還是英文,複雜的程式設計思維並不會變。

那麼,對於以上觀點,你有什麼看法呢?歡迎大家發表評論進行討論!