用C++ CLR也很長時間了,終於讓我明白了ISO C++與C++ CLR的區別,下面就讓我簡述一下我學習中痛苦和收穫吧。
通過學習WinForm編程,嚴格的說我並不是WinForm編程,因為我的原來的程式裡有著大量的ISO C++,完全用C++ CLI來編程我可承受不起,同時由於是自學,幾乎用了很長時間我才明白ISO C++與C++ CLR的區別,同時由於國內翻譯過來的書太慢了,我看到的C++CLR都是VS2003的老文法,而網上下載的微軟的視頻卻是VS2005,很多文法規則都變得面目全非,終於在網上找了一本VS2005 的中文電子書,我才明白這兩者的區別,vs2003怪異的__gc,以及在2005裡面我覺得很酷,但是不能不說更怪異得^(追蹤控制代碼),傳說中的tracking handle,可以說真是痛苦。
更痛苦的是C++ CLR怪異的文法不說,最糟糕的是我要用到我以前的類,同時又要用到winform的介面,還有。net類庫中的FileStream流以及MemoryStream,和ADO.net,這裡面涉及到在非託管的類裡面聲明託管的對象,於是更怪異的文法gcroot<>就出來了,以及各種怪異得錯誤就出來了,幾乎我每寫5行程式,編譯的時候就會報錯,那個心情可真是一個滄桑。可以說當時我認為在微軟部門裡最笨的就是編寫C++.net編譯器,這群人,怎麼編寫一個這麼麻煩東西,在非託管的代碼和託管的代碼中,經常會出現這樣那樣怪異的錯誤,還有在*,^,以及普通值變數中,這轉型的過程還真是異常的痛苦。
收穫:
雖然轉型過程是痛苦得,但是現在回首看一看還是值得的,畢竟。net平台是以後未來的主流,同時由於WinForm下寫的,所以我學習了它的事件訊息響應機制,"委託",這個以前在軟工課本上才能見到的概念我終於有了深刻的理解。
第一個收穫就是我終於明白了什麼叫"參考型別"和"數實值型別",以前一直不明白java到底比C++好在哪裡,這次在眾多"實值型別"以及"參考型別"就是value和ref中在轉換和來回引用,終於明白了到底怎麼回事,看來C#和Java成為主流,也不是"浪的虛名呀".
收穫二:通過這次痛苦轉型,感覺自己還是幸運的,雖然機緣巧合,終於知道了C++ CLR的存在,終於知道怎麼操縱強大的。net類庫,想來對以後的找工作應該會有好處吧
收穫三:在這麼費勁的學習C++ CLR的過程中,這次我這小小程式員體會了什麼叫"學習",什麼叫艱辛,以前我覺得考研難考,可是才發現其實"研究"才是真的辛苦呢,畢竟考研只要按照方向來就可以了,可以說不用腦子只要努力就可以了,但研究的時候就不一樣了,當你多方思考,才發現解決的問題如此簡單,如此的讓你哭笑不得,尋找的過程卻是頗費周折呀。
這裡我留下我認為比較好的兩本書和一個視頻推薦給和我一樣需要轉型的程式員。
1:《mfc應用程式在。net架構下的擴充》這本書講的是怎麼在mfc下應用。net類庫,這本書我覺得很好,把。net類庫的幾個特點全部突出了,不過唯一不足的是它的文法仍然是vs2003的,看的時候要注意。
2 :visual C++ 2005入門經典,這本書是在網上一個高手推薦給我得,我都沒有買到,只有電子版得,但是這本書把vs2005中C++
CLR的文法講得很透徹,同時對比了ISO C++的文法,是一本在原理上很好的書。
3:visual c++.net這本書也很好,winform編程介紹的很多,尤其是我從中學到了很多GDI+的知識,呵呵,不過可惜它的文法我自己借的這個版本的也是vs2003文法,需要注意。
4:最後一個是網上得微軟的視頻,就是李建忠講的vs2005這個可以更好的把握vs2005 C++ CLR.
以上就是我的一點學習經驗,希望大家看到的能少做彎路,同時也希望和我一樣處於轉型的程式員大家能多交流,這樣就能更好的進步呵呵。
最後想說的是雖然連我自己都覺得C++ CLR很"雞肋",但還是想說tracking handle這名字我很喜歡真的很"cool",就為這,我也要好好學習,就像war3中的orc那樣,曾經那麼的受壓迫,連一代獸王Grubby亦很無奈,但是既然選擇了一個種族,就要堅持下去,就像現在的orc一樣,總有我們強大的那天。哈哈,我翹首以盼。