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