聊聊編程語言學(xué)習(xí)之路

作者:I_myours
文章源自:
http://blog.csdn.net/wwh578867817/article/details/48299449

這篇文章是自己編程語言學(xué)習(xí)之路的總結(jié)(還在進(jìn)行中),因為也踩過不少“坑”,希望能對后面的一些初學(xué)編程語言的朋友或者希望學(xué)習(xí)其他編程語言的朋友有一些幫助,避過一些不必要的坑。

我先簡單的介紹下自己學(xué)習(xí)的路線:

c -> c++ -> python -> java

我比較熟悉c和c++,python和java只能說能拿來用吧,說出這個是想讓看的朋友帶著審視的眼光,畢竟水平有限,比如你不熟悉c++你可以參考下我的學(xué)習(xí)過程,比如你很熟悉java,那么可以不參考我的,或者將你的好的方法或不同意見貼到評論區(qū),一起學(xué)習(xí),一起進(jìn)步_。

  • 開頭隨便聊聊
  • 聊聊這些語言的特點
  • 聊聊這些語言看什么書
  • 聊聊用什么工具編寫這些語言

開頭隨便聊聊

在我最初開始學(xué)習(xí)編程的時候,接觸的是c語言,看的是《c 程序設(shè)計》是譚浩強(qiáng)老前輩的,起初覺得自己很笨啊,這種i++,++i,都不會哈哈~。

所以剛開始學(xué)習(xí)編程的時候速度也是很慢的,而且有時學(xué)到一般就學(xué)不下去了,直到我在網(wǎng)上看了一些文章,一些過來前輩的學(xué)習(xí)過程。

我知道了一本好書對你的學(xué)習(xí)來說是非常重要的

于是在網(wǎng)上買了本《c和指針》,看這本書的時候讓我有了頓醒的感覺,以前覺得迷糊的知識有些清楚了,而且了解到了更多的知識。

后來學(xué)習(xí)c++的時候,就買了本《c++ primer》第四版,看了大概一個多月吧看的差不多了,當(dāng)時對待課后習(xí)題的態(tài)度是大概掃一眼,看著覺得自己差不多會,就過了,這種自我感覺良好是不可取的,當(dāng)然實戰(zhàn)的時候自己嘗到了惡果,一堆錯誤加還不熟悉這門語言。

我知道了書上的練習(xí)和課后題有多重要

自己嘗到了惡果后,咋辦,重學(xué)唄,這一次下定決心重學(xué)c++,無意中在小組看到了《c++ primer》第五版,學(xué)姐說是新出的,我暈,這么快都出第五版了,應(yīng)該不會有什么大區(qū)別吧…,在我看了目錄后發(fā)現(xiàn),這這這…,差這么多,在內(nèi)心糾結(jié)下,又整了本《c++ primer》第五版,開始學(xué)習(xí)??!學(xué)習(xí)過程中由于對第四版知識還有印象,所以我發(fā)現(xiàn)了第四版和第五版的差距之大,c++11更新多么重大(前一陣看見一位學(xué)弟在看c++primer第三版,這也是我決定寫這篇文章的一個原因吧)。

我知道了過時的知識點就讓它過去吧,應(yīng)該學(xué)習(xí)較新的且被大眾認(rèn)可(運(yùn)用)的知識。

也因為嘗到了苦頭,閱讀第五版時速度很慢,敲了練習(xí)和課后題,將遇到的坑和重點知識都記了筆記并且記錄到了博客上,因為c++是一門比較復(fù)雜的語言,在我忘記部分知識點的時候,我能夠迅速在自己的博客上找到并且想起來。

我知道了記筆記有多重要。

當(dāng)然記筆記是很花費(fèi)時間的一件事,視自己情況吧~,c++學(xué)習(xí)時間比較長。看完了《c++ primer》后,我還看了一些其他的c++書,會在后面說到。直到今年5月份我才開始學(xué)習(xí)python,大概2周左右看完了《python核心編程》并敲了大部分課后題,看的過程中非常順,感激我之前看c++作出的努力,即使很慢。

我知道了付出的努力總是值得的

下面就是做項目的時候要用到j(luò)ava,此時我轉(zhuǎn)換了學(xué)習(xí)語言的方式,推薦一篇孟巖老師的文章:快速掌握一門語言最常用的50%

這篇文章非常好,但是適用于有類似語言基礎(chǔ)的人,類似語言基礎(chǔ)指的是比如說你會c++,這是一門面向?qū)ο蟮恼Z言,那么你學(xué)習(xí)python或者java就可以按照上面的來。

學(xué)習(xí)java的時候,都說《thinking in java》 好,都說學(xué)c++后學(xué)java很輕松,開始看《thinking in java》還是比較容易的,直到看到了第14章 類型信息,我卡住了,有些真的很難理解,雖然說都是面向過程的語言,但是很多地方不一樣,并且java這門語言有自己的特點,如果僅僅想使用它,很容易,二八定理,百分之百的東西我們最常用的也就百分之二十,想理解原理,比如說我看看java的容器怎么實現(xiàn)的?那必須要學(xué)習(xí)一些原理的東西了,此刻就沒那么容易了。

我知道了,每門語言都有自己的特點,我們應(yīng)該找到它的特點來攻破它,而不是以一門語言來看其它語言。

以上是我大概的學(xué)習(xí)路線,隨便聊聊,希望看完后你會有一些想法和收獲。 學(xué)習(xí)本身就是一個不斷改進(jìn)和不斷進(jìn)步的過程。

聊聊這些語言的特點

printf("C語言\n");

個人覺得c語言作為入門的語言是非常合適的。

  1. 語法很簡單,沒有那么多語法糖。如果第一次接觸編程的話,我覺得不要接觸封裝太“嚴(yán)實”的語言,比如python,python是抽象層次比較高的語言了,而且語法糖也不少,會讓我們迷失到一些語言中比較“炫酷”的東西,而忘記了一些本質(zhì),而且作為入門寫python這種寫習(xí)慣了寫c/c++會很難受的,畢竟什么都要自己來實現(xiàn),變量還要定義?- -,我不是說python不好,寫著方便也是解放人類嘛,不適合入門而已。
  2. C語言能讓我們了解到一些底層的知識,語言只是計算機(jī)體系中的一部分,不是說你學(xué)了語言就夠了,還有操作系統(tǒng),網(wǎng)絡(luò)等等一些知識,但是C這個除了匯編外最接近底層的語言在寫過程中能讓我們學(xué)習(xí)一些系統(tǒng)的偏底層的知識,對未來學(xué)習(xí)發(fā)展是非常好的。建議在linux下學(xué)習(xí)。
std::cout << "C++" << std::endl;

c++是一門很復(fù)雜的語言,學(xué)好不容易,用好也不容易,對于c++而言我是不推薦快速入門的,快速入門只能坑自己和隊友,學(xué)習(xí)c++建議靜下心來,整體過一遍,再在實戰(zhàn)中鍛煉自己。

特點

c++是一門面向?qū)ο蟮恼Z言,但是因為要兼容c語言,所以它不是一門純粹的面向?qū)ο蟮恼Z言,如果想學(xué)習(xí)面向?qū)ο缶幊痰乃枷?,建議學(xué)習(xí)java。

c++效率和性能相對來說是比較高的,怎么說,python這種解釋型的語言就排除了,c++開發(fā)效率比c高(STL能省你不少事),性能比java好(但是開發(fā)效率是低于java的,具體選擇還是看我們追求性能還是節(jié)省時間)。

c++適合偏底層的人員學(xué)習(xí),比如后臺開發(fā)等,用c語言開發(fā)效率是略底的,java又都封裝好了,所以個人覺得選擇c++還是不錯的。

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。

  1. java是一門純面向?qū)ο蟮木幊陶Z言。學(xué)習(xí)的時候一定要切記,會明白為什么這么設(shè)計這么寫。
  2. java的框架和庫以及ide非常多,善用成熟的庫和框架。
  3. 感興趣可以看看一些框架的源碼,比如netty,能學(xué)習(xí)到許多東西,很多設(shè)計模式等都運(yùn)用在其中,個人感覺比較值得學(xué)習(xí)。
  4. java由于基于虛擬機(jī)JVM,所以跨平臺支持的非常好。
  5. java健壯性非常好,異常體制非常完善。
  6. 天生支持多線程,寫起多線程程序效率比較高。

print 'python'

python是一門腳本語言,功能強(qiáng)大,也是庫非常多,寫起來非常簡便,開發(fā)效率高,近幾年用的人也越來越多。

  1. 語法簡潔,使用起來非常方便,比如用切片等處理字符串非常方便,不過因為是解釋型語言,速度比較慢。
  2. 庫非常多,應(yīng)用很廣泛,網(wǎng)絡(luò)爬蟲,系統(tǒng)編程,web編程,數(shù)學(xué)圖形學(xué),文本處理等等。
  3. 被稱為膠水語言,能把許多語言模塊結(jié)合到一起。
  4. 對多線程支持不好,由于GIL存在多線程只能單核運(yùn)行,不過支持進(jìn)程和協(xié)程。

水平有限,上面僅僅說自己了解的一部分,不過個人認(rèn)為自己需要熟悉一門面向?qū)ο蟮恼Z言,根據(jù)自己所學(xué)習(xí)的方向感興趣的方向。

聊聊這些語言看什么書

要學(xué)會自己能分辨什么書好,看一本好書真的是節(jié)約自己時間??!我一般是上豆瓣看評分評論,網(wǎng)上搜索看下評價等,再看看目錄,覺得不錯才入手。

printf("C語言\n");

《C和指針》
《C和指針》算自己真正的一本編程啟蒙書吧。

C程序設(shè)計語言
《C 程序設(shè)計語言》C語言經(jīng)典,評價很高。

個人覺得挑一本完整看完就行。

std::cout << "C++" << std::endl;

《c++

《C++ primer》第五版看的話一定看第五版,想比較于第四版更新很多東西。內(nèi)容非常細(xì),課后題也非常好,便于自己查漏補(bǔ)缺。

《effective

《Effective C++》里面是按照條款的方式列出c++的知識點和坑點以及一些技巧,可以作為進(jìn)階書。

Effective STL

《Effective STL》stl是C++最重要的一個組成部分,如何用好可以看看這本書。

《深度探索c++對象模型》

《深度探索c++對象模型》也是c++進(jìn)階的一本書,主要是了解c++對象的模型內(nèi)部是怎樣的。 比如你定義一個類,它內(nèi)部是如何表示的。

《STL

《STL 源碼剖析》上面的如果看完了,可以進(jìn)階這本了,我自己僅僅看過一小部分,功力不夠,比較難看懂,主要是模板編程的技巧和數(shù)據(jù)結(jié)構(gòu)。

參考順序:c++primer -> effective c++ -> effective stl -> 深度探索c++對象模型 -> STL源碼剖析,后兩本順序隨意。

System.out.println("Java");

《Thinking in java》

《Thinking in java》絕對的好書,每一句話都值得細(xì)細(xì)品讀,不過不適合入門 ,需要一定的基本功。

《瘋狂java講義》

《瘋狂java講義》我看了一小部分,覺得還不錯,內(nèi)容比較易懂,不像thinking in java這種需要琢磨一下,適合入門。

《Java核心技術(shù)卷1》

《Java核心技術(shù)卷1》評價也比較好,不過我沒有看過,已經(jīng)出到第九版了。

《Effective Java》

《Effective Java》上面其中一本看完差不多就可以看這個了,java的進(jìn)階書。

thinking in java,java核心技術(shù)編程卷1,瘋狂java講義選一本看就行了,沒面向?qū)ο缶幊袒A(chǔ),不建議看thinking in java??催^可以看看effective java。

print 'python'

《python核心編程》

《python核心編程》入門還不錯,內(nèi)容也比較廣泛,還有socket,web編程,數(shù)據(jù)庫編程等,不過錯別字有些多??吹臅r候發(fā)現(xiàn)了好幾處。

《python cookbook》

《python cookbook》python編程技巧大全,進(jìn)階用。

python學(xué)習(xí)手冊貌似也不錯,基礎(chǔ)挑一本看就行,進(jìn)階可以看看python cookbook。

總結(jié):

下工夫?qū)W習(xí)一門語言也是蠻費(fèi)精力的,所以還是建議根據(jù)自己的興趣來選擇學(xué)習(xí),比如你喜歡java web,那么就下功夫?qū)Wjava,c++和python了解即可,或者不了解也沒什么大礙。

不要貪多,尤其同時學(xué)習(xí)兩門,會亂的
不要貪多,尤其同時學(xué)習(xí)兩門,會亂的
不要貪多,尤其同時學(xué)習(xí)兩門,會亂的重要的事情說3遍

推薦這些書是自己看過,或者搜索過的。個人覺得比較好的,不代表我推薦的就是好的,大家在選擇的時候可以參考,實際看還是要自己去調(diào)查,多問問前輩有經(jīng)驗的人等,看看目錄適合不適合自己,不要盲目隨便挑本就開干。

聊聊用什么工具編寫這些語言

c/c++

個人覺得是vim啦~,學(xué)習(xí)編程還是linux下好。
編譯器gcc/clang都行。調(diào)試用gdb

vim

java

比較流行eclipse,個人覺得idea也不錯。

python

寫的不是很多,我是用vim寫的。

vim配置好是非常好用的。可以學(xué)習(xí)一下。

路是自己走出來的,適合別人的不一定適合自己,不過參考下還是可以的,希望能幫助到看的朋友。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容