最近一直在思考一個問題,那就是.Net程序員的發展,應該往上走還是往下走的事情。所謂往上走,我的理解是朝著系統架構方向發展,從原來的編碼工作轉向架構、設計、分析等等工作。
而往下走,是研究.Net底層原理和實現,可能大部分就是對IL和CLR的研究。
最近和一個在.net領域剛剛工作,並且很有激情往.net方向發展的同學討論關於學習IL代碼的事情,對方咨詢過他們的PM,表示,那個東西學不學無所謂,是否學習IL對學習.Net本身影響不大。
說實話 ,我對.net學習也不是很深,可能是我接觸.net比較早的緣故吧,在我剛剛開始學習.net的時候,大部分的書籍資料都很強調IL,可能那個時候.net剛剛問世,人們更關心.net和native的區別,其實那個時候我聽到的比較不是來自於.Net何Java,而是c#和C++。人們更多討論C#和C++孰優孰劣。
關於架構的事情我還不了解,關於IL的了解更少,但是我總感覺,雖然我們不需要用IL來編碼,但是對IL的理解可以讓我們明白.Net代碼是如何執行的,至少我們會知道C#裡的每種操作轉化後的的操作是什麼,雖然IL還不是機器指令,但是不同的操作轉換到IL上對性能的影響也是可見一斑的。
也許,.net還不太常用在實時系統中,大部分都是作為service程序或者ASP.Net的server端代碼。也許細微的性能問題對系統開銷影響還不大。
所以我也開始懷疑,研究IL是否對.net很重要。就連寫C或者C++的人都不怎麼看ASM了。除非是寫實時性很強的東西,比如單片機,否則,底層的東西對我們已經不重要了,尤其.Net還有GC,不少底層的東西已經無須我們干預了。
但是無論如何,我想,學習一些IL方面的知識還是對寫.Net有幫助的,不說給你EXE或者DLL讓你分析原理這等非IL不可的工作,單就是解決程序結構和性能問題,學習IL還是值得的,何況IL比C#難不多少,可讀性比ASM要強多得多。所以,茶余飯後有時間看看IL還是學學那個東西吧。
原文地址:http://www.cnblogs.com/zeiss/archive/2009/09/01/1558139.Html