C語言乃至於C++,很大的一個issue就是跟OS要了一塊Memory或者new了一個物件後,
就算Memory沒有歸還也不會產生錯誤。當然學生時期,只是交個Project,
所謂的Project只要在交的那一瞬間可以運作正常就算過關,
code往往存在許多memory leak的問題...
我的計算機程式設計是在數學系修的,教很基本的C語言,算是修的有點勝之不武。
期中期末忙著顧5學分的微積分,沒有人把心思放在這科上,連我也不例外,
當然這科我只是把作業打一打、交一交而以。
這科的重點在哪邊?最最大的重點在於怎麼寫出沒有memory leak的code,C語言乃至於
C++,很大的一個issue就是跟OS要了一塊Memory或者new了一個物件後,就算
Memory沒有歸還也不會產生錯誤。
當然學生時期,只是交個Project,所謂的Project只要在
交的那一瞬間可以運作正常就算過關,code往往存在許多memory leak的問題,
但是一個在Production運作的code時,這樣是不行的,系統會crash掉,
而且問題很難抓。
因為教的很基本,雖然最後是被當做資訊學院開的兩學期C語言的上學期,抵掉了三學分,
一開始只就只有教一些基本語法,後來教到指標陣列,陣列指標、函數指標、遞迴,
還有一些I/O函式時,很多數學系的同學就投降了。這就是我所謂的勝之不武吧。
這一科在資訊學院的重要性,應該是重要到不能再重要了,如果指標的觀念沒有完全搞
懂時,大二時教授資料結構時,那些鏈結串列、堆疊、駐列、二元樹很理所當然的就看
不懂code。然後後續許多交Project的課程,就要附著在某些熱血同學身上。
不過對於長期慣用指標,對我也是有副作用,我在大二時,Java開始流行,由於Java沒
有指標,我用起來就礙手礙腳的,例如對於一個字串的倒轉、合併等等的處理,我用C
只要把幾個指標加加減減就OK了,但是來到了Java,我居然不知道怎麼寫了,所以我的
Java說真著一直不熟。不過後來Java的出現對於資訊學院的學生來說,不見得是好事,
不但不是不用去學有指標的C語言,而是要雙修C語言跟Java。真可謂是時代的洪流啊。
當然有個知名電腦作家說過「使用指標需要一點天份,因為他用到大腦雙重間接思考的
部份。」所以Java跟C#等比較不依賴指標的語言,對於擴增coder的數量有很大的助
益,而且不用去管記憶體管理的issue,給系統自己去做garbage collection就好
,但我不覺得這對於資訊學院學生來說帶來多少優勢,供給上升代表的就是價格下降。
在手機廠的一個coder曾分享過一段話「有一些應用程式,過去有很嚴重的
memory leak,後來人走了,來一個新人,他不去修,後來就砍掉重練,
流動性高就會變成這樣子呀。」原來C語言沒學好會造成職場流動率高,
真的是蝴蝶效應啊。
以前年輕時...就是沒學c和c++
不然現在那有沙發坐
直接學java也不錯
像我今天看到servlet就頭大
我精通會計學,只有借貸分不太清楚;
我專長C語言,只有指標不太會指
一看海棉大跟本就是內行人裝傻
我精通管理學,只有人不太會認...
這是我第一本C語言的書,當初是我舅舅給我,是他專科的用書。
原來那本又借給同學了。
後來大一的原文書我也有買,不過也送給學弟了。
上圖這本,是研究所在學校計中打工時,組長叫我們拿去丟掉的一堆書之一,
我跟我同學都是愛書人,要叫我們把書拿去垃圾堆丟,感覺真是捨不得。
因為懷舊的緣故我留下了,至於其他的書呢?
我記得是跟另外一位同學,推到浩然圖書館,然後丟到還書箱裡去。
實在有夠白濫。
The C programming language是一本非常薄的C語言程式書籍,它是由C語言的原創者所寫的書,記得大概只有200頁,容易看又容易懂,想當初就靠著該書在職場闖蕩近七年的時間,不過後來已不再寫C的程式,因為已轉向另一個企業應用領域,不過,這本書仍是家中書架上的一本基礎書.