2021-02-10 分類: 網站建設
斷章取義
C語言出現50年了,有很多內容已過時,至少有百分之二十的內容沒有實用價值。
C++更過份,對程序員來說,至少有百分之七十的內容沒有實用價值。
Linux系統也是,命令上千個,對程序員來說有用的不超過50個。
人的精力是有限的,沒必要去折騰那些沒有實用價值的知識點。各位當中有些人可能已經有基礎,會發現在我的課程中會缺一些內容,如鏈表、排序算法、二叉樹、紅黑樹、C++的輸入輸出和流、stl等,缺了是因為這些知識沒有實用價值,學了之后除了用來吹牛別無用處。
現有的C/C++的教材中,大部分是教授寫出來的,沒有幾本是程序員寫出來的,毫不夸張的說:沒有經過實戰的教授在精英程序員面前,始終就停留在小學生水平。
我學習C語言是從譚浩強的《C程序設計》開始的,這本書過時很久了,譚浩強已經仙逝多年,他的書也應該隨他一起進入天堂,不應該成為出版商賺錢的工具。
《C Primer Plus》和《C++ Primer Plus》這兩本書寫得不錯,作者功力深厚,每本書有1500多頁,拿在手上非常有份量。但是,在我看來,實在是太啰嗦,只介紹知識,沒有重點。
網上也有不少視頻教程,但是,大部分的教程只是把書本上的內容搬到視頻中,沒有新意。
培養程序員的感覺
在自然界,每種動物都有它們交流的方式,山中的野雞、樹上的小鳥,如果懂得它們的語言就容易抓住它們,只是普通人不知道而已。
與人類的語言相比,動物的語言非常簡單。
與人類的語言相比,計算機的語言也很簡單,初學者認為難是因為不適應,不習慣。
所以,對初學者來說,培養寫程序的感覺是最重要的事情。
如何培養程序員的感覺
首先,程序員是寫出來的,不是看出來的。
去過紫禁城的人都知道,不管你有多么聰明,繞多幾個彎,迷路是大概率的事情,但是,那些在紫禁城中搞衛生的工人一定不會迷路,是你不如搞衛生的工人夠聰明嗎?肯定不是,是你不習慣,不熟悉。
各位在網上看過的美女圖片或視頻成千上萬,不管看什么樣的美女,你肯定是臉不紅心不跳,但是,如果有一個美女真的出現在你的面前,估計你會手足無措,言語結吧。
一個知識點,看懂的難度如果是一,自己實現的難度就是三,熟練使用的難度是八,融匯貫通應用在項目中的難度是十。就像是練武學招數,看別人打很容易,自己練習就難了,各種招數融會貫通和對手實戰,需要時間的積累。那些《從入門到精通》的教材都是屁話,屁話為什么也有人信,原因很簡單,它利用了人性占便宜走捷徑的弱點。如果真的能從《入門到精通》,程序員就不值錢了。
任何事情,不管看多少遍,都不如做一遍。寫程序也是這樣的,編程語言并不難,而是你不了解,不習慣,不熟悉。有些人還可能會害怕動手。
看別人的程序,看別人寫程序,和自己動手寫程序的感覺是不一樣的,就像網上的美女和現實中的美女一樣,那感覺是完全不同的。
怎么做?行動起來,多寫程序,就習慣了,熟悉了。開始的時候,寫出的程序很垃圾也沒有關系,大家都是這么過來的,天賦異稟的人是極少的。就像畫家,我從未聽說某畫家從小就是畫家,他們小時候畫的畫和平常人畫的也沒什么區別,達芬奇不也是從畫雞蛋開始的嗎。
其次就是應用的經驗了,應用的經驗要通過做項目積累。
在有些的C語言教程中,經常讓學生用C語言去做一些與實際開發無關的題目,最討厭的是數學題,這是大的敗筆,因為要完成這些題,考的是數學方面的知識而不是程序員的知識。
我回憶起當年我是菜鳥的學習過程,詳細了解初學者的困惑,把C/C++語言的基礎知識做了總結,每個知識點寫一篇文章,約50篇。
在我的教程里,安排了很多課后作業,課后作業有兩個目標:一是培訓學生寫程序的感覺,熟悉寫程序的方法;二是鞏固所學的知識點。還有,我的課后作業是實際開發的需求為導向,作業內容是程序員常用知識和編程技巧。
學習步驟
企業對C/C++程序員的需求中,至少70%以上是Linux系統平臺下的C/C++程序員,所以本教程的開發環境為Linux,Linux的開發環境會讓初學者不適應,不習慣,但這是正確的方向,我不可能為了迎合學生的喜好選擇windows平臺。
1、基礎知識的學習
基礎知識包括C語言基礎、C++語言基礎和Linux編程基礎。
本階段重點在培養寫程序的感覺和介紹C/C++程序員在日常工作中經常用到的知識。注意,培養寫程序感覺比C/C++的知識點更重要。
我個人認為學習C/C++語言,如果是零基礎,最艱難是基礎階段,這時期學生還不具備程序員的思維,也沒有寫程序的感覺,溝通比較費勁,用廣東話說就是雞同鴨講。
學生有了寫程序的感覺,上了道,就會慢慢順起來。
基礎知識的學習大概需要兩到三個月(全日制)。
學習完基礎知識之后,如果你的年齡在23歲以下,我建議你先去找工作,工資低一些沒關系,只要能養活自己就行了。在我看來,先進入這個行業,有公司給你發工資,有實戰的環境,邊工作邊學習是最好的方案,生活沒有壓力,學習更有動力。(23歲以下的年齡,是大學生畢業的年齡,在這個年齡段,不管是哪個學個畢業的,大家都是菜鳥,不懂是正常的,如果你在面試的時候表現出積極上進態度,找個實習的崗位不是太難的事情。)
如果你的年齡到了25歲,學習完基礎知識之后就去找工作可能不好辦,因為你的年齡與能力不符,公司未必會要你。(年輕人不懂很正常,年紀這么大了還不懂就不應該)
2、職業技能的訓練
第二階段的學習內容以實際項目的需求為導向,把學生培養成職業的程序員,以能找到工作為目標,時間大概需要兩到三個月。
在我的課程中,不玩俄羅斯方塊,也不玩打地鼠、貪吃蛇、球球大作戰等無聊的東西。
企業對C/C++程序員的需求中,數據通信、數據處理和數據倉庫的職位占了至少50%以上。
所以,我們要玩數據。
在我的基礎課程中,有socket通信、多進程、多線程的課程,但這些都是基礎中的基礎,離實際開發還差得太遠。
本階段的學習以掌握工具的使用為主,包括我的開發框架和工具,提升socket通信、多進程、多線程和數據庫的實戰技術,數據庫以Oracle為主(My SQL太業余),完成一個實戰項目的開發(數據中心項目),還可以擴展到手機APP項目,豐富自己的項目經驗。
通過本階段的學習,大概可以達到我20-30%的功力,技術水平可以超過三年工作經驗的程序員,項目經驗約一至兩年。
學習完成后,不管你是什么年齡,都去找工作,問題不大。
3、精英程序員
各位在工作之后再來進入第三階段的學習,在本階段,我將重點介紹我二十年來的實戰技術和項目經驗。主要包括以下方面:
1)提升程序員的工作效率;
2)提升服務程序的效率;
3)提升服務程序的穩定性;
4)豐富項目經驗和實戰技能;
5)突破程序員的瓶勁。
本階段的目標是提升程序員的能力,培養以一當十的精英程序員。
有沒有萬人敵的技術? 有,還真有。有這么一句話:流氓不可怕,就怕流氓有文化。如果能理解這句話的含義努力的學習文化,你必定成為精英,否則就是程序猿,一世為奴。
初級階段的學習方法
1、先把第一章到第十七章的視頻全部看一遍,大概了解一下,因為有很多知識是交叉的,但是不要看課后作業。
2、再把第一章到第十七章的視頻內容學習一遍,爭取完成簡單的課后作業。
3、再再學習《gdb調試》章節,在寫程序的時候會用到它。
4、再再再把第一章到第十七章的視頻內容詳細的學習一遍,爭取完成全部的課后作業。
5、之后的內容,最好是一步一個腳印走下去,如果有什么不懂的地方,或以向別人請教或在QQ群中提出問題。
6、我的課程內容是精心整理的,某些知識點可能沒有提到應用場景,但絕對不會是沒用的知識。課程中沒有提到的知識可以了解一下,但不必深入學習,意義不大。
7、學習不要貪快,欲速則不達的道理大家應該明白,學習的重點是培養寫程序的感覺。
8、不要記筆記,不要記關鍵字,不要記函數的參數,忘了就忘了,忘了是因為沒有實戰,所以,到了項目實戰課程的時候,忘了內容很自然的會全部想起來。
9、不要用手機看視頻,看著看著就想睡覺,學習的過程是邊看邊寫,沒有看出來的程序員。趙括,知道不?就是那個空讀兵書的那個不成器的家伙,只看書看視頻不寫程序,和趙括沒什么不同。
10、翹著二郎腿,嘴里叨著煙,揮舞二指禪,一副吊兒郎當的樣子,是成不了程序員的。
11、可憐之人,必有可恨之處,已經過去的就算了,不要埋怨,也不用后悔。端正態度,現在開始學習還來得及。將比別付出更多,這很公平。
本文標題:C/C++語言學習的策略
標題來源:http://m.newbst.com/news24/100224.html
成都網站建設公司_創新互聯,為您提供標簽優化、域名注冊、網站內鏈、關鍵詞優化、云服務器、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容