如果微軟沒有放棄 Visual Basic,它能否替代 Python?
更新于:2025-03-26 09:13:31

請各位同學抓緊手機和手紙,調整好姿勢,講故事時間到啦!

1990 年的時候,如果你想編寫一個 Windows 程式,最主流的方法是直接使用原始 Win32 API。

等等!我為什麼非要編寫一個 Windows 程式呢?

因為這時候恰好處於一個神奇的過渡時期

------ 微機(Microcomputers)正式在商業世界中佔據主導地位,而 Windows 3.0 取得了巨大的成功,第一年就賣了 400 萬份...... 市場是真的需要各種 Windows 應用程式!

回到開頭的 “用原始 Win32 API” 程式設計!

這通常意味著 WndProc() 外加一大堆 Switch Case,以便 handle 各種 WM_PAINT 消息。這是一種非常糟糕(複雜、繁瑣)的程式設計方式,一點也不友好,特別是對大公司!大公司搞的可都是 enterprise apps(企業級應用),這玩意可不是鬧著玩兒的。而且,因為大公司 “養” 了相當數量的大型機程式師,這些人現在玩不轉了,怎麼辦?

救世主 Visual Basic 來了......

對於 “數百萬擔心微機入侵的大型機 COBOL 程式員來說”,Alan Cooper 回憶道,“Visual Basic 基本上成了他們的安全網” ------ 與 C/C++ 和低級 Win32 API 的陡峭學習曲線不同,Visual Basic 提供了一個更簡單的抽象層。

這個 Alan Cooper 是 Visual Basic 中 “可視化” 那部分的爸爸,也有人說他就是事實意義上的 VB 之父。他跟 Bill Gates 的故事其實挺複雜的,這裡不多聊。

至於那個 “安全網”,就是字面意思上的安全網,工地上都有,防止你失足摔死的......

有了 Visual Basic:

  • 要設計 UI,可以將元件拖放到所見即所得的畫布上;
  • 要向 UI 元素添加行為,選中並從下拉清單中選擇一個事件處理程式即可。

同志們突然又行了!大家都可以快速編寫 Windows 應用程式啦!

“你知道,多年來,人們會來找我,對我說:‘你拯救了我的職業生涯’”

------ Alan Cooper

而對於許多第一次使用電腦的年輕人來說,Visual Basic 也是他們首次接觸的 “程式設計語言”,VB 的易用性讓他們迅速感受到了程式設計的力量和樂趣......

......

至於 Visual Basic 取得成功的另一個重要原因,是 Cooper 團隊做出的一個設計決策

------ 與 Ruby 一樣,Visual Basic 也有一個控件面板,每個控件都作為單獨的 “動態載入 DLL” 實現,這個自定義控件介面叫 VBX,後來發展成了一個火熱的第三方市場。

上面說的那個 Ruby,是 Microsoft 團隊和 Cooper 攜手後給專案起的新代號(原代號是 Tripod),這個 Ruby 跟後來日本人搞的那個 Ruby 完全無關。

至此,Visual Basic 徹底火了,而整個故事中最激動人心的部分也就講完了......

......

接下來,Microsoft 又要開始玩 “非受迫性失誤” 了......

20 世紀 90 年代末,為了應對 Sun Java 的競爭,Microsoft 將重心挪到了名為 .NET 的新開發框架和通用語言運行時(common language runtime)。

他們積極(甚至可以說是玩命)推動開發人員採用 .NET,而 Visual Basic 則被徹底重寫,從一種過程語言轉變為一種更適合新框架的面向物件語言。

Visual Basic 6.0 的後續版本被稱為 VB.NET,於 2002 年發佈,它徹底改變了原產品的精神,並最終為 Visual Basic 敲響了喪鐘。

那這個鐘是怎麼敲的呢?

  • VB.NET 是一種更複雜、功能更全面的程式設計語言;
  • 與 Microsoft 的新玩具 C# 共用許多複雜的概念,什麼線程啦、繼承啦、多態性啦。

當你變的學習曲線很高,學習難度很大,關鍵是...... 你還不提供從 “經典” VB 遷移到 “高級” VB.NET 的可靠路徑(雖然發佈了移植工具,但不靠譜)!!!

那麼,大家都跑了呗,不跟你玩了 ------ 2006 - 2007 年,Visual Basic 系列的開發者使用率下降了 35%。

Microsoft 事實上辜負了開發人員的信任,面對從頭開始使用 VB.NET 或轉向 JavaScript 和 PHP 等新的 Web 原生語言,大多數人選擇了後者。

這裏轉一篇當年的文章,作者是一位 .NET 講師:

幾乎所有的 Visual Basic 6 程式師都對 Visual Basic 6 的表現感到滿意。他們樂於做一名公交車司機:下午 5 點(或者天氣特別好的話是 4 點半)下班回家,而不是工作到午夜;週末能和家人一起玩樂,而不是拖著疲憊的身軀回到辦公室。他們並不為 Visual Basic 6 缺少运算符重载或多态性而感到惋惜,所以也沒怎麼抱怨。

然而,Microsoft 聽到的聲音來自那 3% 的 Visual Basic 6 程式師,他們積極渴望成為戰鬥機飛行員。這些人花時間參加各種會議,在 CompuServe 論壇上發帖提問,回應文章。他們不滿足於僅僅幻想用一枚響尾蛇導彈擊中在交通中突然變道的汽車,而是要求 Microsoft 在他們的 “巴士” 上安裝加力燃燒室、導彈、反制措施和抬頭顯示器。而 Microsoft 也照做了。

......

行了,故事講完了,開始答題!

如果微軟沒有放棄 Visual Basic,而是將其地位放到與 C# 平等......

上面不是說了嘛,Microsoft 在他們的 “巴士” 上安裝加力燃燒室、導彈、反制措施和抬頭顯示器......

所以...... 不好說是誰放棄了誰......

它能否替代 Python?

Python 3 替代 Python 2 的過程,倒是有點兒像 C# 取代 VB.NET 的過程......

微軟將 F# 作為數據科學的語言是妙筆還是敗筆?

當市場採用一項新技術時,使用者會遵循一種模式,我先畫個圖~

  • 綠色部分:早期採用者 ------ 喜歡嘗試新技術的人;
  • 藍色部分:實用主義者 ------ 只關心使用技術來完成某件事的人;
  • 橙色部分:保守主義者 ------ 實用主義者的一種,但更厭惡風險;
  • 灰色部分:老頑固 ------ 主動避免新事物的人。

從 “早期採用者” 轉變為 “實用主義者" 是非常困難的,很多技術都死在這一步了。

因為 “實用主義者" 有個特質,他們通常會觀察其它 “實用主義者",看到大家都用了,我再用!於是容易出現 “一哄而上” 或 “一哄而散” 的情況。

不信你來個 “捫心自問”,想想自己是怎麼從 Windows 7 換到 Windows 10 的,而且今天的你可能仍在頑強的說服自己 ------ 沒必要升 Windows 11~

“實用主義者” 不會根據 “哪種技術更好” 來做出技術決策,他們更看重所謂的 “群體安全”!

F# 好不好,是不是妙筆,其實一點兒都不重要!

在像我這種 “實用主義者” 撞上南牆、切實的感受到痛苦、且真正的無計可施之前,反正我是不會對 F# 感興趣的,因為 C# 真的非常好。

主要是,F# 的推銷物件貌似就是我這種 C# 開發者吧,好像是這樣的,不是嗎?