程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#學習筆記(3)

C#學習筆記(3)

編輯:C#基礎知識

開始

2000年6月我大學畢業,從北京回到了石家莊,正式開始了我的職業生涯。如前所述,一開始我使用的語言是asp,我一直認為這不能稱之為編程,因為asp不是一種編程語言,把它叫做動態網頁實現技術可能更好。另外,asp很簡單,並且,簡單就是它全部的特點--這使得它很容易就能學會(在後來的工作中,我接觸到許多應聘的學生,他們都告訴我自己精通asp語言)。雖然學習起來很簡單,但是在使用起來卻不得不多費點兒勁兒:我還能記得自己晚上一個人在辦公室用VI一步一步調試某一個網頁的情景,每當遇到挫折失敗的時候,總是想起給桐桐打一個電話,聽聽她的聲音。如你所知,我總是遇到困難。

現在你能看出來,我不是高手,只是一個低手...

2000年6月我大學畢業,從北京回到了石家莊,同一時間(美國西部時間6月22日上午),微軟公司在位於美國西雅圖郊外的總部內邀請新聞記者、新聞分析家等約400人,舉行了新聞發布會“Forum2000”,宣布正式推出.Net計劃。這個計劃中包括了新的網絡計算平台(.Net Framework)、新的語言(C#)、新的開發工具(Visual Studio.Net)以及asp的下一個版本ASP.NET,後者最開始被稱為ASP+。那時候我學習的主要興趣就在ASP.NET上,並且通過這個窗口開始了解Microsoft.Net的各個方面。

ASP.NET仍然不能稱之為一種編程語言,但是現在可以把它看作是一個創建、管理、部署Web應用程序的平台。可以使用任何.Net語言在這個平台上開發互聯網應用程序,這其中當然包括C#。它們之間的關系可以從下圖中看出:

這就是著名的.Net 平台結構圖,從這個圖上可以看到,ASP.NET、Windows Forms和VS.Net都不過是.Net開發平台的一部分,用於.Net應用程序的開發及展示。.Net 平台的核心技術為:通用語言運行時(CLR:Common Language Runtime)、基類庫(Base Class Library)、.Net語言及Visual Studio.Net。


從這個圖上也可以看出,.Net Framework是架構在Windows平台上的一個虛擬的運行平台,你可以想象將最下層的Windows換作其它的操作系統,比如說Linux,一樣可以實現使用符合了CLS(Common Language Specification,通用語言規范)的.Net語言(VB.Net、C#、JScript.Net等)來創建ASP.NET或Windows Forms(可能會叫做Linux Forms)應用程序的功能,這其實就是我們前面介紹的Mono計劃所要實現的功能。所以可以這麼認為,理論上,C#是一種可以跨平台的語言,這很像Java,另一個比較像Java的地方是,C#也是一種(特殊意義上的)解釋性的語言。同Java一樣,C#編寫的程序代碼也是先通過C#編譯器編譯為一種特殊的字節代碼(中間語言,Microsoft Intermediate Language,MSIL),運行的時候再經由特定的編譯器(JIT編譯器,Just In Time,JITer)編譯為機器代碼以供操作系統執行。


不僅是C#語言,所有.Net語言(將會包括我們常用的幾十種現代的編程語言)都可以編寫面向CLR的程序代碼,這種代碼在.Net中被稱為托管代碼(Managed Code),所有的Managed Code都直接運行在CLR上,具有與平台無關的特性。


解釋性的語言很安全,並且可以通過它的運行平台為其賦予更多的功能,比如自動內存管理、異常處理等。事實上,C#語言的許多特點都是由CLR提供的,下面的CLR結構圖說明了這一點。

可以看到,類型安全(Type Checker)、垃圾回收(Garbage Collector)、異常處理(Exception Manager)、向下兼容(COM Marshaler)、多線程支持(Thread Support)這些C#的特點都是由CLR來提供的。CLR最早被稱為下一代Windows服務運行時(NGWS Runtime),是直接建立在操作系統層上的一個虛擬的運行環境,主要的功能是管理代碼的運行。在.Net 平台結構圖中,CLR的上面是.Net的基類庫(Base Class Library,BCL),這組基類庫包括了從基本輸入輸出到數據訪問等各方面,提供了一個統一的面向對象的、層次化的、可擴展的編程接口。從.Net 平台結構圖中也可以看到,基類庫可以被各種語言調用和擴展,也就是說,不管是C#、VB.NET還是VC++.NET,都可以自由地調用.Net的基類庫。事實上, C#並沒有屬於自己的類庫,它所使用的編程接口就是.Net提供的基類庫。所以,在決定使用C#時,真正需要費工夫學習的其實是.NET框架的基類庫:C#自身只有區區77個關鍵詞,而且其語法對許多程序員來說都是他們非常熟悉的。BCL則相反,它包含了超過4500個以上的類和無數的方法、屬性,在你的C# 程序中隨時都可能會用到它來完成自己的任務。

很多人都思考過應如何開始學習一種新的語言,對於一個有經驗的編程人員來講,這確非難事。但是對於一個對編寫代碼一無所知的人而言,如果你是以C#開始你的編程之旅的,數目繁多的概念及新名詞可能會令你有些不知所措。這時候請注意你的學習順序,任何一種編程語言的學習都是按照運行平台、語法、基類庫直至各方面的應用這一順序來進行的,但是在實際的學習中,它們之間並不是孤立的。推薦的方法是:對運行平台和語法有了一個整體的認識後,在應用中學習各種基類庫的用法。鑒於C#這一語言的特殊性,全面了解它的運行平台(.NetFramework)必會使你的學習事半功倍。所以請記住上面提到的兩個圖,在以後的學習中,雖然可能不會明確的涉及到它們,但是在整個C#的學習過程中,它們卻是無處不在的。

還有一個很重要的概念需要你明白,這就是公共語言架構(Common Language Infrastructure ,CLI)。CLI是CLR的一個子集,也就是.NET中最終對編譯成MSIL代碼的應用程序的運行環境進行管理的那一部分。在CLR結構圖中CLI位於下半部分,主要包括類加載器(Class Loader)、實時編譯器(IL To Native Compilers)和一個運行時環境的垃圾收集器(Garbage Collector)。CLI是.Net和CLR的靈魂,CLI為IL代碼提供運行的環境,你可以將使用任何語言編寫的代碼通過其特定的編譯器轉換為MSIL代碼之後運行其上,甚至還可以自己寫MSIL代碼在CLI上面運行。如你所知,歐洲計算機制造商協會(ECMA)已經於2001年10月13日批准C#語言規范(ECMA-334)成為一種新誕生的計算機產業標准。同時國際標准組織ISO也同意該標准進入該組織的審批階段。並且,作為.Net與CLR的核心部分,CLI與C#也同時獲得了ECMA的批准(ECMA-335)。擁有了C#與CLI這兩項標准,你可以自己寫出能夠運行於任何操作系統上的.Net平台(只要你願意)。如前所述,著名的Mono項目就是這麼干的,Mono項目包括三個核心的部分:一個C#語言的編譯器,一個CLI和一個類庫。在Java的世界中,這項工作是由SUN公司完成的,SUN針對不同的操作系統開發出相應的Java虛擬機以便讓一個由Java開發的應用程序運行在不同的操作系統上,但是迄今為止還沒聽說過微軟有這方面打算(為用戶提供非Windows系統的.Net平台)。

2000年的6月還有很多事情發生,2000年的6月我在學校做畢設,晚上就跑到系試驗室看歐錦賽,我很喜歡的坎普君(Bergkamp)大放異彩,幫助荷蘭隊6比1大勝南斯拉夫,米哈伊洛維奇 (Mihajlovic)在比賽最後莫名的笑容永遠留在了我的心中。說實話,那時候只顧著看EURO2000,可沒管什麼.Net、.Not。另外,離別的愁緒圍繞在每個人的周圍,廣播裡開始反反復復播放一些古老的歌曲,不知道為什麼,戀曲1980卻是那時候的最愛。

後來,我們都畢了業。如你所知,我離開了北京。

>>>未完,待續...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved