C 之父:精通C 很难,但你一天之内就能学习使用C
精通C 聽起來好像就是一個笑話。為什么C 比別的語言難學那么多?其實這基本上是因為C 之父Bjarne Stroustrup 說過的一句話“我特別的討厭語言的設計者把自己的喜好強加給用戶”(看向go)。結果C 為了不限制你的想法,于是也就變成了現在的樣子-- ,那么如何學好C ,甚至是出色掌握C ?
1.談談C 的書籍。
沒有,也不可能有一本書對于所有人來說都是最好的。不過對于那些真正的程序員來說,如果他喜歡從“經典風格”的書中間學習一些新的概念和技術,我推薦我的The C Programming Language, 1998年的第三版和特別版。那本書講的是純而又純的C ,完全獨立于平臺和庫(當然得講到標準庫)。該書面向那些有一定經驗的程序員,幫助他們掌握C ,但不適合毫無經驗的初學者入門,也不適合那些臨時程序員品嘗C 快餐。所以這本書的重點在于概念和技術,而且在完整性和精確性上下了不少功夫。
2. 學習C 要花多長時間?
這要看你說的“學習”是什么意思了。如果你是一個Pascal程序員,你應該能很快地使你的C 水平達到與Pascal相近的程度;而如果你是一個C程序員,一天之內你就能學會使用C 進行更出色的C風格編程。另一方面,如果你想完全掌握C 的主要機制,例如數據抽象,面向對象編程,通用編程,面向對象設計等等,而此前又對這些東西不很熟悉的話,花上個一兩年是不足為奇的。那么是不是說這就是學習C 所需要的時間呢?也許再翻一番,我想打算成為更出色的設計師和程序員最起碼也要這么長的時間。如果學習一種新的語言不能使我們的工作和思想方式發生深刻的變革,那又何苦來哉?跟成為一個鋼琴家或者熟練掌握一門外語相比,學習一種新的、不同的語言和編程風格還算是簡單的。
3. 了解C語言是學習C 的前提條件嗎?
否!C 中與C相近的子集其實比C語言本身要好學,類型方面的錯誤會少一些,也不像C那樣繞圈子,還有更好的支持庫。所以應該從這個子集開始學習C 。
4. 要想成為真正的OO程序員,我是不是得先學習Smalltalk?
否。如果你想學Smalltaok,盡管去學。這種語言很有趣,而且學習新東西總是一個好主意。但是Smalltalk不是C ,而且把Smalltalk的編程風格用在C 里不會有什么好結果。如果你想成為一個出色的C 程序員,而且也沒有幾個月的時間百無聊賴,請你集中力量學好C 以及其背后的思想。
5. 我如何開始學習C ?
這取決于你的基礎和學習動機。如果你是個初學者,我想你最好找個有經驗的程序員來幫助你,要不然你在學習和實踐中不可避免的犯下的種種錯誤會大大地打擊你的積極性。另外,即使你的編譯器配備了充足的文檔資料,一本C 書籍也永遠是必不可少的,畢竟文檔資料不是學習編程思想的好教材。
6. 怎樣改進我的C 程序?
不好說。這取決于你是怎么使用該語言的。大多數人低估了抽象類和模板的價值,反過來卻肆無忌憚地使用造型機制(cast)和宏。這方面可以看看我的文章和書。抽象類和和模板的作用當然是提供一種方便的手段建構單根的類層次或者重用函數,但更重要的是,它們作為接口提供了簡潔的、邏輯性的服務表示機制。
7. 語言的選擇是不是很重要?
是,但也別指望奇跡。很多人似乎相信某一種語言能夠解決他們在系統開發中遇到的幾乎所有問題,他們不斷地去尋找完美的編程語言,然后一次次的失敗,一次次的沮喪。另外一些人則將編程語言貶為無關緊要的細節,把大把大把的銀子放在開發流程和設計方法上,他們永遠都在用著COBOL,
C和一些專有語言。一種優秀的語言,例如C ,能幫助設計者和程序員做很多事情,而其能力和缺陷又能夠被清楚地了解和對待。
總結
以上是生活随笔為你收集整理的C 之父:精通C 很难,但你一天之内就能学习使用C的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓设置修改器(安卓设置修改)
- 下一篇: C/C 宏替换详解