回答“在校C++學生之困惑”的幾個問題

問題一:

“今天翻開《Thinking in C++》第二卷,傻眼,第一章就是異常,我最害怕的東東了。。往後翻,防禦性編程。。運行時類型識別,設計模式……等太多的東西了……這些東西作爲學生我們有必要深究嗎”

   1、如果是編程初學者,挑書要特別講究。《Thinking in/ C++》不適合初學者。

   2、異常、防禦性編程、運行時類型識別,設計模式……這些都不是C++特有的,學習Java,C#,Python、Delphi,也有這些知識點,並且在這些語言中的重要度更高。比如“異常”就很好玩,在C++中它屬於“高級知識”,在Java中,它變成基礎知識。很多C++項目可以不使用異常許多年,但在Java項目中,請試試。再如運行時類型識別,在C++中,RTTI(Run-Time Type Identification/Information)是非常薄的一層,在Java或Delphi或C#中呢?是厚厚的一層。

   防禦性編程呢?屬於基礎,差不多在你學會把代碼排版得漂亮一些之後,就應該開始接觸這個概念了。(參看《代碼大全》)

   所以一句話:現在的編程專業的大學生在畢業前,無論你是學的是C++還是Java,還是C#還是Delphi還是Python等,剛好這裏提到的幾個知識點: “防禦性編程呢”“異常”、“RTTI”、“設計模式”,存在一個你還沒有“學過”它們,那就是你對不起自己這個專業和自己的大學時光了——這句話回答“這些東西作爲學生我們有必要深究嗎”。

問題二:

“……學的肯定越多越深越好啦,可是作爲學生的我們畢竟時間有限。……”

   唉,圍城吧。你可能不知道,畢業以後的人,10有9個會反過來覺得,當學生的時候,沒錢沒勢沒女人,唯一有,並且多得長草的就是時間,特別是可以安排來學習的時間。老闆有時會批我們沒有進步,不思進取……回答吧:“其實作爲一個要養家餬口的程序員,畢竟時間有限……”。

問題三:

“我們的首要目標肯定是找到一個和自己本專業對口的工作,然後在工作期間繼續深造……”

這個是事實,但不能做爲一個想法。更合理的想法還是儘量多學,然後在面試中脫穎而出。可能會想起莊子一句話:“吾生也有涯,知也無涯,以有涯隨無涯,殆已。”一時間感覺悲涼無限,但莊子雖然不會編程,在當時卻也是個大學問家。這感嘆不適合於大學畢業時發的。你要上午學C,中午學C#,晚上學C++,那沒話說,但認準一門語言方向,先粗通(不是精通)語言基本語法,然後去機房買100小時的機時,一頭紮下去,出來時你還說“第一章就是異常,我最害怕的東東了”,那我們約好去找Bjarne Stroustrup理論一下,看看能不能在下一版C++的標準裏,把“異常”給它去掉。

問題四:

“……所以我這裏想問的就是作爲學生的我們學習掌握C++的哪些東西找工作就足夠了呢?”

找工作時有時像談戀愛(嚴肅的那種),想找一個女人作爲人生伴侶,其實比找工作更難,也更嚴肅,但要口袋裏有多少錢,纔可以找到真愛呢?現在是經濟社會,沒有人會認爲錢是俗氣的,相反,準備好更充足的錢纔去考慮愛一個女人,其實也是體現“真愛”和“責任”的一種表現。

但,到底要口袋有多少錢了,才能開始找女朋友呢?這問題得一分爲三:

第一種情況,你丫的窮得天天在街頭翻垃圾桶,卻癡心地在學校門口候到一位妹妹,真誠地向人家求愛:“嫁給我吧,我會還你一個美好的人生……”,然後人家禮貌地拒了你,你就在心裏大罵:“這物慾橫流的社會!連在校妹妹的心都只認錢了!”。

第二種情況,你又丫的一次,但這次簡直就是銜着金勺出生,大學剛畢業就開公司,兩個月後進入全球Top500。於是乎天天有女人來追你,包括N多學生妹,於是乎你又在心裏不屑:“這物慾橫流的社會!連在校妹妹的心都只認錢了!”

找工作不也這樣嗎?如果你的大學時光全部奉獻給和學習無關的事業,兩手空空走出學校大門,然後一臉真誠地對着面試官說:“給我一個機會吧,我一定還您一個稱職的員工……”。人家肯定要禮貌地拒了你,你就別罵什麼了嘛。

再一種極端,基本你就是一個才華橫溢的天才,於是有一大幫公司搶着要你,你雖然有權利,但最好別因此把自己擺成特別超凡脫俗的樣。

最後是中間情況了——多少錢適合談戀愛啊?在此時,這個問題基本是僞命題了。談戀愛不是有錢就行的。大體上,錢越多越好,但你以爲掏出一疊錢就想去拍人家的頭,那你就等着挨刀吧。女孩還會看你上進不上進,性格好不好?孝順父母嗎?人聰明嗎?還有,長得帥嗎等等因素。她要和你過一輩子,現在雖然你還不是很有錢,但她相信自己的眼光,相信你有這個發展空間與潛力。如果你錢比別人是多一些,但又賭又嫖,誰理你啊。這些沒問題了,餘的下就是不太可控的東西了,比如“機會”啊,“緣份”啊……

對應到找工作,學會多少知識適合找工作呢?你可以說女孩是勢利的,也可以說女孩子是純潔的。全看你的感受。同樣,別把一家公司只往勢利了去想。大體上,擁有越多真本事,就有越多公司喜歡,但公司面對兩個人,淘汰掉知識多的那位的情況,也比比皆是(否則招聘工作也太簡單了)。

掌握C++的哪些東西找工作就足夠了呢”,這個問題就這樣了:我甚至認爲大學四年至少要熟練兩門語言,千萬別在存款只有4位數時,就很憂傷地說:“親愛的,我們要這麼多錢幹嘛呢”。

問題五:

“……關鍵:在有限的時間裏的我們需要學習多門技術(一門熟練的編程語言,操作系統,網絡……)”

關鍵是,一門熟練的編程語言、操作系統(我知道是原理課),網絡……這些都是大學計算機(軟件)專業的主修課程,幹嘛老說“在有限的時間裏”呢?

問題六:

“ 我想我們每一位學習C++的同學身邊都不乏有學JAVA,Delphi,VB,VC,C#的同學吧。看他們經過一段努力就可以做出一個漂亮的xxx系統來,羨慕嗎?而學習C++很長一段時間效果總是不明顯。真不知在面試的時候我們的工作簡歷上該寫些什麼上去才能吸引考官的眼球呢。”

那些“漂亮”的XXX系統,它的作用基本上就是讓簡歷看起來豐滿一些(是鹽水?還是硅膠?),招聘時,沒有哪個技術面試官,會覺得一個剛畢業的學生能“經過一段努力就可以做出一個漂亮的系統”。以100分算,一個畢業生在紙上寫着他完成(通常是參與完成)一套“成績管理系統”、“圖書館管理系統”等等,能添點得分,但就是到1~3分,打死了就是加5分。但如果因爲這些資料,面試官會深入問一些問題,結果回答得有問題,可能是直接砍掉10分。

問題七:

“看着同學們一個個XXX管理系統寫上去,自己卻不知如何下筆。因爲實在沒有可寫的東西。。對於這點我們又該如何去學習C++呢?我們目前可以用C++去做哪些東西,那些項目去吸引考官的眼球呢,去作爲大公司的敲門磚呢?”

光批判的回答,不是好回答。對於C++新畢業生,你覺得你沒有時間學習做GUI界面的,是會被減分(因爲“沒有時間”)。但你接下來說,我沒時間,是因爲我覺得《編譯原理》這門很有意思,就比別的同學花了比較多的時間在上面了,我做過一個程序,可以計算普通的四則運算。於是主考官開始問你一些詞法解析和語法分析的問題,你答上,直接被加10分。主考又問:你是用遞歸實現還是自己寫棧結構實現?你說是後者,於是再加20分……

問題八:

前兩天看了一位老師發表的筆記,上面列出了好多大的軟件基本上主流編程語言都是C++,甚至一些全部是用C++寫出來的。心中不免有一絲的得意。但這些軟件對於作爲學生的我們只能望而興嘆哈。我們可以拿何作爲練手的項目呢。貌似C++都是來做大軟件的。DOS下的程序就不說了。關鍵::C++程序員用何項目去練技術?(書上的那些DOS程序就不說了。這裏說的是可以稱得上是項目的,小項目也OK)。

《C++ Primer》上的習題就是很可以加分的小項目。“貌似C++都是來做大軟件的”說這話有點感情用事了。我個人還是建議學習C++,既要“功”,也要“武”。大學時光,就算是自學C++也完全夠打下不錯基本功,並且!掌握大量的“武”。這一點詳細內容,建議點擊本段的鏈接看我另一篇筆記吧。或者請關注我即將出版的《白話 C++》,這裏可以試讀

 

問題九:

“目前市面上的公司可以說是成羣,幾人,十幾人就可以成爲一個公司,我想這樣的公司招程序員就 是爲了編碼的。來了不能立即上手的。他們一般都不會考慮,相比而言學生只能退後了……並且這些公司都是爲了做些小軟件的……”

這個簡單,就業行勢是不好(原因主要還是僧多粥少),所以大家可能真的遇上過挫折,或者沒真的遇上,但看到聽到別人遇上,於是心理有些緊張……所以會有些判斷失誤。前面你說的“貌似C++都是來做大軟件的”就是錯的。中小公司需要C/C++也很多。並且同樣是新畢業生,學C++的人數少,熟練的更少,所以進入公司後,拿的錢起點就比使java或C#的畢業生高(200~2000),這也是事實。

 

問題十:

“……而對於那些做大軟件的公司,像微軟中國,谷歌中國,騰訊等都是好多C++程序員的一個夢。當然可以實現的哈。努力就OK了。看人了……”。

也是我的一個夢……一邊做夢,一邊生活吧。

 

問題十一:

“去看了好多C++公司的招聘廣告,模式就那一個,第一個就是精通C/C++.何爲精通?這真不是一個確定的標準,但也總有一個大概的界線,對作爲學生的我們這個標準又是什麼呢?”

問題四的回答可以用上。至於學習C/C++何爲精通,我教你,永遠(我說的永遠是指一生)不要在簡歷上寫自己“精通C/C++”,謙虛不是原因,而是因爲如果不這樣,極可能會引發衆怒(面試你的人,陡然將問題的難度系統提兩個檔,而你卻不知道爲什麼)。

 

問題十二:

“熟悉STL。對於STL,很多人都理解成就是容器,像vector什麼的。但有些人說不是那麼簡單。這就糊塗了。對這方面接觸少。不太明白。請幫忙解析。”

C++標準都10年了,STL幾乎就是C++的上半身。除非有一天,女孩會喜歡一個只愛她下半身的男人,否則學C++不懂STL,你還是改口說你比較懂C,C++只是偶爾用用,這樣會贏得更多尊重。

 

問題十三:

“……衆所周知要想作爲一個優秀的程序員,操作系統,網絡。數據結構和算法可謂是必須基礎……”

操作系統、網絡、數據結構與算法,這些都是咱學校裏開的課。有人愛罵中國大學了教育如何不行,但我認爲只能罵一半,咱們大學裏安排的基礎類課程,都還是不錯的(我說的“不錯”,並不是以學完以後能不能用上作標準),相對差一些倒是在應用類課程上差了些。當然,這倒不是在表揚教育官員們多們重視基礎教育,只能說是“基礎課程”本來就不容易過時。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章