歡迎光臨
每天分享高質量文章

Visual Basic 興衰記

這是一篇暴露年齡的文章。為什麼這麼說?因為現在年輕的程式員可能沒有接觸過當年紅極一時的 Visual Basic。28 年前的 1991 年 4 月,Microsoft 發佈了 Visual Basic 1.0 for Windows,次年 9 月,發佈了 Visual Basic 1.0 for DOS。這在當時引起了很大的轟動,許多專家把 VB 的出現當做是軟體開發史上的一個具有劃時代意義的事件。以現在的眼光來看,VB1.0 版的功能其實非常弱,但它在推出時可是第一個 “可視” 的編程軟體。這使得程式員欣喜之極,都嘗試在 VB 的平臺上進行軟體創作。到了 1998 年夏天,Microsoft 發佈了 VB 6,這是 VB.NET至今仍然無法完全取代的版本。但隨著.NET 的興起,VB 開始走上下坡路。它是如何興起的,又是如何衰落的?讓我們跟著 Matthew MacDonald 的腳步笑看 VB 的風起雲落吧!

28 年過去了,我們終於要目睹世界上最流行的語言之一,Visual Basic ,開始衰落了嗎?

我要坦白一件事,在我成為一名受人尊敬的開發者,使用像 C# 和 Java(以及我們稱之為 JavaScript 的熱門平臺)這樣的現代大括號編程語言之前,我曾經是廣受歡迎,又有些不合時宜的 Visual Basic 的忠實粉絲。

坦白說,我對 Visual Basic 的迷戀是這樣開始的:當我還是個十幾歲的孩童時,我就學會了使用 BASIC 語言編程,但不僅僅是任何 BASIC 語言。我是從 Microsoft 那個古董級的 DOS 操作系統上開創性的 QuickBASIC 環境開始的。至今我仍然記得在藍色背景下用白色文本來編寫代碼的場景。

對於 1998 年的編程來說,QuickBASIC 是不可思議的編程語言。你可以編寫不帶笨拙行號的代碼,在鍵入代碼時能夠實時捕獲語法錯誤,並直接從開發環境中啟動程式,而不需要用命令列的方式來啟動。當你完成代碼編寫後,你還可以用這些軟盤來跟你的朋友分享你的程式:

如今,QuickBASIC 只是對遙遠過去的另一種好奇心。真的是這樣嗎?一個叫做 QB64 的創新專案創造了現代的 QuickBASIC 復刻版。它無需模擬器就可以運行在 Windows、MacOS 和 Linux 上。當你用 QB64 運行一個程式時,它會運用一個很巧妙的手法:首先將你的 BASIC 代碼翻譯成 C++,然後再進行編譯。

經典 VB 和可視化時代

對於古老的,基於文本的計算機系統來說,QuickBASIC 是一項令人印象深刻的壯舉。但當 Microsoft 發佈 Windows,將 PC 用戶帶到了一個由按鍵和點擊組成的圖形世界時,游戲規則發生了變化。在 Microsoft 發佈第一個真正成功的 Windows 3.0 的同時,他們也發佈了 Visual Basic 1.0。

這是個全新的事物。你可以通過在視窗的錶面上繪製按鈕來為程式創建按鈕,就像它是某種藝術畫布一樣。要讓按鈕執行某些操作,你所要做的事就是在設計環境中,雙擊這個按鈕並編寫一段代碼即可。而且,你沒有使用神秘的 C++ 代碼,也沒有使用成堆的類、複雜的記憶體管理以及對 Windows API 的晦澀的呼叫。相反,你就像一個文明人一樣編寫了友好的 VB 代碼。

所有圖形化的魅力讓人印象深刻,但 VB 成功的真正秘訣在於它的實用性。開發人員根本就沒有其他工具可以像 VB 那樣繪製出一個完整的用戶界面並快速編寫代碼。儘管歷史學家喜歡談論 Visual Basic 的可視化部分,但它的“招牌”能力卻與圖形化的小部件無關。相反,VB 是因一個傳奇性的特性而出名,這個特性叫做“編輯並繼續”(edit-and-continue),允許開發人員運行他們的程式,發現並解決問題,然後繼續使用新的代碼。這與人們已知的幾乎所有其他編程環境截然不同,這些環境迫使開發人員重新編譯他們的工作,併在每次更改之後重新開始。

最初的 Visual Basic 蓬勃發展了大約十年。一開始是一個對初學者友好的開發環境,後來發展成了一個足以讓嚴肅的程式員使用的工具。通過 VB 6 的發佈,這是經典 Visual Basic 的最後一個版本,據估計,用 VB 編寫的代碼量是很難用的 C++ 編寫的代碼量的十倍。而且,它們並不僅僅是在模仿玩具應用程式。Visual Basic 通過 ASP(Active Server Pages,動態服務器網頁)進入了公司的辦公室,甚至連到網絡,這是另一種非常流行的技術。現在,你可以創建於 VB 組件交互的 Web 頁面,稱為資料庫,並動態編寫 HTML。所有這些幾乎都是在沒有結構的情況下發生的,除非你自己選擇創建一個結構。這是 Visual Basic 的一個不成文主題,它給了你現在的自由,以後你會後悔的。

經典 VB 的問題

經典 VB 在很多圈子裡聲名狼藉。面向物件的狂熱分子經常抱怨 VB 缺乏對繼承的支持。(其實這是一個奇怪的批評,因為對於不太熟練的開發者來說,繼承常常是搬起石頭砸自己的腳的好方法,而這正是 VB 不需要的那種功能。)事實上,經典的 VB 並非面向物件的“懶漢”。在它的生命周期結束時,它已經支持接口、多型性和類庫,而所有這些都是從 COM 借鑒來的,COM 是組件技術的核心部分,它硬鏈接到 Windows 的每個版本中。

經典 VB 的真正問題在於它太過成功。它極為有效地降低了新程式員的學習障礙,使得幾乎任何人都可以使用 VB 進行編程。粗心大意的新手、無聊的公司員工和暑期學生都紛紛涌進來,解決了在任何其他平臺上更為困難的挑戰,到處都是意大利麵條式的代碼。

換句話說,因為 VB 很容易使用,即使你不是一名訓練有素的程式員,VB 也很容易使用,所以很多沒有受過專業訓練的程式員都在使用 VB。而 VB 卻從來沒有採取任何措施來鼓勵他們糾正自己的壞習慣。

VB.Fred 與 .NET 解決方案

快進到 2002 年,Microsoft 正在做它最擅長的事情,通過引入一種全新的做事方式,顛覆了自己的開發生態系統。

這一次,這個專案是對 COM 的大規模重構,而組件技術是支撐 Windows (以及間接的經典 VB)的基礎。對於一家已經下過幾次這樣的賭註的軟體巨頭來說,這是一個孤註一擲的時刻。

Microsoft 之所以將這次重新啟動命名為 .NET,是因為一些可疑的原因,包括互聯網技術仍然是嶄新的、令人興奮的事實,以及因為 .NET 包含了 Microsoft 一心要推廣的 Web 服務功能。它深受 Java 的影響,並且包含了許多工具,用於與資料庫通信、構建網站、編寫多執行緒程式、通過套接字建立連接的工具,這些幾乎是所有業務開發人員能想象到的用例。

唯一的問題是,為了獲得這些新特性,Microsoft 不得不放棄幾乎所有的經典 VB。

如果你仔細看的話,就會發覺,新版本 VB.NET 看起來還是個老樣子。但它還是有許多大大小小的突破性變化。從大的方面來說,舊的 VB 程式將受困於老舊的編程世界中,而一個極其糟糕的遷移嚮導幾乎沒有改變這一點。從小的方面來說,經典 VB 的程式員必須改變他們計算陣列元素的方式。他們再也不能像普通人那樣從 1 開始了。現在他們必須從 0 開始,就像正式的程式員一樣。

還有一個大的方面:開發人員是眾所周知的抱怨者,而 VB 開發人員尤甚。不久,一群有影響力的 VB 開發人員將 Microsoft 的新編程環境命名為 VB.Fred,並強調無論它是什麼,這種新語言都不是 Visual Basic。

是什麼宣判了 Visual Basic 的命運

你可能會認為,是 .NET 的變化毀壞了 VB 的基礎,並讓 VB 不可避免地走向衰落。但事實並非如此。事實上,儘管 VB.NET 朝著一個新的方向發展,並作出了一些突破性的改變,這些改變使優秀的經典 VB 代碼成為無人能識的代碼,但它卻變得非常受歡迎。那是因為 VB.NET 提供了 VB 開發人員以前從未有過的東西:尊重。

在 .NET 世界中,VB 和 C# 處於平等的地位。每一行 VB 代碼都可以轉換成等效的 C# 代碼行,反之亦然。兩種語言都具有相同的功能,使用相同的組件,並編譯為完全相同的形式,我們稱其為中間語言(intermediate language)。VB 終於擺脫了“醜小鴨綜合症”。

但是,作為另一種受人尊敬的編程語言,它也存在一個問題。人們對 VB 的熱情消失了,不再是許多人的首選語言了。這不是因為 VB 變了,而是因為 C# 變了。

正如 VB 獲得了與 C# 相同的功能一樣,C# 也獲得了與 Visual Basic 相同的便利。例如,.NET 的型別安全和記憶體管理功能意味著 C# 開發人員永遠無須擔心記憶體泄漏問題,就像 VB 開發人員一樣。

換句話說,C# 現在有了保護業餘愛好者、學生和新程式員的“護欄”,而又不放棄它的力量。突然之間,VB 不再是什麼特別的東西了,它只不過是一個有能力的程式員工具包中的另一個工具罷了。

Visual Basic 當前的現狀

今天,Visual Basic 正處於一個奇怪的位置。在專業開發人員中,幾乎沒有人使用 Visual Basic,它甚至都沒有出現在專業開發人員調查中的清單,也沒有出現在 GitHub 儲存庫中。然而,Visual Basic 仍然在那兒,將 Office 的宏連接在一起,為舊的 Access 資料庫和古老的 ASP 網頁提供支持,並吸引 .NET 新手。TIOBE 索引 試圖通過查看搜索引擎的結果來衡量語言的流行程度,它仍然將 VB 排在最受關註的五大編程語言之列。

但這種勢頭似乎已經發生了最後一次變化。2017 年,Microsoft 宣佈,它將開始為 C# 添加新的語言功能,而這些功能可能永遠不會出現在 Visual Basic 中。這一變化並沒有使 VB 回到醜小鴨狀態,但它確實消除了 VB 的一些 .NET 狀態。

事實上,將 VB 邊緣化的趨勢已經存在多年了。嚴肅的開發人員都知道,.NET 的關鍵部分是用 C# 編寫的。他們知道 C# 是演示文稿、書籍、課程和開發者研討會的首選語言。如果你想使用 VB,它並不會影響你構建的應用程式,但它可能會妨礙你和其他開發人員交流的能力。

Visual Basic 本應在教育市場有一個天然的契合點。但即便如此,它仍然是個“敗家子”,像 C# 和 Python 這樣的現代語言現在已經足夠簡單、安全,完全可以作為他們的第一門語言來學習。如果你需要教給小孩更簡單的東西,市場上充斥著像 Scratch 等圖形化編程工具。像 C#、C、JavaScript 這樣的大括號編程語言也有另一種吸引力,因為它們都有自己的語法。因此,學過一種編程語言的人很快就能熟練掌握另一種語言。

隨著 Web 開發的發展,Microsoft 正眼睜睜地看著機會流失。誰不會被和 VB6 一樣容易使用,還可以編譯成 JavaScript,並與 HTML 表單設計器配對的 VB 版本所吸引呢?是的,它並不是構建下一個 Google Maps 的適合工具,但它可以重新喚起 Visual Basic 的吸引力,讓商業開發人員、學生和愛好者創建簡單的在線應用程式,而不必像 JavaScript 那樣笨拙。相反,Microsoft 創造了一個基於 VB 的產品,叫做 LightSwitch,但它隨著 Silverlight 瀏覽器插件的消失而消失。如果 Microsoft 開發出另一款面向大眾的編碼產品,它更有可能是一種低代碼模板驅動的工具,比如 PowerApps。

Visual Basic 以前也不是沒受到過威脅,但這一次感覺不一樣了。作為世界上曾經最流行的編程語言之一的太陽,似乎終於要落下了。即使這是真的,Visual Basic 在幾十年內也不會消失。相反,它將會成為另一種遺留產品,一個被忽視的工具,沒有激情,也沒有未來。不管我們失去了什麼特別的東西,或者,最終讓一條老狗擺脫痛苦,這一切,都由你來決定。

作者介紹:
Matthew MacDonald,技術作家、教師、程式員。著有幾十本圖書,現在教育孩子學習編程和科學。

已同步到看一看
赞(0)

分享創造快樂