聊聊VB的興衰史,以及普通人的編程手札(vb發(fā)展史)
圖片來源@視覺中國
文 | 腦極體
在廣大程序員的世界里,流傳著一個千古難題——什么才是最好的語言?
在這個“BCYY48”(編程語言)天團里,C 、Java、Python、PHP……每個都有不少擁躉pick。而曾經有“首富爸爸”和全球后援會撐腰的VisualBASIC語言,現(xiàn)在卻處在一個非常尷尬的位置。
很少有開發(fā)人員愿意承認,自己曾經是VisualBasic的忠實粉絲,它被看做是玩具語言,更適合那些剛開始學習編程的人,更不可能出現(xiàn)在“全球最大同性交友網站”Github上。
但其實在野外,很多專業(yè)應用程序都是用Visual Basic編寫的,它依然在為Access數據庫和古老的ASP網頁供電。比如可能是美國最大的醫(yī)療軟件開發(fā)商Epic Systems 仍然大量使用 VB 6.0,很多學校也在堅持教授VB課程 。在一份TIOBE公布的2018年編程語言排行榜中,VB的流行指數高居TOP5。
當然,這份榜單之于VB,更像是一種“回光返照”。
盡管有不少程序猿“口嫌體正直”地眷戀著VB,但它其實已經回天乏術,根本不可能在強手如林的新時代里硬核起來。
原因很簡單,學習編程已經和學習英語一樣低齡化了,從幼兒園到大學培訓班,首選總是Python這個距離人工智能最近的編程語言。失去了強大后援團的VB,“退團”幾乎不可避免。
而站在計算機語言的發(fā)展歷程上,回顧這位28歲、曾經是世界上最受歡迎的語言所走過的“花路”,也格外有意思。
VB與它開啟的圖形視覺時代
“VB”只是一個膾炙人口的昵稱,實際上它名字叫Visual,本姓是“Basic”。
1964年,John Kemeny 和 Thomas Kurtz覺得編程太難了,需要回歸本源,所以把自己設計的編程語言叫做BASIC,后來成為計算技術發(fā)展歷史上應用得最為廣泛的語言。而VB因為在氣質上和BASIC很相似(都很簡單易用),而被微軟相中收養(yǎng)了它。1981年,微軟 “親生閨女”Windows3.0“出道”的同時,VB也一起露面了。
“Visual” 則恰如其分地反映了VB得天獨厚的動手能力,那就是開發(fā)圖形用戶界面。開發(fā)人員通過在窗口繪制按鈕來為程序創(chuàng)建按鈕,就像是在畫布上作畫一樣。要讓一個按鈕做一些事情,只需要在設計環(huán)境中雙擊它并編寫一些代碼就可以了。
聽起來似乎沒什么了不起?要理解VB的特別之處,恐怕還要從機器語言的發(fā)展說起。
我們都知道,計算機世界是由數字1和0組成的。CPU 只能執(zhí)行二進制代碼,無論是一部電影、一首歌曲還是一張圖片,最終都是以 0/1 代碼來存儲的。但是,用0/1編寫機器語言很麻煩,即使專業(yè)人士也不好理解。
所以,很快出現(xiàn)了匯編語言,將枯燥抽象的二進制數字指令轉化成英文單詞。
比如說,“add 1, 2;”,意思就是讓計算機完成1 和 2 相加的動作。再通過專門的軟件(編譯器),就可以將這些英文單詞轉化成 0/1 代碼并由計算機執(zhí)行。一代開發(fā)人員的集體記憶,就是在藍色的背景下敲打白色的代碼。
這時候,編程依然是一個與普通人有著“次元壁”的異世界。
而友好的VB代碼讓編程游戲發(fā)生了變化,將開發(fā)這件事進化到了一個按鈕和點擊就能實現(xiàn)的“所見即所得”的圖形世界。
當時,VB有多火呢?這么說吧,對“證多不壓身”的大學生來說,計算機二級幾乎人手一個,其中很多人都會選擇VB,哪怕是毫無基礎的文科生也能輕松理解并用它設計一些小玩意兒。
對于初學者來說,VB是一個非常友好的畫面,隨著能力不斷提升,VB逐漸發(fā)展成了一個對嚴肅的程序員來說足夠強大的工具。據統(tǒng)計,在VB中編寫代碼的次數比C 語言多十倍。VB通過另一種非常流行的技術ASP(ActiveServerPages)進入公司辦公室甚至網絡。
但是,隨著互聯(lián)網業(yè)務的發(fā)展,微軟下定決心要推廣Web服務功能,而這項功能受Java的影響比較大,所以微軟不得不在VB十歲的時候,領回來了一個新的“養(yǎng)女”。VB的粉絲們“一朝回到解放前”,必須和那些官方專業(yè)程序員一樣,從0開始編寫代碼。
2002年的時候,VB不得不主動“轉型”,引入了新的核心.NET Framework,并更名為Visual Basic .NET。在.NET世界中,VB代碼的每一行都可以轉換為等效的C代碼行,反之亦然。盡管做了如許改變,VB始終難逃過氣的命運。
2008年4月,微軟正式宣布停止對經典VB的支持。而國內,NOIP等信息奧賽在2005年就將BASIC語言移出可使用項,少有專業(yè)編程人員會把VB寫進簡歷。浙江省信息技術課程改革方案中,則將信息技術教材編程語言從 VB更換為Python。
有人也許會問,VB到底做錯了什么你要拋棄他?其實,這與諾基亞賣身微軟的故事如出一轍——“我們并沒有做錯什么,但不知為什么,我們輸了。”
VB衰落的三步曲
從 1951 年至今,人們一共發(fā)明了200多種編程語言,并且還在不斷地革新。所以一門語言的興替,也許并不是什么太重要的事情。不過其中也有著不少參考意義。
龐加萊曾說,如果我們想要預見數學的將來,適當的途徑是研究這門科學的歷史和現(xiàn)狀。計算機語言亦然。
那么,與虎視眈眈的C/C 、Java、Python等相比,VB到底欠缺了什么呢?
首先,經典VB的真正問題是它太成功了。
VB的學習曲線實在太平滑,即使不是一個訓練有素的編碼員,也可以無障礙上手。正是因因此,也吸引來了大量的業(yè)余編碼者,粗心的新手、無聊的公司職員、暑期班學生等等,他們到處噴射面條式代碼(spaghetti code),寫出來的程序如同一碗意大利面一樣扭曲和糾結,而VB并沒有辦法去改掉他們的壞習慣,只能眼看著開發(fā)生態(tài)越來越復雜和難以維護。
其次,其他語言也在進化。
嚴肅的開發(fā)者們都知道.NET的關鍵部分是用C語言編寫的, C#等語言正在變得和VB一樣足夠簡單和安全,并在演示、書籍、課程和開發(fā)人員研討會上日益占據主流。市面上也擠滿了針對幼兒和初學者的圖形編程工具,比如Scratch。
既然VB.net和C具有相同的功能,使用相同的組件,并編譯成完全相同的形式,為什么不選擇C呢?突然之間, VB簡單易用的優(yōu)點就不再是什么特別的東西了。
(2018年美國熱門編程語言Top10)
所以,最終令VB走向末路的,還是開發(fā)生態(tài)的萎縮。
VB曾經占據了中學生信息技術教科書很多年,但越來越多的開發(fā)者和高校,開始將入門課程改成了其他計算機語言。比如MIT和UC Berkeley的計算機系就將入門語言改成了Python。一些明星互聯(lián)網公司Youtube、Instagram、Reddit等等,核心業(yè)務也都是基于Python開發(fā)的。
示范效應之下,大量其他行業(yè)的人,自然也會選擇用其他語言進入編程世界。比如我們能遇到會Python的醫(yī)生,學過Scratch的孩子,或者是在開發(fā)社區(qū)輕松獲得開源代碼的新手開發(fā)者。雖然VB依然可以用來構建應用程序,但再探討它,就會與其他開發(fā)人員顯得格格不入。
繁榮了十幾年之后,門庭冷落鞍馬稀的VB,注定成為一個沒有激情和未來的遺留產品。
未來的編程語言會是什么樣?
回顧計算機語言的發(fā)展史會發(fā)現(xiàn), 70年代計算機被用來處理不同類型的事務,于是出現(xiàn)了許多各有特色的語言,比如結構化的Pascal,結合了高級語言與匯編語言特點的C,做邏輯學研究的Prolog……
計算機性能的提升,互聯(lián)網的興起,又催生了PHP、Java、JavaScript、VB、Python、HTML等的出現(xiàn)。后來,更高計算量的元編程、異構編程也被支持了,C#、Swift等開始流行。到了人工智能時代,跨平臺、全能但不專精、擅長處理統(tǒng)計相關問題的Python又成了第一開發(fā)語言。
總體來看,一種編程語言的走紅,就像“流量偶像”也并不是各個業(yè)務能力都很強一樣,側重點各有不同,行業(yè)需求、學習曲線、運行成本等多重因素決定了,程序猿們還要繼續(xù)為誰站C位而掐到頭禿。
當然,這對普通大眾來說都不是事兒。我們關注的,是主流編程語言的更迭都帶來了哪些影響?有幾點是比較值得注意的:
1.低門檻的生產工具。過去,計算機教育一直強調的是“語言一通百通”“重要的是思想”“優(yōu)雅簡潔的代碼”等等,但隨著編程語言越來越簡單易用,成為一種低門檻的生產工具已經是不可阻擋的潮流了。
在MOOC、Coursera、某某AI大學之類的培訓網站上,遍布了用Python識別蘋果的農民、用Python分析蝴蝶種類的生物學家、訓練神經網絡的中學生……防止大眾開發(fā)者的加入而重蹈VB面條式代碼的覆轍,可能需要現(xiàn)在就未雨綢繆。
2.圖形化編程與代碼編程的悖論。圖形化總是對新手最友好的入門方式,能極大地減輕代碼所帶來的挫敗感。筆者剛進入大學時,是從VB開始接觸了計算機編程語言,而后過渡到了C等更加抽象的代碼。兒童編程也是如此,有調查顯示,在使用Scratch(一種圖形編程)幾年后,學生們會更愿意去嘗試代碼編程。
但是,大眾眼中“真正的編程”——代碼編程正在日益低齡化,從程序員圈子到高考內容再到幼兒園教材,Python已經切切實實地實現(xiàn)了從娃娃抓起。對于這種填鴨式的流行趨勢,亞馬遜AWS主任科學家李沐就曾調侃道:我家娃一歲就開始讀paper,現(xiàn)在已經可以熟練敲鍵盤寫mxnet代碼。一家keras4kindergartners的網站也在網站上打出了“如果你愛你的孩子,不要在他們沒學會反向傳播之前就把他們送進小學”的嘲諷廣告。
數十年的發(fā)展已經證明了,我們最需要的編程語言,始終是可以讓人毫不費力地寫出第一版程序的語言,而不是看起來有多么炫酷和特別。
3.高并發(fā)改變了編程邏輯。傳統(tǒng)的編程思維,是在單個CPU上執(zhí)行多個邏輯任務,如今的多核異構計算則是一個邏輯上的任務放在多個計算單元上進行。而且,代碼也變得越來越簡潔,比如用C語言需要1000行代碼的程序,Python可能只需要20行就能完成,性能大大提升。這一方面讓開發(fā)者擁有了更高的自由度,釋放自己的創(chuàng)造力;同時,也對理解任務邏輯、合理分解任務的能力提出了更高的要求。
顯然,這世界并不存在什么“完美”和不朽的編程語言,如果非說有什么共性的話,那么只有“那些內核最小、最干凈的編程語言才會存在于進化的竹竿上?!逼渌麩o論學什么都有可能像鳳梨罐頭一樣過期。
現(xiàn)在回顧起來,VB的興衰正折射著Web時代的余暉,也代表了計算機科學在編程領域上的進步。當專業(yè)程序員手中的“屠龍寶刀”,普通人也可以“點擊就送”,數字時代才算真正揭開帷幕。
更多精彩內容,關注鈦媒體微信號(ID:taimeiti),或者下載鈦媒體App