網路城邦
上一篇 回創作列表 下一篇  字體:
VB語言比C還要好
2015/03/02 07:05:49瀏覽29202|回應1|推薦14

對於多數資訊專業人士而言,說VB優於C語言是很離經叛道的!但是從二十多年前分別接觸BasicC語言開始,我就一直很想大聲說:『VB語言比C還要好』!只是一方面怕人微言輕,自己的學識能力不夠,亂講話會被攻擊會被笑,一方面程式語言的內涵也在持續演變,早期VB的效能與功能廣度確實不如C語言。

但是隨著時間過去,客觀上VBC的效能差異已經完全消失,我自己也已經熟悉這兩種語言,到了可以同時出書的程度,而且身為專業的軟體開發人員,我就是用VB作為我日常研究各種軟體技術,尤其是影像辨識的工具。所以我終於敢大聲地說:VB真的比C語言還要好

會想到這件事,是因為剛剛看到一位讀高中的小朋友來信,問一些程式語言學習的問題,他說他買了書(不是我的書)VB,但是「知道」以後進入專業「一定」還要學用別的「進階」語言云云…。我想他是初學者,不可能真的深入知道各個語言的特性,一定是因為他接觸的前輩老師們給了他這個概念:「VB是初學者學的簡易程式語言,是難登大雅之堂的!」這其實和以前美國白人認定黑人不會打籃球一樣的可笑。

當然,要進入專業領域是有必要學會多種語言,但原因並不是VB不夠好,所以必須學C語言等等「較好」的語言。只是因為程式語言是搭載在作業系統或通訊協定之上的工具,某些作業系統如蘋果電腦的IOS是沒有VB語言的,所以必須學會用C;如果你要寫網頁程式,在HTML的協定下也是沒有VB語言的,你必須學會用JavaScript;同理,要在Android系統下寫程式,你必須學會Java語言。

但是以功能的完整度與方便性來說,實際上目前已經沒有比VB更好的程式語言工具了!大家比較容易忽略(或故意忽視)的是在2002年微軟寧願被罵到臭頭,堅持放棄舉世稱讚的VB6,也要推廣所謂的.NET架構,就是讓VBC語言徹底合流,自那時起變成功能與效能完全相同的一家人,事實上自那以後已經沒有甚麼事情是C語言做得到,而VB做不到的,而且效能速率也完全一樣!

即使如此好像也不能說VB>C吧?當然是可以的!用過兩種語言的人都可以印證,VB是以文字模式區分程式區塊,和一般英文文法幾乎一樣!不僅初學者很容易看懂,對於需要寫複雜結構程式的專家來說,有具體意義的IfEndIfForNext,也比層層疊疊的大括號容易閱讀得多!以我自己來說,超過三層的C語言迴圈就會讓我感覺很疲累,但是VB就沒關係,五六層的迴圈都還很清楚。

另一方面,VB還保留一點「糊塗」特性,他基本上會試圖自動轉換一下資料型態,以避免程式因為資料型態不符就輕易當掉!相對的,C語言則是號稱「資料型態嚴格」的語言,非常多好像是脫了褲子放屁的愚蠢宣告和資料轉換函數都是必須的!非常不人性化。

譬如我正在改編的一本書中,VB程式可以用Me.Controls(“M2”)就簡單指定好一個程式中稱為M2Label物件,但是用C#就要寫成:

(Label)this.Controls["M2"];

誰會想到:明明就是Label的一個物件,前面還必須加上(Label)這個宣告,C語言才會看得懂它是一個Label?這些小地方可以讓初學者嚇死!因為太機械化太繁瑣了,不這樣脫了褲子就不能放屁,誰知道啊?這也會讓已經習慣用VB的老手們氣死!覺得C語言實在太愚蠢了。

總之,我認為各種程式語言中,應該毫無疑義VB是「最好」的!功能效能不缺,語法清晰好看又好寫等等,好處說不完!不僅適合初學者,即使你玩到像我一樣開軟體公司的程度,也還是會覺得用VB做測試研究之用是最好的!除非是你根本不會使用VB,其實這種「專業」人士還蠻多的!所以請注意:下次碰到有人還在說C比VB更好、更「專業」時,除非他真的也很熟悉VB,不然就別聽下去了!

( 心情隨筆校園筆記 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=21218481

 回應文章

matt22
等級:7
留言加入好友
因地制宜
2015/03/04 10:01
鄉下老師談的VB大概指的是Dot Net吧?對初學者,VB較人性化要比C容易學。VB有.Net支援,功能性完備,在系統設計上也可以引入Object Oriented Programming(OOP)概念,有其優點。C則是完全不同的程式語言,二十年前獨領風騷,直到OOP設計觀念普遍,設計較大系統時才被C++取代(後來還有Java,C#等)。但是在較小的程式環境裡,譬如說:在只有32K記憶體Controller寫程式,用VB就不實際了。如果在更小如4K記憶體,連C語言都不可能,得用組合語言了。初學者可能會問:誰還用那麼小的(電腦)?答案是:價格便宜,並不是所有電器,都需要智慧型手機的功能。另外還有時是歷史因素或信任度,今天飛在天上的F-16戰鬥機,有些Controller的記憶體還不到32K呢,並不是不改進,而是相信用了幾十年的硬體,增加新功能時,寧可想辦法擠進更多行Code也不願意換,所謂Battle-Tested才是真的!
鄉下老師(yccsonar) 於 2015-03-08 20:18 回覆:

同意!特殊環境下,只有特定語言可用,當然無所選擇必須配合環境!

譬如必須學會JavaScript,不然在網頁世界很難做事,並非JS比VB好。

所以我說:要進入專業軟體領域一定要會多種語言,但這無礙於VB最好的論點。