2008年6月3日 星期二

系統程式設計

話說以前有專門的課程都叫做系統程式設計,可是卻是兩碼子事情,一個教導你如何把程式語言變成系統上的machine code,另外一個卻是類似一般程式設計

後者卻是初學者容易陷入混亂的地方,目前大多是C語言,因為一開始還是排除不開一般標準的IO處理,這又是一般初學者在學習程式語言的時候最先接觸的地方,他們就開始有一個懷疑:系統程式設計跟一般程式設計不是差不多嗎?還不就是那些IO

接個更是低階IO的部分,使用的如read, write之類的函數,然後使用者可能覺得這根本是拖褲子放屁,多此一舉(我用fread跟fwrite不是用的好好的嗎?),對於一些啥select, dup之類的function背景又不大了然(我想寫書的作者背景的關係,他們認為已經解釋的很明白,其實初學者根本不懂來由),結果這方面他們就不會去深究

以M$或者java初學者,看到linux系統程式設計,他們大概為覺得signal跟process很不能適應吧,因為他們用的是event跟timer,M$系統程式設計另外又有一套,所以一整個混亂,我想這是一般初學者在進入時候最大的"心理障礙"(當然跟背景也有些關連)

學習過後可能就會發現一件事情,那就是系統程式非常的"底層",他是跟系統強烈相關的,你可能無法很順利的無痛移植到另外一個OS,比方說,你可能寫了一個RS232的通訊程式,可是你卻發現windows並不包含unistd.h這個標頭(我還沒試驗過,我是說可能會有這樣的狀況),然後整個程式就要從新開發

我想在踏入kernel之前,系統程式設計是一門不錯的熱身操

沒有留言: