前言
光陰似箭,2021也在各種爭吵中落下帷幕,開通自媒體賬號也已有300天,這期間有落寞,也有驚喜。落寞的是,VB家族的確已日薄西山,從大家的反饋中亦可窺見勢微之一二。驚喜的是,在業餘程式設計群體中,VB/VBA/VBS仍然是他們的最愛。業餘程式設計,要想產生更有價值的成果,專業概念(學習)是繞不過的。但在極為有限的投入下(時間、精力、意願),如何平衡簡單粗暴與精細專深之間的矛盾?
VB家族從誕生之日起,就鐫刻著計算機程式設計教育的基因。很多人只看到了VB作為視覺化程式設計的先驅,曾經紅極一時,卻看不到其真正的易用性和低門檻,在於骨子裡的程式設計啟蒙教育理念。天下程式設計工具,多如牛毛,唯VB(BASIC)是為教育而生。所以,VB系列極易上手。但成也蕭何敗也蕭何,VB家族的勢微,也同樣與其基因有關。
在BASIC和VB的時代,計算機程式設計尚是一野荒地,程式設計是使用計算機的必經之路。但隨著作業系統的崛起和完善,隨著現代軟體業的繁榮,程式設計已經發展成為一個令人矚目的職業。人們使用計算機(PC、智慧手機及其他終端裝置),完全憑藉一些觀感就可上車,甚至橫行霸道。程式設計作為一個專業,無論是教育還是應用,都已發展成為一個極為成熟的產業。
在一個極細分工的現代社會里,需要的是專業的人做專業的事。為非專業的人提供非專業的程式設計工具,邏輯上已發生了翻天覆地的變化。它不再需要像若干年前那樣直面程式碼,取而代之的是AI輔佐下的各種輕程式碼或奔自然語言程式設計,本質上是如何使用存量程式碼庫的應用問題。所以,輪子封裝性不夠的VB家族,敗下陣來也在情理之中。
AI究竟會將人類帶向何處?就目前而言還看不出端倪,至少在很長一段時間裡,AI還是沒有辦法取代人類的主觀能動性。VB/VBA這種直面程式碼的業餘方式,仍然是很多人最穩妥的選擇。所以BtOfficer將VB家族作為首推分享板塊,具體理由已在過往文章中闡述過。本著為廣大非職業IT普及適用的IT技術框架,本文將過往文章(200多篇)分類整理於此(『《藍色》』為連結樣式,可點選查閱),以便各位取閱,為後續深入學習打下信心、概念方面的基礎。
一、定位篇
1、是什麼促使BtOfficer要分享IT技術?
儘管有簡單易用的Python和C#後來居上,但他們的概念體系仍然是建立在專業者的角度。純現代意義的初學者語言,除了少兒程式設計外,幾乎不再有生存的土壤。造成這一結果的根本原因,在於專業編碼的巨大存量。很多人,包括專業編碼者們或許都堅定地認為,未來很長一段時間,傳統碼手的地位都不可動搖。
但事實並非如此(《AI寫程式碼,來得讓人猝不及防!》《程式設計師是怎麼記住許許多多的語法的?》可見一斑),在資料量尚未積累得足夠龐大之前,憑經驗誰也不知道還有哪些關係尚未被人類發現。尿不溼與啤酒的故事,就是資料的規模化效應之一。世間萬物之間,並非看得見的才叫因果,很多看不見的往往成為神論。然而,人類已經發現了通往神秘之門的鑰匙。
一個個小小的人,以匹夫之勇在地表,舉不足百斤,臥不過三尺,走不及風水。但聚眾之力,可移山改川,可星辰大海,在廣袤的地表和太空遍佈文明的痕跡。人類的光芒,閃耀在遙遙太空之中。人類的觸手正如藤蔓,一個錨點一個錨點地快速向前。集眾之智乃大智,這便是那把鑰匙。
網際網路AI便是集眾之智,即便矽基晶片不能真正地成為人工智慧的棲身之所,攫取眾人之智,已足以讓其變得強大無比。然而,這是人類整體層面上的某種進化,對於個體而言或許很難避免被“壓榨”的過程。如何更全面、更客觀地看待和適應自身的處境?或許《互聯的圍城,已春暖花開,我卻心向羅盤荒野》可以告訴你。
該文首先,從AI的概念講起,因為AI與網際網路的合一,是二者在當前技術框架下,必然的進化方向,而AI正是關乎進化的關鍵。其次,講AI與網際網路的現實、進化,我等是如何自陷,又如何自救。摘自該文一小段的《大資料能可怕到什麼程度?》獲得了近40萬閱讀和近1000讚的成績,但更全面的文章卻僅有100閱讀和3贊。儘管數字世界裡(包括以後的元宇宙),跨越邊界成為特權,從而重塑傳統邊界的定義,但並不妨礙我們建設和守好現有的傳統邊界。因為二者並非『不是你死便我亡』的互斥關係。
眾智與小智之間,應當各有各的生存空間,應當互惠互利,相互成就,而非一廂情願。小智不能濫竽充數,坐享眾智之便。眾智之上的AI也不能恃強凌弱,奴役個體。這就是為什麼BtOfficer要分享IT技術給廣大非IT人員的原因所在。
2、為什麼鼓勵非IT適當掌握程式設計技能?
誠如華為任正非談公司人才體系所說,作為管理者,你不能要求每個員工都成為奮鬥者。有的員工就想領點工資按時上下班,你得容忍和尊重這樣的員工。對於程式設計而言,並不是每個非IT都有必要來學,和願意來學。即便學了的,也不是每個人都願意更精進,得尊重那些得過且過的存在。
所謂有錢難買我願意,即便互聯網裡高牆林立,即便智慧手機上的APP都在覬覦個人隱私,能架住不用?如何平衡個體人的發展與人類整體發展之間的矛盾,也不是每個人必須要去思考和應對的。所以,明知山有虎,偏向虎山行的都是少數派,畢竟佛度有緣人嘛。任何一位奮鬥者所收穫的,也絕非普通人所能想象的。不一樣的風景,得有不一樣的位置去觀察。
在《明比閱歷淺,暗拼體力衰,指下講武德,碼上笑春風》一文中,詳細地分析了非IT人士是否需要掌握程式設計技能,掌握到何種程度,入門原則,入門工具的挑選原則,為何挑選VB系作為入門工具,如何開啟編碼武德之旅。
BtOfficer的經驗證明,當1個專業人士掌握了地球上最通用的計算工具之後,可以將專業優勢進行數倍的放大。無論是工作效率,學習效率,還是在整合人際關係上,均能受益不少。這是在網際網路包圍下的個體,能夠獲得的為數不多的神器之一。
3、為什麼偏偏首推VB/VBA/VBS作為業餘程式設計的入門工具?
有人說,VB(包括BASIC)當年成為入門的不二法門,是因為沒得選,而現今有更好的選擇了。這句話,既正確又不正確。它得考慮受眾是誰?如果一個人有意願,也有時間,為什麼要學VB呢?成為編碼專業人士的渠道千千萬,但最後都離不開基礎,與其在捷徑中胡亂碰撞,還不如從基礎開始一步一個腳印。
什麼是基礎?那是半導體工業體系歷經上百年的沉澱。或許有人認為這麼說很誇張,軟體尤其是系統遮蔽了很多硬體層的東西,從而使得軟硬體分離。事實上,就網上漂浮的絕大部分碼手,離硬體都非常的遙遠。但這並不能說,不懂硬體,不瞭解硬體就能做好這一行業。恰恰是懂硬體者,才是基本盤的操持者,微軟、蘋果、谷歌等概莫能外。
過來人都清楚,要想掌握半導體工業在軟體層的對映,絕非一朝一日之事。專業人士,爬過高考,躺過本碩博,再經若干專案的錘鍊,都不一定能成為行家。上過幾十個IT素質教育課時的童鞋們,憑什麼能成為IT專家?在不同基礎層面來看,有基礎的可選項的確是多了,但對沒有基礎的人而言,歷史的發展並未過多地偏向他們,留給業餘人士的選項並未因此而增加。所以,地毯式的專業學習之路,壓根就不適合業餘程式設計選手。
4、VB/VBA/VBS分享定位在什麼層面?
在分享期間,有不少朋友詢問能否普及更基礎一點的概念。VB/VBA/VBS的基礎部分,網上有太多的資料,也有太多自媒體運營者在分享相關內容,再重複並無太多意義。所以這部分,BtOfficer主要針對流行的一些錯誤進行糾正。反倒是VB/VBA/VBS很根底的內容,在網上很難見到,BtOfficer會著重圍繞這部分進行分享。
在後續分享的VB/VBA/VBS外掛裡,會包括更系統的基礎知識,從語法語句到內建函式,再到API和具體應用原始碼案例,均以動態幫助的形式呈現給使用者,有需要的屆時可下載使用。
雖然,大部分內容適合有一定基礎的朋友,比如講原理的部分。但這並不意味著,分享的內容不適合初入門的人。VB系大道至簡,再深入的東西,回到最後都是簡單的語句和函式。針對語句用法用例上的結論,是通用的。掌握這些結論,便可不費吹灰之力就可提升程式碼的質量。即便有些內容現階段夠不著,在往後的應用中,遲早都有見面的那一天。待到那時,翻出來看一看,想必會順利很多。
更何況,深入VB的部分(尤其是BtOfficer改進VB的部分),對絕大部分VB使用者都是一樣的,是一個全新的領域。總之,如果信哥,那就跟我走,必然會還你一個非同凡響的VB家族。
二、信心篇
沒有什麼比過時、淘汰更能讓人感到沮喪的了。尤其是對VB家族而言,沒有前途的言論正在主宰著入門者清秀的眼神。但很少有人去問,為何過了半個世紀,BASIC的後人依然在數千種開發工具中位居前20(據坊間流傳的排行榜)。要知道,現在微軟的GitHub Copilot可以根據功能註釋自動補全(寫)程式碼了。所以,有必要去一探究竟,為正確的選擇提供充足的參考。
1、作業系統與開發工具之間的關係
正如前文所說,現代開發工具,在作業系統的加持下,讓很多開發者能夠遠離硬體端,而成為純軟體開發者。網路上大部分爭得面紅耳赤的,都是沒能遵循凡事看硬體的基本邏輯。相信很多人也不會去想,作業系統和開發工具之間的關係。那麼《以史為鑑,程式語言,啟示錄之系統覺醒》將是一個不錯的概覽。
程式語言源自機械時代,隨著硬體的進化完善,而不斷演化。從救人於水火的助記彙編、到專注於科學計算的面向過程,再到可擴充套件易維護的面向物件,無一不是硬體在推波助瀾。就個人計算機而言,硬體體系在32位時代,就趨於穩定。後續的64位,也只不過是錦上添花而已。 每一種計算機語言,都誕生於特殊的需求,並經不斷完善,才有後來的樣子。這就意味著,每種語言都有長短之處。每個人的學習也應當有所側重,追求全能,就像Multics,註定很難有結果。 沒有過時的語言,只有趁手的工具。現代作業系統,將硬體層隔離,讓應用開發者遠離底層,這讓很多人誤以為,語言決定一切。孰不知,高階語言只是硬體的傳話筒而已,二進位制指令才是機器上的唱歌的角兒。脫離硬體講語言,知其一不知其二也。
2、BASIC、VB與VB.Net和PC作業系統(Windows)之間的關係
現代常青的開發工具,包括C在內,都汲取了很多前人的智慧。所以,評估一項開發工具是否適合自己的技術路線,很有必要去了解這項工具的設計意圖,當時技術的侷限,以及後續的發展歷程。《VB前傳,從教學到遊戲,再到系統,似乎每步都是精心設計》一文便講述了被淹沒在歷史中的那段過往。
與BASIC一脈相承的VB,吸收了計算機發展史上,數種優秀開發語言的優點,最終落腳於服務普通大眾。因為心胸開闊的Kemeny和Kurtz深知,人才是計算機的靈魂和歸宿,普通大眾才能賦予計算機無限可能。BASIC的歷史脈絡,也告訴後繼的使用者,簡單裡有深厚的哲學,抓住得住時機,才有自己的時代。
不必苛責VB什麼,找到合適的位置,這是BASIC立足於教育,帶給我們的啟示。誠如Kemeny所說,關鍵要看使用者能否意識到哪些是計算機可以做的,哪些是計算機不能做的。但很肯定,它能給企業和大部分私人生活帶來影響。
如果說BASIC時代屬於混沌的前者,那麼VB就屬於清醒的後者。《早判了,VB已死,但我說話了麼?》一文將帶你瞭解屬於VB的哲學。在普通人通往程式之路上,VB就像擺渡人,接來一批又送走一批。VB存世的意義,或許就在於既普世又度人。心清腦秀者,許你3%得道昇華。資歷平平者,也許你97%的凡人吃喝。
VB的世界裡有自由的周全,也有刻薄的束縛。她試圖讓所有人都能踏進程式設計的世界,並在這個晦澀的世界裡護其周全。她也總拿自由不是沒有代價來告誡使用者,知其然還要知其所以然,到遠方去才是旅遊的意義。
正如《VB/VBA,請讓我點名表揚你》所說,深入理解VB的歷史,仍是把握VB適用場景的關鍵。
3、VB過時淘汰之說蔚然成風,真實的資訊是什麼?
要說過時淘汰,很顯然並沒有,至少VBA還在大行其道。《VB/VBA這個打不死的小強,還會堅持多久?》一文,便圍繞『語言之爭』的若干問題,擺事實講依據,就Python與VBA,VB與VB.NET之間的恩恩怨怨來了個起底和闢謠。在這篇文章裡,援引了微軟針對VB在各大系統的支援政策。從中不難發現,所謂VB之死,不過是IDE停止更新罷了。所謂Python替代VBA,不過是一投票帖數千點贊而已。屬於咱業餘戶的傢伙事,會繼續在Win10/Win11上演繹不老傳說。
4、VB死掉的是什麼,活下來的又是什麼?
此時的VB和彼時的VB,所處的技術環境和商業環境是不一樣的。如今VB勢微,更多的是指商業開發領域的工作機會。《VB、Delphi等程式語言沒落的主要原因有哪些?》或許可以回答VB過時淘汰的根本來源。
作為專業的高階開發語言而言,它必須在高階的路上不斷的進化,才會有開發人員使用。大量開發人員的使用,才會降低專案的實施成本。相反,如果得不到進化,那麼開發的人才資源,就會逐漸枯竭,從而提高專案的成本,進而影響專案的技術路線。對於專業開發人員而言,掌握一項停止進化的的高階開發語言,就意味著工作機會的收縮。
但這對於一項可實施的技術而言,並不妨礙它繼續工作。所以這種落敗,不是指技術,而是指就業機會的凋零。就VB和Delphi而言,只要不用於餬口的工作,他們仍然是桌面應用開發的一把好手。正如《影響VB/VBA商業價值的原因是什麼?》中所說,VB/VBA會逐漸演變成自產自用的小工具生產者角色。
5、打不死的VB,何以存活?
《為什麼Windows的相容性這麼強大,到底用了什麼技術?》,或許從系統的相容特性,一直追溯到X86硬體體系,方能明白,小強不死,是有深層次原因的。
6、場景與前景
《Python取代VBA?先問C#答應否》《Office開發,選VSTO,還是VBA,Python行嗎?》《VBA原始碼可以編譯嗎?》《VBA是指令碼語言嗎?》《Excel公式算程式設計?還別說,真是一門程式語言!》《VB/VBA的改進思考》《為什麼VBA名列最討厭程式語言第一名?》
三、技術篇
《vb/vba的資料型別,有大佬可深度介紹下嗎?》《VB的任性,從Variant開始》《VB的天地,橫看成嶺側成峰》《VB的整數,你真的瞭解?》《知VBA的浮點數結構,更懂算力》《VB/VBA的無符號整數》《VB/VBA之Boolean的坑,防不勝防,治標還得治本》《VB中Byte、Bool和Int與Lng的開銷及效能相同嗎?》《VB/VBA字串》《VB/VBA的ByVal和ByRef》《VB/VBA中Variant不僅是容器,充當傳參的Any,更可以當函式用哦》《大家都有哪些提高VBA/VB程式碼執行效率的小技巧?》...哎喲,太多了,懶得整理了,有興趣的自己去翻吧。
歡迎關注BtOfficer(收藏、點贊、關注+轉發),更多精彩仍在繼續哦(專欄文章將更系統,更全面,但需要閣下支援哦),有嚴肅的技術,也有輕鬆的嘮嗑,期待你的加入!