16年後微軟的“古董”復活!開發者用C#重構經典VB6 IDE,網友:遺留的“屎山”程式碼有救了...

China Soft發表於2024-11-15

http://ide.vb6.pro/

出品 | CSDN(ID:CSDNnews)

C# 發展多年以來,很多程式設計師喜歡用它來編寫各種工具類軟體。近日,向來奉行「Talk is Cheap,Show me the code」的程式設計師又開始了新一輪的“整活”,其中一位名為 Bartosz Korczynski 的軟體工程師心血來潮地用 C# 重建了 16 年前被微軟廢棄的 Visual Basic 6(簡稱 VB6)IDE。

對他個人來說,最初只是出於興趣,想要開發一個“有趣的玩具專案”。但沒想到,專案剛搞定並在 GitHub 上開源(https://github.com/BAndysc/AvaloniaVisualBasic6)之後,便一舉登上了 HN(Hacker News)的頭條,引發了大量開發者的關注,甚至不少人留言,“希望這個被作者視為小玩具的專案能夠持續下去,因為現在的我仍然必須定期與非常大的 VB6 程式碼庫進行互動”。

用 C# 重構 Visual Basic 6

作者 Bartosz Korczynski 在 GitHub 上介紹道,這個專案被其命名為——“Avalonia Visual Basic 6”,採用 MIT 許可證,允許任何人免費使用、修改和分發相關軟體。

只不過需要注意的是,此專案不具有任何商業目的,因為 Visual Basic 名稱、圖示和圖形的所有權利均歸微軟公司所有。

最新復刻的 IDE 是基於 Avalonia 框架開發而成,這是一款開源、跨平臺的 UI 框架,98% 的程式碼也是用 C# 語言編寫的。類似於微軟 WPF(Windows Presentation Foundation),Avalonia 專為 .NET 生態系統設計。與 WPF 不同的是,Avalonia 可以在 Windows、macOS、Linux、iOS、Android 上執行,甚至可以透過 WebAssembly 在瀏覽器裡使用。

這也是當前 Avalonia VB 6 專案能在瀏覽器裡執行的主要原因之一。

在瀏覽器裡開啟這款 IDE(https://bandysc.github.io/AvaloniaVisualBasic6/),還是讓不少人感到驚喜,因為對比微軟當初釋出的 Visual Basic 6,這款重構後的 Avalonia Visual Basic 6 幾乎有著相同的介面。

微軟釋出的 Visual Basic 6

Avalonia Visual Basic 6

功能上也大同小異,Avalonia Visual Basic 6 擁有:

視覺化設計器(Visual Designer):提供了圖形化的拖拽式介面設計器,開發者可以直觀地佈局應用程式介面,無需手寫介面程式碼,類似於傳統 VB6 的介面設計體驗。

支援 VB6 格式的專案儲存與載入:專案可以按照 VB6 相容的格式儲存和載入,確保使用者可以輕鬆地進行專案的儲存和再次編輯。只不過當前瀏覽器中執行時,Avalonia VB 6 無法載入或儲存專案。

執行專案:此 IDE 允許開發者直接在設計環境中執行專案,測試應用程式的基本功能和介面效果,使開發過程更為高效。

支援部分 VB6 語言特性:儘管語言支援還不完全,這個專案提供了一定的 VB6 語言相容性,使得開發者可以使用經典的 VB6 語法編寫應用程式。

這些功能讓該專案不僅可以復刻 VB6 開發體驗,還能夠更好地適應現代跨平臺開發需求。

對此,也有開發者嘗試藉助 Avalonia VB 6 在 Mac 上執行 Visual Basic 6 IDE,其表示,「我們在 Apple Silicon 的 Mac 上編譯並執行了這個專案,看著熟悉的介面重現出來,讓人又感嘆又覺得恐怖。感嘆的是它模仿得真像,幾乎和原版一模一樣。恐怖的是,彷彿看到當年 VB 6 的種種限制:用在大專案時,程式碼容易變成“義大利麵條”式的混亂程式碼。」

藉助 Avalonia VB 6 在 Mac 上執行 Visual Basic 6 IDE 的實現

不知你是否也有這樣的記憶?

專案作者:復現只是為了好玩與懷舊

之所以開發這個專案,Bartosz Korczynski 表示,“如果重現老舊的使用者介面可以算是一種愛好,那這就是我的愛好...開發這個專案純粹就是好玩和懷舊!這是一個玩具專案,沒有其他用途”,但殊不知他的這個愛好同時解決很多人的痛點問題。

回看 Visual Basic 6 (VB6) 的發展,其整個歷程充滿了創新與挑戰。它是微軟在 1998 年推出的一款視覺化程式設計工具,是當時非常流行的開發環境之一。

作為經典 VB 系列的最終版本,VB6 的到來象徵著一種簡單、高效的應用程式開發方式的巔峰。最初,Windows 桌面應用開發要求開發人員具備複雜的 C 或 C++ 程式設計技術,以及對 Windows API 的深入瞭解,而 VB 則徹底改變了這一點。

VB6 擁有圖形使用者介面(GUI)和快速應用開發(RAD)系統。透過簡單的拖放操作,開發者可以快速建立視窗、按鈕、文字框等控制元件,直觀地設計應用介面。同時,這款 IDE 也以簡易的圖形使用者介面和對資料庫的支援(如 ADO 和 DAO)聞名,尤其適合開發商業應用。

正因此,VB6 當時一經發布,便迅速受到開發者青睞,特別是在企業軟體開發領域,被視為易於上手的高效開發工具。

遺憾的是,微軟在 2002 年釋出了 VB.NET 對 VB6 帶來了巨大的衝擊,前者是基於 .NET 框架而非傳統的 Windows API 構建,且語言語法和 VB6 存在顯著差異,導致 VB6 應用程式很難直接遷移到 VB.NET。這一改變使部分開發者感到失望,因為他們需要投入大量精力重寫程式碼。

論及微軟為什麼非要放棄 VB6,而選擇 Visual Basic .NET?

前微軟高階科學家 Daniel Tallentire 早些時候在問答社群 Quora 做過回應,其表示:

“.NET 解決了 VB6 存在的許多底層問題。微軟不想維護太多不同的語言,最終 VB.NET 佔了上風。

我能想到的一些具體問題包括:

DLL / OCX 問題——在部署甚至開發時,DLL 或 OCX 檔案常常出現問題,可能由於 OCX 檔案損壞,或系統上的 Office 安裝出現問題,導致某些功能無法正常工作。

專案檔案中的二進位制元件——表單檔案中包含無法用於原始碼管理的二進位制元件。如果你使用了錯誤版本的 .frx 檔案,必須回退並重新做 UI 更改。

表單、類、物件和單例——這些問題雖然可以解決,但 VB6 的物件導向程式設計(OOP)實現不夠清晰,導致表單和記憶體管理經常出問題。

執行緒處理——VB6 沒有可行的多執行緒支援。”

在這些原因驅使下,微軟愈發專注於 .NET 平臺,VB6 的開發生態逐漸式微,社群也逐步轉向支援更現代的程式語言和框架。最終,微軟在 2008 年 4 月 8 日停止支援 VB6 IDE,將其降級為舊版。微軟 VB 團隊仍然透過其在受支援的 Windows 作業系統上的“It Just Works”程式保持對 VB6 應用程式的相容性。

仍有大量的遺留程式和程式碼存在於現實專案中

時至今日,VB6 已經停用了多年,但不容忽視的是仍有大量遺留應用和忠實使用者在依賴 VB6,且至今 VB6 應用依然存在於一些傳統業務系統中。

Bartosz Korczynski 如今復現了 VB6,也讓人頗為興奮。對此,外媒 Devclass 評價道,「如果 Bartosz Korczynski 或其他人能找到一種辦法,讓 VB6 應用能夠跨平臺執行,或者把它們遷移到 C# 語言中以方便後續的維護和功能擴充套件,市場上可能會有不少人感興趣,因為目前依然有很多公司在使用這些舊應用。」

此外,也有開發者表示:

Bartosz Korczynski 的這種努力或許會為數百個遺留程式碼庫帶來新的活力。

這真是太瘋狂了。我有太多的程式是用 VB6 編寫的。VB6 是我精通的第一批程式語言之一——事實上,我在 20 多年前用 VB6 寫的一些軟體到今天還在我的工作站上執行。不過,VB6 的開發環境(IDE)在現代 Windows 上執行得並不順暢——這個新專案可能為數百個遺留程式碼庫的編輯和編譯帶來更便捷的途徑。

真是酷。我幾乎希望這不只是個玩具專案(不是對專案開發者施加壓力,這只是我個人的願望),因為我仍然需要定期處理一個非常大的 VB6 程式碼庫。幸運的是,我們已經成功停止了新的 VB6 開發(是的,直到一兩年前我們還在用 VB6 開發“新”專案),但我們仍然有很多遺留客戶和程式碼需要維護。

面對開發者的熱情評論,專案作者也對一些常見問題進行了解答:

問:Repo 連結?

答:https: //github.com/BAndysc/AvaloniaVisualBasic6

問:有網頁版連結嗎?

答:https: //bandysc.github.io/AvaloniaVisualBasic6/

問:哪些功能可以用?

答:可以建立窗體、編寫 VB6 程式碼、執行程式、儲存和開啟專案,並生成專案(可以實際生成一個 .exe 檔案!)。

問:為什麼要做這個專案?

答:純粹是為了樂趣和懷舊!這是個玩具專案,沒有其他用途。

問:VB6 程式碼是編譯成原生代碼還是至少 IL(中間語言)?

答:不是,VB6 程式碼是解釋執行的。不過執行時相容 NativeAOT,因此當你“生成專案”時,會得到一個解釋 Visual Basic 6 程式碼的原生 EXE 檔案。

問:是否支援完整的 VB6 語言?

答:完全不支援。只支援一部分 VB6 的功能,但我計劃增加更多的語言特性支援。

問:是跨平臺的嗎?

答:是的!介面是用跨平臺的 Avalonia 做的,所以 Avalonia Visual Basic 6 也支援跨平臺。

問:看起來很有趣,我可以貢獻程式碼嗎?

答:當然可以,歡迎 PR!

問:微軟會起訴你嗎?

答:微軟,請不要這樣 ;___;

參考:

https://www.reddit.com/r/dotnet/comments/1goevsy/comment/lwi00df/

https://devclass.com/2024/11/12/visual-basic-6-recreated-as-a-cross-platform-ide-in-modern-net-just-for-fun/

https://github.com/AvaloniaUI/Avalonia

https://github.com/BAndysc/AvaloniaVisualBasic6/blob/master/README.md

https://www.quora.com/Why-has-Microsoft-abandoned-Visual-Basic-6-in-favour-of-Visual-Basic-NET
————————————————

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

原文連結:https://blog.csdn.net/csdnnews/article/details/143756475

相關文章