VOOZH about

URL: https://read01.com/Ny4KJd7.html

⇱ 用五行代碼開發一個作業系統 - 壹讀


Saturday, Apr 11, 2026

用五行代碼開發一個作業系統

2018/06/15 來源:51軟件測試網

這位開發者已經創建了一個只需要很少量代碼的操作。你不相信麼?看文章你就能夠了解這些信息。

一個模塊化的作業系統只有一項工作:動態加載並初始化已經安裝的模塊。優先級!除了這個簡單功能外,你的作業系統所做的其他,都是作業系統設計中使單片機成為臃腫軟體的系統。

以下5行代碼,就可以跑起來,這是Hyperlambda作業系統的最小代碼量,就可以讓你做到這一點。

以上代碼首先列出 /modules/目錄中的所有文件夾,然後用名字叫startup.hl的程序列出這些文件夾中的文件。這個程序就是一個初始化文件,然後加載列表的文件,接著進行評估和執行這些文件。

這樣允許我們將新的模塊或組件複製到作業系統的/modules/文件夾中,將它放在我的/modules/文件夾中,則作業系統立即擁有這些組件賦予的新功能。平均安裝並啟動我作業系統的啟動時間通常是幾百毫秒。

因為Hyperlambda的核心功能是動態調用功能,通過引用「函數」(實際上是Active Events)作為簡單的字符串。模塊和模塊之間不會創建靜態的依賴的關係,但仍允許我們的所有模塊可以調用其他任何模塊的函數。它還允許我們通過簡單的創建具有相同名稱的函數,使新函數能夠輕鬆替換已經有的函數實現,且不會破壞現在的用法。我甚至可以改變我的「函數」簽名,通常是返回值,以及它們的整體實現,但是不會去破壞現有的組件,這樣就可以實現函數應用的「多態性」,而不需要任何繼承、接口或OOP。

上面的代碼實際上就是我的作業系統。還不相信?請看如下代碼:

👁 Image
...

可以看到,我在當前代碼中加入了三行代碼。這是因為我經常想在其它組件初始化時使用「micro」和「desktop」模塊,以使代碼保持乾淨。不過,我仍然可以刪除或「卸載」這兩個模塊,這不會破壞到作業系統的核心代碼,這相當於function{}式的函數調用。

事實上,我也可以使用相同的代碼來創建Web或桌面級作業系統,這些都可以。理論上說,我可以交換兩個簡單的C#程序集,可以是現有的Hyperlambda代碼創建的WinForms或Xamarin應用程式,因此我們可以為WinForm應用程式使用相同的代碼庫。

雖然如此,我不建議你這樣做。我連結到上面的文件,動態加載並初始化這些模塊。每個模塊實際上從單個角度來看都是無關緊要的。我的一些模塊用來創建Ajax Widget,例如模式窗口,樹視圖控制項,菜單控制項等,其它模塊本身就是整個應用程式和應用程式套件。

要創建自己的模塊只需要建一個文件夾和一個名為「startup.hl」的文件,這樣就可以擴展為自己的作業系統,這與我們以前用來創建庫或COM模塊的方式類似。

以下是我預先安裝的一個「模塊」的截圖,這是一個完整的基於Web的IDE。

為了記錄,我可以通過簡單地創建一個類型為[hyper-ide.widgets.ide]的「小組件」來將我的整個IDE實例化,此時我可以重用整個IDE,就好像它是一個C#「UserControl」。

可以將「模塊」存儲在MySQL中,因為Hyperlambda畢竟只是一種文件格式,它不關心你的存儲位置。此時,你的「加載文件」調用必須與「從資料庫加載」調用進行交換。

但是,作業系統實際上只有5行代碼,準確的說是8行。

想玩一個只包含8行代碼的作業系統嗎?它是開源的,你可以在這裡找到它。

您可能感興趣
免責聲明:本文內容來源于51軟件測試網,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM