作者:I_myours
文章源自:
http://blog.csdn.net/wwh578867817/article/details/48299449
這篇文章是自己編程語言學(xué)習(xí)之路的總結(jié)(還在進(jìn)行中)品姓,因?yàn)橐膊冗^不少“坑”腹备,希望能對(duì)后面的一些初學(xué)編程語言的朋友或者希望學(xué)習(xí)其他編程語言的朋友有一些幫助,避過一些不必要的坑镀岛。
我先簡(jiǎn)單的介紹下自己學(xué)習(xí)的路線:
c -> c++ -> python -> java
我比較熟悉c和c++惧互,python和java只能說能拿來用吧喊儡,說出這個(gè)是想讓看的朋友帶著審視的眼光,畢竟水平有限买喧,比如你不熟悉c++你可以參考下我的學(xué)習(xí)過程匆赃,比如你很熟悉java算柳,那么可以不參考我的,或者將你的好的方法或不同意見貼到評(píng)論區(qū)蔗蹋,一起學(xué)習(xí)囱淋,一起進(jìn)步_。
- 開頭隨便聊聊
- 聊聊這些語言的特點(diǎn)
- 聊聊這些語言看什么書
- 聊聊用什么工具編寫這些語言
開頭隨便聊聊
在我最初開始學(xué)習(xí)編程的時(shí)候皂吮,接觸的是c語言蜂筹,看的是《c 程序設(shè)計(jì)》是譚浩強(qiáng)老前輩的芦倒,起初覺得自己很笨啊,這種i++闺属,++i周霉,都不會(huì)哈哈~俱箱。
所以剛開始學(xué)習(xí)編程的時(shí)候速度也是很慢的,而且有時(shí)學(xué)到一般就學(xué)不下去了乃摹,直到我在網(wǎng)上看了一些文章跟衅,一些過來前輩的學(xué)習(xí)過程伶跷。
我知道了一本好書對(duì)你的學(xué)習(xí)來說是非常重要的
于是在網(wǎng)上買了本《c和指針》,看這本書的時(shí)候讓我有了頓醒的感覺蹈集,以前覺得迷糊的知識(shí)有些清楚了,而且了解到了更多的知識(shí)雇初。
后來學(xué)習(xí)c++的時(shí)候靖诗,就買了本《c++ primer》第四版,看了大概一個(gè)多月吧看的差不多了移盆,當(dāng)時(shí)對(duì)待課后習(xí)題的態(tài)度是大概掃一眼伤为,看著覺得自己差不多會(huì)绞愚,就過了,這種自我感覺良好是不可取的裆蒸,當(dāng)然實(shí)戰(zhàn)的時(shí)候自己嘗到了惡果糖驴,一堆錯(cuò)誤加還不熟悉這門語言。
我知道了書上的練習(xí)和課后題有多重要
自己嘗到了惡果后俺榆,咋辦装哆,重學(xué)唄,這一次下定決心重學(xué)c++萍桌,無意中在小組看到了《c++ primer》第五版凌简,學(xué)姐說是新出的号醉,我暈,這么快都出第五版了铅碍,應(yīng)該不會(huì)有什么大區(qū)別吧…胞谈,在我看了目錄后發(fā)現(xiàn)憨愉,這這這…,差這么多径密,在內(nèi)心糾結(jié)下躺孝,又整了本《c++ primer》第五版,開始學(xué)習(xí)>迕摺于个!學(xué)習(xí)過程中由于對(duì)第四版知識(shí)還有印象,所以我發(fā)現(xiàn)了第四版和第五版的差距之大捶码,c++11更新多么重大(前一陣看見一位學(xué)弟在看c++primer第三版或链,這也是我決定寫這篇文章的一個(gè)原因吧)。
我知道了過時(shí)的知識(shí)點(diǎn)就讓它過去吧,應(yīng)該學(xué)習(xí)較新的且被大眾認(rèn)可(運(yùn)用)的知識(shí)洞就。
也因?yàn)閲L到了苦頭掀淘,閱讀第五版時(shí)速度很慢革娄,敲了練習(xí)和課后題,將遇到的坑和重點(diǎn)知識(shí)都記了筆記并且記錄到了博客上匆浙,因?yàn)閏++是一門比較復(fù)雜的語言艇劫,在我忘記部分知識(shí)點(diǎn)的時(shí)候炮赦,我能夠迅速在自己的博客上找到并且想起來慌闭。
我知道了記筆記有多重要查排。
當(dāng)然記筆記是很花費(fèi)時(shí)間的一件事跋核,視自己情況吧~合是,c++學(xué)習(xí)時(shí)間比較長(zhǎng)聪全。看完了《c++ primer》后娃圆,我還看了一些其他的c++書,會(huì)在后面說到撩鹿。直到今年5月份我才開始學(xué)習(xí)python节沦,大概2周左右看完了《python核心編程》并敲了大部分課后題础爬,看的過程中非常順,感激我之前看c++作出的努力叫搁,即使很慢渴逻。
我知道了付出的努力總是值得的
下面就是做項(xiàng)目的時(shí)候要用到j(luò)ava音诫,此時(shí)我轉(zhuǎn)換了學(xué)習(xí)語言的方式纽竣,推薦一篇孟巖老師的文章:快速掌握一門語言最常用的50%
這篇文章非常好,但是適用于有類似語言基礎(chǔ)的人聋袋,類似語言基礎(chǔ)指的是比如說你會(huì)c++幽勒,這是一門面向?qū)ο蟮恼Z言港令,那么你學(xué)習(xí)python或者java就可以按照上面的來顷霹。
學(xué)習(xí)java的時(shí)候,都說《thinking in java》 好遥昧,都說學(xué)c++后學(xué)java很輕松炭臭,開始看《thinking in java》還是比較容易的,直到看到了第14章 類型信息常摧,我卡住了威创,有些真的很難理解肚豺,雖然說都是面向過程的語言,但是很多地方不一樣,并且java這門語言有自己的特點(diǎn)呛谜,如果僅僅想使用它枪萄,很容易瓷翻,二八定理,百分之百的東西我們最常用的也就百分之二十妒牙,想理解原理湘今,比如說我看看java的容器怎么實(shí)現(xiàn)的剪菱?那必須要學(xué)習(xí)一些原理的東西了孝常,此刻就沒那么容易了。
我知道了上渴,每門語言都有自己的特點(diǎn)驰贷,我們應(yīng)該找到它的特點(diǎn)來攻破它,而不是以一門語言來看其它語言次兆。
以上是我大概的學(xué)習(xí)路線芥炭,隨便聊聊恃慧,希望看完后你會(huì)有一些想法和收獲痢士。 學(xué)習(xí)本身就是一個(gè)不斷改進(jìn)和不斷進(jìn)步的過程。
聊聊這些語言的特點(diǎn)
printf("C語言\n");
個(gè)人覺得c語言作為入門的語言是非常合適的善延。
- 語法很簡(jiǎn)單易遣,沒有那么多語法糖嫌佑。如果第一次接觸編程的話屋摇,我覺得不要接觸封裝太“嚴(yán)實(shí)”的語言炮温,比如python,python是抽象層次比較高的語言了忘分,而且語法糖也不少妒峦,會(huì)讓我們迷失到一些語言中比較“炫酷”的東西兵睛,而忘記了一些本質(zhì),而且作為入門寫python這種寫習(xí)慣了寫c/c++會(huì)很難受的笛丙,畢竟什么都要自己來實(shí)現(xiàn)胚鸯,變量還要定義姜钳?- -,我不是說python不好辙浑,寫著方便也是解放人類嘛判呕,不適合入門而已送滞。
- C語言能讓我們了解到一些底層的知識(shí)累澡,語言只是計(jì)算機(jī)體系中的一部分般贼,不是說你學(xué)了語言就夠了哼蛆,還有操作系統(tǒng)腮介,網(wǎng)絡(luò)等等一些知識(shí),但是C這個(gè)除了匯編外最接近底層的語言在寫過程中能讓我們學(xué)習(xí)一些系統(tǒng)的偏底層的知識(shí)甘改,對(duì)未來學(xué)習(xí)發(fā)展是非常好的十艾。建議在linux下學(xué)習(xí)腾节。
std::cout << "C++" << std::endl;
c++是一門很復(fù)雜的語言,學(xué)好不容易康吵,用好也不容易晦嵌,對(duì)于c++而言我是不推薦快速入門的力九,快速入門只能坑自己和隊(duì)友跌前,學(xué)習(xí)c++建議靜下心來抵乓,整體過一遍,再在實(shí)戰(zhàn)中鍛煉自己茎芋。
特點(diǎn)
c++是一門面向?qū)ο蟮恼Z言田弥,但是因?yàn)橐嫒輈語言铡原,所以它不是一門純粹的面向?qū)ο蟮恼Z言燕刻,如果想學(xué)習(xí)面向?qū)ο缶幊痰乃枷肼严矗ㄗh學(xué)習(xí)java。
c++效率和性能相對(duì)來說是比較高的十绑,怎么說孽惰,python這種解釋型的語言就排除了勋功,c++開發(fā)效率比c高(STL能省你不少事),性能比java好(但是開發(fā)效率是低于java的片择,具體選擇還是看我們追求性能還是節(jié)省時(shí)間)字管。
c++適合偏底層的人員學(xué)習(xí)信不,比如后臺(tái)開發(fā)等抽活,用c語言開發(fā)效率是略底的下硕,java又都封裝好了,所以個(gè)人覺得選擇c++還是不錯(cuò)的霜幼。
c++近年來也不斷再進(jìn)步罪既,c++11/14更新了很多內(nèi)容琢感,極大提高了我們的開發(fā)效率没咙,c++17標(biāo)準(zhǔn)也在擬定中祭刚,還是蠻期待的墙牌。
System.out.println("Java");
接觸了Java后涡驮,不得不承認(rèn)Java開發(fā)起來的效率是非常高的,而且Java從事的面非常廣喜滨,學(xué)習(xí)java Web的也非常多捉捅,還有安卓等,成熟的框架和開發(fā)工具也多虽风,jdk更新到1.8棒口。
- java是一門純面向?qū)ο蟮木幊陶Z言寄月。學(xué)習(xí)的時(shí)候一定要切記无牵,會(huì)明白為什么這么設(shè)計(jì)這么寫漾肮。
- java的框架和庫以及ide非常多,善用成熟的庫和框架茎毁。
- 感興趣可以看看一些框架的源碼克懊,比如netty,能學(xué)習(xí)到許多東西七蜘,很多設(shè)計(jì)模式等都運(yùn)用在其中谭溉,個(gè)人感覺比較值得學(xué)習(xí)。
- java由于基于虛擬機(jī)JVM橡卤,所以跨平臺(tái)支持的非常好扮念。
- java健壯性非常好,異常體制非常完善蒜魄。
- 天生支持多線程扔亥,寫起多線程程序效率比較高。
print 'python'
python是一門腳本語言谈为,功能強(qiáng)大旅挤,也是庫非常多,寫起來非常簡(jiǎn)便伞鲫,開發(fā)效率高粘茄,近幾年用的人也越來越多。
- 語法簡(jiǎn)潔秕脓,使用起來非常方便柒瓣,比如用切片等處理字符串非常方便,不過因?yàn)槭墙忉屝驼Z言吠架,速度比較慢芙贫。
- 庫非常多,應(yīng)用很廣泛傍药,網(wǎng)絡(luò)爬蟲磺平,系統(tǒng)編程,web編程拐辽,數(shù)學(xué)圖形學(xué)拣挪,文本處理等等。
- 被稱為膠水語言俱诸,能把許多語言模塊結(jié)合到一起菠劝。
- 對(duì)多線程支持不好,由于GIL存在多線程只能單核運(yùn)行睁搭,不過支持進(jìn)程和協(xié)程赶诊。
水平有限笼平,上面僅僅說自己了解的一部分,不過個(gè)人認(rèn)為自己需要熟悉一門面向?qū)ο蟮恼Z言甫何,根據(jù)自己所學(xué)習(xí)的方向感興趣的方向出吹。
聊聊這些語言看什么書
要學(xué)會(huì)自己能分辨什么書好,看一本好書真的是節(jié)約自己時(shí)間罢尬埂捶牢!我一般是上豆瓣看評(píng)分評(píng)論,網(wǎng)上搜索看下評(píng)價(jià)等巍耗,再看看目錄秋麸,覺得不錯(cuò)才入手。
printf("C語言\n");
個(gè)人覺得挑一本完整看完就行亲族。
std::cout << "C++" << std::endl;
《C++ primer》第五版看的話一定看第五版炒考,想比較于第四版更新很多東西。內(nèi)容非常細(xì)霎迫,課后題也非常好斋枢,便于自己查漏補(bǔ)缺。
《Effective C++》里面是按照條款的方式列出c++的知識(shí)點(diǎn)和坑點(diǎn)以及一些技巧知给,可以作為進(jìn)階書瓤帚。
《Effective STL》stl是C++最重要的一個(gè)組成部分,如何用好可以看看這本書涩赢。
《深度探索c++對(duì)象模型》也是c++進(jìn)階的一本書戈次,主要是了解c++對(duì)象的模型內(nèi)部是怎樣的。 比如你定義一個(gè)類筒扒,它內(nèi)部是如何表示的怯邪。
《STL 源碼剖析》上面的如果看完了,可以進(jìn)階這本了花墩,我自己僅僅看過一小部分悬秉,功力不夠,比較難看懂观游,主要是模板編程的技巧和數(shù)據(jù)結(jié)構(gòu)搂捧。
參考順序:c++primer -> effective c++ -> effective stl -> 深度探索c++對(duì)象模型 -> STL源碼剖析驮俗,后兩本順序隨意懂缕。
System.out.println("Java");
《Thinking in java》絕對(duì)的好書,每一句話都值得細(xì)細(xì)品讀王凑,不過不適合入門 搪柑,需要一定的基本功聋丝。
《瘋狂java講義》我看了一小部分,覺得還不錯(cuò)工碾,內(nèi)容比較易懂弱睦,不像thinking in java這種需要琢磨一下,適合入門渊额。
《Java核心技術(shù)卷1》評(píng)價(jià)也比較好况木,不過我沒有看過,已經(jīng)出到第九版了旬迹。
《Effective Java》上面其中一本看完差不多就可以看這個(gè)了火惊,java的進(jìn)階書。
thinking in java奔垦,java核心技術(shù)編程卷1屹耐,瘋狂java講義選一本看就行了,沒面向?qū)ο缶幊袒A(chǔ)椿猎,不建議看thinking in java惶岭。看過可以看看effective java犯眠。
print 'python'
《python核心編程》入門還不錯(cuò)按灶,內(nèi)容也比較廣泛,還有socket阔逼,web編程兆衅,數(shù)據(jù)庫編程等,不過錯(cuò)別字有些多嗜浮。看的時(shí)候發(fā)現(xiàn)了好幾處危融。
《python cookbook》python編程技巧大全畏铆,進(jìn)階用。
python學(xué)習(xí)手冊(cè)貌似也不錯(cuò)吉殃,基礎(chǔ)挑一本看就行辞居,進(jìn)階可以看看python cookbook。
總結(jié):
下工夫?qū)W習(xí)一門語言也是蠻費(fèi)精力的蛋勺,所以還是建議根據(jù)自己的興趣來選擇學(xué)習(xí)瓦灶,比如你喜歡java web,那么就下功夫?qū)Wjava抱完,c++和python了解即可贼陶,或者不了解也沒什么大礙。
不要貪多,尤其同時(shí)學(xué)習(xí)兩門碉怔,會(huì)亂的
不要貪多烘贴,尤其同時(shí)學(xué)習(xí)兩門,會(huì)亂的
不要貪多撮胧,尤其同時(shí)學(xué)習(xí)兩門桨踪,會(huì)亂的重要的事情說3遍
推薦這些書是自己看過,或者搜索過的芹啥。個(gè)人覺得比較好的锻离,不代表我推薦的就是好的,大家在選擇的時(shí)候可以參考墓怀,實(shí)際看還是要自己去調(diào)查纳账,多問問前輩有經(jīng)驗(yàn)的人等,看看目錄適合不適合自己捺疼,不要盲目隨便挑本就開干疏虫。
聊聊用什么工具編寫這些語言
c/c++
個(gè)人覺得是vim啦~,學(xué)習(xí)編程還是linux下好啤呼。
編譯器gcc/clang都行卧秘。調(diào)試用gdb
vim
java
比較流行eclipse,個(gè)人覺得idea也不錯(cuò)官扣。
python
寫的不是很多翅敌,我是用vim寫的。
vim配置好是非常好用的惕蹄◎卿蹋可以學(xué)習(xí)一下。
路是自己走出來的卖陵,適合別人的不一定適合自己遭顶,不過參考下還是可以的,希望能幫助到看的朋友泪蔫。