聊聊VB的興衰史,以及普通人的編程手札-虎嗅網

2020-12-27 虎嗅APP

在廣大程式設計師的世界裡,流傳著一個千古難題——什麼才是最好的語言?


在這個「BCYY48」(程式語言)天團裡,C+、Java、Python、PHP……每個都有不少擁躉pick。而曾經有「首富爸爸」和全球後援會撐腰的VisualBasic語言,現在卻處在一個非常尷尬的位置。


很少有開發人員願意承認,自己曾經是VisualBasic的忠實粉絲,它被看做是玩具語言,更適合那些剛開始學習編程的人,更不可能出現在「全球最大同性交友網站」Github上。


但其實在野外,很多專業應用程式都是用Visual Basic編寫的,它依然在為Access資料庫和古老的ASP網頁供電。比如可能是美國最大的醫療軟體開發商Epic Systems 仍然大量使用 VB 6.0,很多學校也在堅持教授VB課程 。在一份TIOBE公布的2018年程式語言排行榜中,VB的流行指數高居TOP5。



當然,這份榜單之於VB,更像是一種「迴光返照」。


儘管有不少程序猿「口嫌體正直」地眷戀著VB,但它其實已經回天乏術,根本不可能在強手如林的新時代裡硬核起來。


原因很簡單,學習編程已經和學習英語一樣低齡化了,從幼兒園到大學培訓班,首選總是Python這個距離人工智慧最近的程式語言。失去了強大後援團的VB,「退團」幾乎不可避免。


而站在計算機語言的發展歷程上,回顧這位28歲、曾經是世界上最受歡迎的語言所走過的「花路」,也格外有意思。


VB與它開啟的圖形視覺時代


「VB」只是一個膾炙人口的暱稱,實際上它名字叫Visual,本姓是「Basic」。


1964年,John Kemeny 和 Thomas Kurtz覺得編程太難了,需要回歸本源,所以把自己設計的程式語言叫做BASIC,後來成為計算技術發展歷史上應用得最為廣泛的語言。而VB因為在氣質上和BASIC很相似(都很簡單易用),而被微軟相中收養了它。1991年,微軟 「親生閨女」Windows3.0「出道」的同時,VB也一起露面了。



「Visual」 則恰如其分地反映了VB得天獨厚的動手能力,那就是開發圖形用戶界面。開發人員通過在窗口繪製按鈕來為程序創建按鈕,就像是在畫布上作畫一樣。要讓一個按鈕做一些事情,只需要在設計環境中雙擊它並編寫一些代碼就可以了。


聽起來似乎沒什麼了不起?要理解VB的特別之處,恐怕還要從機器語言的發展說起。


我們都知道,計算機世界是由數字1和0組成的。CPU 只能執行二進位代碼,無論是一部電影、一首歌曲還是一張圖片,最終都是以 0/1 代碼來存儲的。但是,用0/1編寫機器語言很麻煩,即使專業人士也不好理解。


所以,很快出現了彙編語言,將枯燥抽象的二進位數字指令轉化成英文單詞。


比如說,「add 1, 2;」,意思就是讓計算機完成1 和 2 相加的動作。再通過專門的軟體(編譯器),就可以將這些英文單詞轉化成 0/1 代碼並由計算機執行。一代開發人員的集體記憶,就是在藍色的背景下敲打白色的代碼。


這時候,編程依然是一個與普通人有著「次元壁」的異世界。



而友好的VB代碼讓編程遊戲發生了變化,將開發這件事進化到了一個按鈕和點擊就能實現的「所見即所得」的圖形世界。


當時,VB有多火呢?這麼說吧,對「證多不壓身」的大學生來說,計算機二級幾乎人手一個,其中很多人都會選擇VB,哪怕是毫無基礎的文科生也能輕鬆理解並用它設計一些小玩意兒。



對於初學者來說,VB是一個非常友好的畫面,隨著能力不斷提升,VB逐漸發展成了一個對嚴肅的程式設計師來說足夠強大的工具。據統計,在VB中編寫代碼的次數比C++語言多十倍。VB通過另一種非常流行的技術ASP(ActiveServerPages)進入公司辦公室甚至網絡。


但是,隨著網際網路業務的發展,微軟下定決心要推廣Web服務功能,而這項功能受Java的影響比較大,所以微軟不得不在VB十歲的時候,領回來了一個新的「養女」。VB的粉絲們「一朝回到解放前」,必須和那些官方專業程式設計師一樣,從0開始編寫代碼。


2002年的時候,VB不得不主動「轉型」,引入了新的核心.NET Framework,並更名為Visual Basic .NET。在.NET世界中,VB代碼的每一行都可以轉換為等效的C代碼行,反之亦然。儘管做了如許改變,VB始終難逃過氣的命運。


2008年4月,微軟正式宣布停止對經典VB的支持。而國內,NOIP等信息奧賽在2005年就將BASIC語言移出可使用項,少有專業編程人員會把VB寫進簡歷。浙江省信息技術課程改革方案中,則將信息技術教材程式語言從VB更換為Python。


有人也許會問,VB到底做錯了什麼你要拋棄他?其實,這與諾基亞賣身微軟的故事如出一轍——「我們並沒有做錯什麼,但不知為什麼,我們輸了。」


VB衰落的三部曲


從 1951 年至今,人們一共發明了200多種程式語言,並且還在不斷地革新。所以一門語言的興替,也許並不是什麼太重要的事情。不過其中也有著不少參考意義。


龐加萊曾說,如果我們想要預見數學的將來,適當的途徑是研究這門科學的歷史和現狀。計算機語言亦然。


那麼,與虎視眈眈的C/C++、Java、Python等相比,VB到底欠缺了什麼呢?


首先,經典VB的真正問題是它太成功了。


VB的學習曲線實在太平滑,即使不是一個訓練有素的編碼員,也可以無障礙上手。正是因因此,也吸引來了大量的業餘編碼者,粗心的新手、無聊的公司職員、暑期班學生等等,他們到處噴射麵條式代碼(spaghetti code),寫出來的程序如同一碗義大利麵一樣扭曲和糾結,而VB並沒有辦法去改掉他們的壞習慣,只能眼看著開發生態越來越複雜和難以維護。


其次,其他語言也在進化。


嚴肅的開發者們都知道.NET的關鍵部分是用C語言編寫的, C#等語言正在變得和VB一樣足夠簡單和安全,並在演示、書籍、課程和開發人員研討會上日益佔據主流。市面上也擠滿了針對幼兒和初學者的圖形編程工具,比如scratch。


既然VB.net和C具有相同的功能,使用相同的組件,並編譯成完全相同的形式,為什麼不選擇C呢?突然之間, VB簡單易用的優點就不再是什麼特別的東西了。


2018年美國熱門程式語言Top10


所以,最終令VB走向末路的,還是開發生態的萎縮。


VB曾經佔據了中學生信息技術教科書很多年,但越來越多的開發者和高校,開始將入門課程改成了其他計算機語言。比如MIT和UC Berkeley的計算機系就將入門語言改成了Python。一些明星網際網路公司Youtube、Instagram、Reddit等等,核心業務也都是基於Python開發的。


示範效應之下,大量其他行業的人,自然也會選擇用其他語言進入編程世界。比如我們能遇到會Python的醫生,學過Scratch的孩子,或者是在開發社區輕鬆獲得開原始碼的新手開發者。雖然VB依然可以用來構建應用程式,但再探討它,就會與其他開發人員顯得格格不入。


繁榮了十幾年之後,門庭冷落鞍馬稀的VB,註定成為一個沒有激情和未來的遺留產品。


未來的程式語言會是什麼樣?


回顧計算機語言的發展史會發現, 70年代計算機被用來處理不同類型的事務,於是出現了許多各有特色的語言,比如結構化的Pascal,結合了高級語言與彙編語言特點的C,做邏輯學研究的Prolog……


計算機性能的提升,網際網路的興起,又催生了PHP、Java、JavaScript、VB、Python、HTML等的出現。後來,更高計算量的元編程、異構編程也被支持了,C#、Swift等開始流行。到了人工智慧時代,跨平臺、全能但不專精、擅長處理統計相關問題的Python又成了第一開發語言。


總體來看,一種程式語言的走紅,就像「流量偶像」也並不是各個業務能力都很強一樣,側重點各有不同,行業需求、學習曲線、運行成本等多重因素決定了,程序猿們還要繼續為誰站C位而掐到頭禿。



當然,這對普通大眾來說都不是事兒。我們關注的,是主流程式語言的更迭都帶來了哪些影響?有幾點是比較值得注意的:


低門檻的生產工具。過去,計算機教育一直強調的是「語言一通百通」「重要的是思想」「優雅簡潔的代碼」等等,但隨著程式語言越來越簡單易用,成為一種低門檻的生產工具已經是不可阻擋的潮流了。


在MOOC、Coursera、某某AI大學之類的培訓網站上,遍布了用Python識別蘋果的農民、用Python分析蝴蝶種類的生物學家、訓練神經網絡的中學生……防止大眾開發者的加入而重蹈VB麵條式代碼的覆轍,可能需要現在就未雨綢繆。


圖形化編程與代碼編程的悖論。圖形化總是對新手最友好的入門方式,能極大地減輕代碼所帶來的挫敗感。筆者剛進入大學時,是從VB開始接觸了計算機程式語言,而後過渡到了C等更加抽象的代碼。兒童編程也是如此,有調查顯示,在使用Scratch(一種圖形編程)幾年後,學生們會更願意去嘗試代碼編程。


但是,大眾眼中「真正的編程」——代碼編程正在日益低齡化,從程式設計師圈子到高考內容再到幼兒園教材,Python已經切切實實地實現了從娃娃抓起。對於這種填鴨式的流行趨勢,亞馬遜AWS主任科學家李沐就曾調侃道:我家娃一歲就開始讀paper,現在已經可以熟練敲鍵盤寫mxnet代碼。一家keras4kindergartners的網站也在網站上打出了「如果你愛你的孩子,不要在他們沒學會反向傳播之前就把他們送進小學」的嘲諷廣告。


數十年的發展已經證明了,我們最需要的程式語言,始終是可以讓人毫不費力地寫出第一版程序的語言,而不是看起來有多麼炫酷和特別。



高並發改變了編程邏輯。傳統的編程思維,是在單個CPU上執行多個邏輯任務,如今的多核異構計算則是一個邏輯上的任務放在多個計算單元上進行。而且,代碼也變得越來越簡潔,比如用C語言需要1000行代碼的程序,Python可能只需要20行就能完成,性能大大提升。這一方面讓開發者擁有了更高的自由度,釋放自己的創造力;同時,也對理解任務邏輯、合理分解任務的能力提出了更高的要求。


顯然,這世界並不存在什麼「完美」和不朽的程式語言,如果非說有什麼共性的話,那麼只有「那些內核最小、最乾淨的程式語言才會存在於進化的竹竿上。」其他無論學什麼都有可能像鳳梨罐頭一樣過期。

現在回顧起來,VB的興衰正折射著Web時代的餘暉,也代表了計算機科學在編程領域上的進步。當專業程式設計師手中的「屠龍寶刀」,普通人也可以「點擊就送」,數字時代才算真正揭開帷幕。

相關焦點

  • 聊聊VB的興衰史,以及普通人的編程手札
    這時候,編程依然是一個與普通人有著「次元壁」的異世界。而友好的VB代碼讓編程遊戲發生了變化,將開發這件事進化到了一個按鈕和點擊就能實現的「所見即所得」的圖形世界。當時,VB有多火呢?未來的程式語言會是什麼樣?
  • vb程式語言是做什麼用的_VB程式語言有哪些
    最早的程式語言是在電腦發明之後產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的程式語言,而且每年仍有新的程式語言誕生。很多程式語言需要用指令方式說明計算的程序,而有些程式語言則屬於聲明式編程,說明需要的結果,而不說明如何計算。   程式語言的描述一般可以分為語法及語義。
  • 魔獸世界:旅法師手札 - 聊聊SL奧法那些事兒
    作者:NGA-宸宮寫在前面的話:基於當前開放的A測內容,我想聊聊暗影國度關於法師職業設計的一些改動和調整。手札:手札的意思是親筆信,也是希望這種隨筆能作為親筆寫下的禮物送給法師區的各位。關於「手札上的貼條」:在一些可能需要著重備註說的地方,我會貼一個條,希望手札的讀者記得看。
  • 教你快速學會VB編程中的MsgBox函數!
    掌握VB編程,對提高自己的邏輯思維能力,深入學習計算機其他領域知識、提高自身能力都有著很大的幫助。學習VB編程的好處:1.適應資訊時代發展,緊跟時代潮流;2.提高自己的邏輯思維能力以及分析能力;3.方便、高效的解決工作和學習中的難題;4.提高自身的綜合能力,讓自己更加優異;5.技多不壓身,在求職時能夠更勝一籌。
  • VB編程開發--自動售貨機程序的設計
    基本要求 1、 要求使用面向對象和結構化程序設計的編程思路。  2、自動售貨機中有4*4中商品,每種商品一次最多可放置6個,若缺貨則不能購買,可選擇直接退幣或購買其他貨品。  3、用戶在文本框中輸入商品號,確定判斷是否有該商品,然後投幣。若未選擇商品號則不能接受投幣。
  • Codecademy:讓普通人學會編程
    又過了不久,基於她非常基礎的編程技能,她在非洲開了第一所培養程式設計師的學校。在關於Codecademy的一系列故事中,Zach Sims對這個女孩印象最深。她的經歷大體符合他最初創立這個網站的期待——讓任何一個普通人都能夠學會編程,其生活還可能由此改變。
  • VB編程使用FlexGrid控制項動態操作表格
    例如,要把單詞「VB」放到第5行第2列的單元中,可以輸入如下的程序語句:   MSFlexGrid1.TextMatrix(5,2) = "vb"同樣,要把數字3000放到第2行第1列的單元中,可以使用如下的語法:   MSFlexGrid1.TextMatrix(2,1)= 3000在單元中插入圖形
  • 聊聊普通人如何在抖音上賺錢
    晚上看到有生財有術圈友說,生財有術星球分享的賺錢內容太高端,普通人不太容易借鑑,有沒有適合普通人的賺錢方式?什麼樣的人算普通人呢?這樣的人,我理解應該算是一個普通人吧。其實,在我眼裡,這樣的普通人,仍然有很多機會賺到錢。只要你有執行力。不信?試試我分享的這個思路,我儘可能描述的具體點。準備一個微信小號,最好與你常用微信號獨立開,免得你後面不好意思;開始刷抖音,但不要看視頻,視頻內容不重要。
  • 解析王羲之手札
    解析王羲之手札北蘭亭張旭光工作室入室研修班第三次面授
  • vb程序設計(二)
    容器一般指窗體,對於窗體指屏幕④ Size:是控制項的大小,也可用width和height兩個屬性分別表示控制項的寬度和高度⑤ Font:是設置文本的字體、大小、字形等系列屬性⑥ Forecolor:是顏色屬性(正文顏色)    backcolor用來設置或返回控制項的正文以外的顯示區域顏色。⑦ Enable、visible:決定控制項的有效性和可見性,默認值為ture。
  • 少兒編程 | 中小學生全國性競賽活動
    根據教育部公示文件,《教育部辦公廳印發<關於面向中小學生的全國性競賽活動管理辦法(試行)>的通知》(教基廳〔2018〕9號),少兒編程,以及機器人競賽等35項內容也增加進入全國中小學生的全國性競賽活動名單之中。少兒編程,不僅僅是充分響應青少年全方位發展的國家發展方針,同時青少年增加編程,機器人內容,也是按照時代發展的需求和變化。
  • 【太閤技術秀】一起聊聊函數式編程(Functional Programming)
    點擊標題下「碼農的自我修養」快速調戲我們函數式編程,又稱泛函編程,是一種編程範式,它將電腦運算視為數學上的函數計算,並且避免使用程序狀態以及易變對象
  • 重讀《聖羅倫佐手札》
    已經記不得讀過幾遍《聖羅倫佐手札》了。曾經在去墨爾本的長途飛機上,一氣呵成看完第一遍,之後以蝸牛速度展開了曠日持久的重讀。其過程,就像電影迷說的「拉片」一樣,抽段翻看,偶爾會把中、英文版交叉著看,直到一部分關於葡萄種植、釀造的描寫已經融入記憶之中,成為仿佛親歷一般有實感的經驗。
  • 古時候信中字裡行間的書法——手札
    下面小編就讓大家來了解一下,古時候的信——手札。魏晉·李柏《李柏文書》▲手札是古時候信的別稱在古代,手札稱信札、尺牘、書札,即如今人們所說的書信、信件、信函。被稱為尺牘的手札是私人書信,與表、疏、上書、啟、教、狀、奏、議等官樣文章的「公牘」有本質區別。
  • 20種熱門程式語言輸出Hello World,你會幾種?
    此文章主要為大家介紹了20種熱門程式語言輸出Hello World,你會幾種?,具有一定的參考價值,學習覺得挺不錯的,分享給大家。如何使用20種最熱門的程式語言來寫代碼呢? 首先,我們要知道目前最熱門的程式語言們到底是哪幾種? 哪種程式語言最熱門?
  • 張旭光老師王羲之手札解讀
    王羲之手札對於學習書法的重要性是不言而喻的……23日上午張旭光先生為其入室研修班講解王羲之手札                  王羲之墨跡手札保留了原帖風採,與聖教序有很好的銜接,字與字之間有情感關係,有草、行書的銜接,核心體現了內心深處是生命的瀟灑。手札也有碑刻,碑刻對於缺損的部分是一個補充,可對比著看。墨跡手札沒有刻意的、刀刻的方筆,同時能觀察起筆的角度和動作,字數雖然很少,但能看出墨色枯濃。這在聖教中是沒有的,還有很多細線的變化。寫手札主要要解決:一:行、草的搭配問題。
  • Java面向對象編程開發認證考試項目介紹
    2、職業定義java是面向對象編程的語言,面向對象編程有四個特點:抽象,封裝,繼承,多態。面向對象區別於bai以前的面向過程,du像Java、vb、vc都是zhi採用面向dao對象編zhuan程,當然更高級的還有面向接口編shu程。
  • 欣賞 | 王掞舊藏明賢手札
    手札的作者多為明中、晚期風雲人物,亦是「吳門」和「雲間」代表人物。沈周 手札  Lot.1618款識:向者晉謁,草草速歸。不能不與閣下久處,以聆高論,殊為怏怏。茲吳匏庵寄頌府公毀淫祠之作,僕欲吳中士夫因倡而和,以成盛美,以勵薄俗。敬敢拜乞一言,以壓斯卷。伏冀早賜,倖幸。友生沈周再拜。
  • 巴金與友朋的往來手札
    展覽名稱:溫暖的友情 —— 巴金與友朋往來手札展 展覽時間 今年是巴金誕辰115周年,為了紀念他和他同時代人走過的歲月,「溫暖的友情——巴金與友朋往來手札展」全國巡展正在進行,2019年11月25日全國巡展上海站在徐匯藝術館即將啟幕。
  • 【幸福手札第七期】杉木小學 李玲
    芙蓉教育局官方微信特設「幸福手札」專欄,和大家一起分享教育之道。      每周一位校長、老師分享自己治校、教學感悟。可以是與學生間發生的感人的,有所感悟的小事,也可以是創新的專業理念分享。發送「標題+內容+個人照片和些許配圖」word文檔至郵箱:furongjiaoyu@126.com,文檔名格式為「幸福手札+學校+姓名+聯繫方式」。