1. 程式人生 > >我心目中的C

我心目中的C

有必要先回憶一下計算機的簡史。

一開始,人們在紙袋上打孔,然後輸入進計算機。

那時的計算機CPU很慢,記憶體很小,沒有作業系統。

紙袋打孔就是最原始的機器語言。

後來出現了機器語言的助記符,也就是組合語言。

由於機器只認機器語言,所以人們需要彙編器。

於是人們用機器語言寫了彙編器,由於可讀性差,又用了組合語言重寫彙編器。

由於組合語言只是助i記符,所以與機器語言等價,程式設計師不僅關心資料在記憶體中的位置,還得關心程式碼在記憶體中的位置。

後來出現了多工,出現了虛擬記憶體,出現了檔案系統,出現了各種各樣的裝置,於是出現了作業系統。

本來人們打算寫出一種全新的作業系統,但是失敗了,不過從此有了C語言。

此時人們需要C編譯器。於是人們用匯編語言寫了C編譯器,又用C語言重寫了C編譯器。

或許C語言還不夠高等,程式設計師依然要關心資料在記憶體中的位置,好在對程式碼在記憶體中的位置不用關心了。

為了方便使用,人們寫出了C標準庫,但目前看來,使用C標準庫依然不方便,人們需要更多庫。

C語言面向過程,語言本身不提供面向物件的機制,但由於C無所不能......

人們依然可以用C寫出面向物件的程式,只是更復雜罷了。使用Glib,可以建立物件。

後來,好像人們發現C不適合寫應用層上的程式,於是第三方C庫很少。

但是,如果只用C寫核心或驅動,C標準庫用不上,於是C標準庫快被人們淡忘了。

C語言可以用來寫大型高效的伺服器。好處除了高效外,就是可以方便地呼叫作業系統API。

另外用C寫播放器也不錯,好處依然是高效,畢竟音視訊解碼需要較快的速度。

用C寫編輯器也不錯,不是記事本,是功能超強大的那種,比如VIM。

但是,這些用C寫的應用層程式都需要大量的開發時間。如果C有更豐富的庫,一定會發展的更好。

C++除了有STL,還有Boost,不是道MFC能不能也算進去,畢竟他不開源。

除此之外,還有用C++寫的框架:ACE。類似的東西C好像就沒有。

所以,C程式設計師有時會很孤單,自己一個人慢慢封裝作業系統API,封裝資料庫介面,封裝一切看起來應該封裝的東西。