VB在Call by Reference(Automatic Update),有比較明顯之問題,算是程式語言功能上之缺陷。不過,VB是否有其他方式得以補救,以解決Call by Reference之問題?VB可以在引數Call by Reference,但是真要達到Automatic Update,其寫法和觀念都會變得非常複雜。在我大學期間,在圖書館內找到一本書,而且本書也在臺南市立圖書館找得到,乃是一本中譯書,其書名是《深入VB 5.0/ActiveX》。在這本書中,有提出以事件(Event)觸發動作,也能達到類似於Call by Reference來修改原參考物件,而且可以一次同時改很多地方。事實上,VB之所以不被視為是物件導向語言之處,除各項基本物件導向要求之必要條件外,Call by Reference真是VB之最大問題。
以事件觸發更動原物件屬性,程式碼是否相當好撰寫呢?答案是程式碼要寫很多,而且幾乎沒有人知道VB有事件觸發機制,其知道人數比引數變更物件屬性更少,所以會寫事件觸發機制之程式開發人員相當少。因而, VB程式開發員之所以會被藐視,就是因為VB很多功能都寫不出來。但是,事件觸發不僅程式碼要寫很多,其程式觀念也不同於其他程式語言,使得多數人都會產生排斥行為。在VB.Net出來之後,VB.Net已經不是VB,因為VB.Net要增加物件導向功能,所以程式語法大幅更動之程度,幾乎像是在使用另一種語言。
在C++方面,我除了大學時期寫過一次小作業外,其實並沒有任何C++開發經驗。不過,C和C++都能歷久不衰地原因之一,其實也就是指標擁有之Call by Reference功能。Java學習C和C++語言,雖然刪除指標使得開發相當迅速,就像是在堆積木一般,只是Call by Reference轉變成一層包一層的「.」,有時候會感到速度有一點點慢,尤其是HashMap有挺明顯之緩速情形。在研究所要畢業那年(2004),Java正在發展泛型語法,但是當時語法不太固定,因為有很多程式開發人員在建議更好之寫法。那時我才留意到,原來程式語法可以改,而且是改得比較好寫一點。在開發程式方面,我建議採用標準語法來撰寫,否則要重新編譯將會是大工程。以我個人略懂之C語言來說,我一般會採用Standard C99語法來寫,已經自ANSI C89向上提升一個層級。據說去年有ISO C11版本問世,真不知道改到哪些地方?
我在專科一年級課程學習Fortran77,第二學期有天在資訊大樓資105教室見到有人在寫C,詢問幾句之後開始借書學習。後來,小武在學QB,而且可以在電腦上畫圖,讓我感到十分新鮮有趣,也就跟著學習QB。小武是我的學習對象,我總是偷偷地學習他在學習的東西,並且使自己達到一定水準之上。1997年,專科三年級時,學校全面性更換電腦作業系統為Windows95,以往使用之QB已經銷聲匿跡,轉變成必須以VB來取代QB。在研究所入學前,VB和C是比較常在使用之語言,入學後有應課程需求使用過Fortran95,再經由研究所必修課程學習Java。在經歷多年之後,仍然有在使用之程式語言,就僅剩下C和Java。由於我學過多種程式語言,所以會有程式語法混淆之問題存在,因而每次都得花一點時間重新熟悉複習,才能夠重拾舊往之水準去撰寫程式。在進入研究所前,我使用Turbo C,進入研究所之後改用GCC。我發現JRE和GCJ不太一樣,所以Runtime都還是用JRE。我早期使用Eclipse,後來採用NetBeans,而且可以同時使用C和Java。
References
以事件觸發更動原物件屬性,程式碼是否相當好撰寫呢?答案是程式碼要寫很多,而且幾乎沒有人知道VB有事件觸發機制,其知道人數比引數變更物件屬性更少,所以會寫事件觸發機制之程式開發人員相當少。因而, VB程式開發員之所以會被藐視,就是因為VB很多功能都寫不出來。但是,事件觸發不僅程式碼要寫很多,其程式觀念也不同於其他程式語言,使得多數人都會產生排斥行為。在VB.Net出來之後,VB.Net已經不是VB,因為VB.Net要增加物件導向功能,所以程式語法大幅更動之程度,幾乎像是在使用另一種語言。
在C++方面,我除了大學時期寫過一次小作業外,其實並沒有任何C++開發經驗。不過,C和C++都能歷久不衰地原因之一,其實也就是指標擁有之Call by Reference功能。Java學習C和C++語言,雖然刪除指標使得開發相當迅速,就像是在堆積木一般,只是Call by Reference轉變成一層包一層的「.」,有時候會感到速度有一點點慢,尤其是HashMap有挺明顯之緩速情形。在研究所要畢業那年(2004),Java正在發展泛型語法,但是當時語法不太固定,因為有很多程式開發人員在建議更好之寫法。那時我才留意到,原來程式語法可以改,而且是改得比較好寫一點。在開發程式方面,我建議採用標準語法來撰寫,否則要重新編譯將會是大工程。以我個人略懂之C語言來說,我一般會採用Standard C99語法來寫,已經自ANSI C89向上提升一個層級。據說去年有ISO C11版本問世,真不知道改到哪些地方?
我在專科一年級課程學習Fortran77,第二學期有天在資訊大樓資105教室見到有人在寫C,詢問幾句之後開始借書學習。後來,小武在學QB,而且可以在電腦上畫圖,讓我感到十分新鮮有趣,也就跟著學習QB。小武是我的學習對象,我總是偷偷地學習他在學習的東西,並且使自己達到一定水準之上。1997年,專科三年級時,學校全面性更換電腦作業系統為Windows95,以往使用之QB已經銷聲匿跡,轉變成必須以VB來取代QB。在研究所入學前,VB和C是比較常在使用之語言,入學後有應課程需求使用過Fortran95,再經由研究所必修課程學習Java。在經歷多年之後,仍然有在使用之程式語言,就僅剩下C和Java。由於我學過多種程式語言,所以會有程式語法混淆之問題存在,因而每次都得花一點時間重新熟悉複習,才能夠重拾舊往之水準去撰寫程式。在進入研究所前,我使用Turbo C,進入研究所之後改用GCC。我發現JRE和GCJ不太一樣,所以Runtime都還是用JRE。我早期使用Eclipse,後來採用NetBeans,而且可以同時使用C和Java。
References
- Guy Eddon,Henry Eddon;鍾俊仁編譯(1997)深入VB 5.0/ActiveX,松格出版社
- 引數Call by Reference:http://yes.nctu.edu.tw/vb/6a_Sub/index.htm