28年過去了,世界上最流行的語言之一Visual Basic終于要衰落了嗎?
作者 | Matthew MacDonald
譯者 | 譚開朗,責(zé)編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文:
我要坦白一件事:在我成為一名使用C#、Java、以及JavaScript等現(xiàn)代編程語言的受人尊敬的開發(fā)者之前,我曾是大受歡迎又有些不合時宜的Visual Basic的忠實粉絲。
坦白說來,我對Visual Basic的癡迷是這樣開始的:在我的孩童時期,我就學(xué)會了使用BASIC語言編程。我是從Microsoft那個古董級的DOS操作系統(tǒng)上,通過極具創(chuàng)新性的QuickBASIC環(huán)境開始的。直至今日,我仍記得在櫻桃藍(lán)的背景下用白色文本來編寫代碼的場景。
在1988年,QuickBASIC是一種不可思議的編程語言。你可以編寫不帶笨拙行號的代碼,在鍵入代碼時能實時捕獲語法錯誤,并支持直接從開發(fā)環(huán)境中啟動程序,而無需通過命令行的方式來啟動。當(dāng)你完成代碼編寫后,你還可以通過這些軟盤把程序分享給好友:
現(xiàn)如今,QuickBASIC僅僅是對遙遠(yuǎn)過去探索的另一種存在。真的是這樣嗎?一個名為QB64的創(chuàng)新項目創(chuàng)造了現(xiàn)代的QuickBASIC的復(fù)刻版。它無需模擬器就可以在Windows、MacOS和Linux系統(tǒng)上運行。當(dāng)你用QB64運行一個程序時,它有一個很巧妙的方法——先將BASIC代碼編譯成C++再進(jìn)行下一步編譯。
經(jīng)典VB和可視化時代
對于傳統(tǒng)基于文本的計算機(jī)系統(tǒng)來說,QuickBASIC是一項令人難忘的壯舉。但當(dāng)Microsoft發(fā)布Windows,將PC用戶引領(lǐng)到一個由按鍵和點擊組成的圖形世界時,游戲規(guī)則發(fā)生了改變。在Microsoft發(fā)布Window 3.0——真正成功的第一版本——與此同時,他們也發(fā)布了Visual Basic 1.0。
這是個全新的事物。你可以通過在窗口界面繪制按鈕來為程序創(chuàng)建按鈕,就像某種藝術(shù)畫布一樣。要讓按鈕執(zhí)行某些操作,你要做的就是在設(shè)計環(huán)境中進(jìn)行編碼,然后雙擊這個按鈕即可。你沒有使用復(fù)雜的C++代碼,也沒有使用成堆的類、復(fù)雜的內(nèi)存管理以及沒有對晦澀難懂的Windows API的調(diào)用。與之相反的,你就像是一個文明人,編寫了一目了然的VB代碼。
所有的這些圖形化固然極具吸引力,但VB成功的真正秘訣在于它的實用性。開發(fā)人員找不到像VB這樣能繪制出一個完整的用戶界面并實現(xiàn)快速編碼的工具。盡管歷史學(xué)家們喜歡高談闊論Visual Basic的可視化,但它的“招牌”能力卻與圖形化無關(guān)。相反,VB因一個傳奇的特性“編輯并繼續(xù)”而出名,它支持開發(fā)人員運行程序、發(fā)現(xiàn)并解決問題以及繼續(xù)使用最新代碼。這與眾所周知的、幾乎所有的其他編程環(huán)境截然不同,這些環(huán)境需要開發(fā)人員重新編譯,并在每次更改后重新開始。
Visual Basic蓬勃發(fā)展了近十年。從一開始的適用于初學(xué)者的開發(fā)環(huán)境,后來發(fā)展成給程序員使用的專業(yè)工具。隨著VB 6的發(fā)布(這是經(jīng)典Visual Basic的最后一個版本),據(jù)估計,用VB編寫的代碼量是C++的十倍。Visual Basic通過ASP(Active Server Pages,動態(tài)服務(wù)器頁面)進(jìn)入公司的辦公室甚至連到網(wǎng)絡(luò),這是另一種非常流行的技術(shù)?,F(xiàn)在,你可以創(chuàng)建與VB組件交互的Web網(wǎng)頁,稱之為數(shù)據(jù)庫,并可以動態(tài)編寫HTML。
所有的這些幾乎都是在沒有結(jié)構(gòu)的基礎(chǔ)上發(fā)生的,除非你自己創(chuàng)建一個結(jié)構(gòu)。這是Visual Basic的一個不成文主題,它讓你此刻自由,但往后你可能會后悔的。
經(jīng)典VB的問題
VB在很多領(lǐng)域里聲名狼藉。
對于面向?qū)ο螅琕B不支持繼承。這是一個令人匪夷所思的爭議,因為對于初級開發(fā)者來說,使用繼承常常是搬起石頭砸自己的腳,而這正是VB所不需要的功能。實際上,經(jīng)典VB并非完全不支持面向?qū)ο?。在完成其生命周期時,它已經(jīng)支持眾多的接口、多態(tài)性和類庫,所有這些都是從COM借鑒來的,COM是組件技術(shù)的核心,它在Windows的任一版本中都是必不可少的。
經(jīng)典VB的真正問題在于它太過成功。它極為有效地降低了初級程序員的學(xué)習(xí)難度,使得幾乎所有人都可以通過VB來進(jìn)行編程。粗心大意的新手、一成不變的公司職員和暑期學(xué)生都紛紛加入進(jìn)來,解決了在其他任何平臺上更為困難的問題,到處都是機(jī)械式的代碼。
換言之,即使你不是一名訓(xùn)練有素的程序員也可以輕易上手VB,因為VB太好用了,所以都是新手在用。而VB也從來沒有采取措施來鼓勵程序員糾正不良的開發(fā)習(xí)慣。
VB.Fred與.Net解決方案
我們快進(jìn)到2002年,此時的Microsoft正在做它最擅長的事——顛覆自己的開發(fā)生態(tài)系統(tǒng),引入全新的工作模式。
這一次,這個項目是對COM的大規(guī)模重構(gòu),而組件技術(shù)是支撐Windows(間接的經(jīng)典VB)的基礎(chǔ)。對于一家已經(jīng)下過幾次賭注的軟件巨頭來說,這是孤注一擲的時刻。
Microsoft之所以將重新啟動命名為.NET是因為一些不確定因素,其中包括互聯(lián)網(wǎng)技術(shù)仍然是令人耳目一新的,以及.NET包含了 Microsoft一心要推廣的Web服務(wù)功能。它深受Java的影響,并且包含了許多用于與數(shù)據(jù)庫通信、構(gòu)建網(wǎng)站、編寫多線程程序、通過套接字建立連接的工具——而這些幾乎是所有業(yè)務(wù)開發(fā)人員能想象到的用例。
唯一的問題是,為了獲得這些新特性,Microsoft不得不放棄幾乎所有的經(jīng)典VB。
如果你仔細(xì)觀察的話,就會發(fā)覺新版本的VB.NET看起來還是老樣子,但它還是有許多大大小小的突破性變化。從大的方面來說:舊的VB程序受困于老舊的編程世界中,而一個極其糟糕的遷移向?qū)缀醪荒芨淖冞@一點。從小的方面來說:經(jīng)典VB的程序員必須改變他們計算數(shù)組元素的方式。他們再也不能像常規(guī)那樣從1開始計數(shù),現(xiàn)在他們必須從0開始,就像正規(guī)的程序員一樣。
還有一個大的方面:“編輯并繼續(xù)”的特性已不復(fù)存在。
開發(fā)人員喜歡吐槽已不是新鮮事了,而VB開發(fā)人員尤甚。不久后,一群有影響力的VB開發(fā)人員將Microsoft的新編程環(huán)境命名為 VB.Fred,并強(qiáng)調(diào)無論它是什么,這種新語言都不是Visual Basic。
是什么宣判了Visual Basic的命運?
你可能會認(rèn)為,是.NET的變化打破了VB的基礎(chǔ),并讓VB不可避免地走向衰落。但事實并非如此。
事實上,盡管VB.NET朝著一個新的方向發(fā)展并作出了一些突破性的改變,這使得優(yōu)秀的經(jīng)典VB代碼成為無人能識的代碼,但它卻變得非常受歡迎。那是因為VB.NET提供了VB開發(fā)人員以前從未有過的東西——尊重。
在.NET世界中,VB和C#處于平等的地位。每一行VB代碼都可以轉(zhuǎn)換成等效的C#代碼行,反之亦然。兩種語言都具有相同的功能,使用相同的組件,并編譯為完全相同的形式(稱其為中間語言)。VB終于擺脫了“丑小鴨綜合癥”。
但是,作為另一種受人尊敬的編程語言也存在一個問題。人們對VB的熱情消失了,它不再是大家的首選語言了。這不是因為VB變了,而是因為C#變了。
正如VB獲得了與C#相同的功能一樣,C#也與Visual Basic一樣易于上手。例如,.NET的類型安全和內(nèi)存管理功能意味著C#開發(fā)人員永遠(yuǎn)無須擔(dān)心內(nèi)存泄漏問題,這和VB開發(fā)人員一樣。
換句話說,C#現(xiàn)在有了保護(hù)業(yè)余愛好者、學(xué)生和初級程序員的“護(hù)欄”,而又不放棄它的功能。突然之間,VB不再是什么特別的稀罕物了,它只不過是程序員工具包中的又一個工具罷了。
Visual Basic 當(dāng)前的現(xiàn)狀
如今,Visual Basic正處于一個尷尬的境地。在專業(yè)開發(fā)人員中,幾乎沒有人使用Visual Basic,它甚至都沒有出現(xiàn)在專業(yè)開發(fā)人員調(diào)查中的清單,也沒有出現(xiàn)在GitHub存儲庫中。然而,Visual Basic仍然存在,它將Office的宏連接在一起,給舊的Access數(shù)據(jù)庫和古老的ASP網(wǎng)頁提供支持,并吸引著.NET新手。“TIOBE 索引”試圖通過查看搜索引擎的結(jié)果來衡量語言的流行程度,發(fā)現(xiàn)VB仍然排在最受關(guān)注的五大編程語言之列。
但這種勢頭似乎已經(jīng)發(fā)生了最后一次轉(zhuǎn)變。2017 年,Microsoft宣布,它將開始為C#添加新的語言功能,而這些功能可能永遠(yuǎn)不會出現(xiàn)在Visual Basic中。這一變化并沒有使VB回到丑小鴨狀態(tài),但它確實消除了VB的一些.NET狀態(tài)。
事實上,將VB邊緣化的趨勢已經(jīng)沿存多年了。專業(yè)的開發(fā)人員都知道.NET的關(guān)鍵部分是用C#編寫的,他們知道C#是演示文稿、書籍、課程和開發(fā)者研討會的首選語言。如果你想使用VB,它并不會影響你構(gòu)建的應(yīng)用程序,但它可能會妨礙你和其他開發(fā)人員進(jìn)行交流。
Visual Basic本應(yīng)在教育市場有一個天然的契合點。但即便如此,它仍然是個“敗家子”,像C#和Python這樣的現(xiàn)代語言已經(jīng)足夠簡單、安全,完全可以作為他們的第一門語言來學(xué)習(xí)。如果你需要教給小孩更簡單的東西,市場上到處都是像Scratch等圖形化的編程工具。像C#、C、JavaScript這樣的大括號編程語言也有另一種吸引力,因為它們之間存在著相通的語法。因此,學(xué)過一種編程語言的人很快就能熟練掌握另一種語言。
隨著Web開發(fā)的發(fā)展,Microsoft正眼睜睜地看著機(jī)會流失。這樣的VB版本:和VB6一樣容易使用,可以編譯成JavaScript并與HTML表單進(jìn)行設(shè)計器配對,誰能不被它所吸引呢?是的,它并不是構(gòu)建下一個Google Maps的最適合工具,但它可以重新喚起Visual Basic的吸引力,讓商業(yè)開發(fā)人員、學(xué)生和愛好者創(chuàng)建簡單的在線應(yīng)用程序,而不必像JavaScript那樣笨拙。相反,Microsoft創(chuàng)造了一個基于VB的產(chǎn)品,叫做LightSwitch,但它隨著Silverlight瀏覽器插件的消失而消失。如果Microsoft開發(fā)出另一款面向大眾的編碼產(chǎn)品,它更有可能是一種低代碼模板驅(qū)動的工具,比如PowerApps。
Visual Basic以前也不是沒受到過威脅,但這一次感覺不一樣了。作為世界上曾經(jīng)最流行的編程語言之一,Visual Basic似乎終于要落幕了。即使這是真的,Visual Basic在近幾十年內(nèi)也不會消失。相反,它將會成為另一種遺留產(chǎn)品,一個被忽視的沒有激情也沒有未來的工具。不管我們失去了什么特別的事物——或者最終就像幫一條茍延殘喘的老狗擺脫痛苦一樣——這一切都由你來決定。
原文:https://medium.com/young-coder/the-rise-and-fall-of-visual-basic-f422252349a6
作者:Matthew MacDonald,技術(shù)作家、教師、程序員。著有幾十本圖書,現(xiàn)在從事編程和科學(xué)教育。
聯(lián)系客服