作者 謝恩銘。轉(zhuǎn)載請(qǐng)注明出處署浩。
原文:http://www.reibang.com/p/c2b85495cea6
內(nèi)容簡(jiǎn)介
- 前言
- 建議
- 入門(mén)推薦
- 分析
- 總結(jié)
1. 前言
現(xiàn)在 IT 行業(yè)越來(lái)越火爆筋栋,許多朋友都愿意入門(mén)「挨踢」器联,噢婿崭,不,當(dāng)程序員渣磷。
那么問(wèn)題來(lái)了醋界,對(duì)剛接觸這個(gè)領(lǐng)域的新人來(lái)說(shuō)提完,選什么語(yǔ)言作為第一門(mén)語(yǔ)言呢?這是很關(guān)鍵的問(wèn)題逐样,因?yàn)檫@很可能決定了這位新人是「從入門(mén)到繼續(xù)」還是「從入門(mén)到放棄」打肝。
2. 建議
我推薦:或者從 C 語(yǔ)言入門(mén),或者從 Python 入門(mén)争便。當(dāng)然滞乙,也不排除從 Java 入門(mén)。
這里又得分情況來(lái)說(shuō):
如果你只是想用編程來(lái)完成一些簡(jiǎn)單的任務(wù)斩启,目標(biāo)不是深入技術(shù),那么選 Python炕置。有很多好處男韧,入門(mén)快,成就感來(lái)得快甚纲,高效好用介杆。
如果你要深入編程韭寸,想成為技術(shù)專(zhuān)家,那么選 C 語(yǔ)言赴背。
如果你還不清楚自己的未來(lái)發(fā)展方向晶渠,那請(qǐng)先弄清自己想要做什么再來(lái)學(xué)編程。如果實(shí)在是前路迷茫便瑟,懵懂未知到涂,那么從 C 語(yǔ)言入門(mén)爽彤。因?yàn)槟惆?C 語(yǔ)言學(xué)了,你會(huì)發(fā)現(xiàn) Python 入門(mén)太簡(jiǎn)單了往核;反之不然嚷节。
3. 入門(mén)推薦
如果你選 Python 作為第一門(mén)編程語(yǔ)言虎锚,請(qǐng)看我的 最近迫切應(yīng)學(xué)的編程語(yǔ)言 這篇文章窜护,說(shuō)的就是 Python 的好處和入門(mén)建議柱徙。
如果你選 C 語(yǔ)言作為第一門(mén)入門(mén)語(yǔ)言奇昙,雖然開(kāi)始會(huì)有些「疼痛」,但是至久必成為你的幫助羊初。請(qǐng)看我的 《C語(yǔ)言探索之旅》 系列教程來(lái)入門(mén)什湘。也可以看《C Primer Plus》這本書(shū)來(lái)入門(mén)闽撤。
4. 分析
總結(jié)一下 C 語(yǔ)言作為第一門(mén)編程語(yǔ)言的好處:
1. 基礎(chǔ)深厚
現(xiàn)在你看到的大部分編程語(yǔ)言都是借鑒了 C 語(yǔ)言或者用 C 語(yǔ)言寫(xiě)成的,比如 Java柳恐,C++热幔,C#绎巨,Python蠕啄,Go,JavaScript和媳,Objective-C留瞳,Swift骚秦,PHP璧微,Perl前硫,等等荧止。
幾乎所有的操作系統(tǒng)都用到了 C 語(yǔ)言,比如 Windows嗤详,Unix瓷炮,Linux,macOS苍狰,iOS淋昭,Android安接,等等。
可以說(shuō)歇式,C 語(yǔ)言影響了全球的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)胡野。改編《指環(huán)王》的經(jīng)典臺(tái)詞就是「One language to rule them all」(意思是“一門(mén)語(yǔ)言統(tǒng)領(lǐng)其他語(yǔ)言”)(《指環(huán)王》原來(lái)的詩(shī)是「One ring to rule them all」(意思是“一枚戒指統(tǒng)領(lǐng)其他戒指”))。
當(dāng)然了龙巨,C 語(yǔ)言最初是用 B 語(yǔ)言寫(xiě)的旨别,但今天卻幾乎沒(méi)有人在用 B 語(yǔ)言了汗茄。可見(jiàn) C 語(yǔ)言的飛躍胆屿,其源碼設(shè)計(jì)之精良。
當(dāng)時(shí)的程序員(如 C 語(yǔ)言之父 Dennis Ritchie 丹尼斯.里奇)真的是超級(jí)厲害环鲤,我這種程度實(shí)在連遠(yuǎn)眺都看不到他們的項(xiàng)背啊憎兽。
2. 難度適中
C 語(yǔ)言比 Python,Java 之類(lèi)難入門(mén)西剥,但是比 C++ 簡(jiǎn)單很多瞭空。
我覺(jué)得 C++ 不適合作第一門(mén)編程語(yǔ)言疗我,太復(fù)雜,東西太多旧找,基本就是「從入門(mén)到放棄」麦牺。要學(xué) C++ 最好等入門(mén)編程之后。當(dāng)然魏颓,如果你一定要用 C++ 作為第一門(mén)編程語(yǔ)言潮秘,我也沒(méi)資格反對(duì)枕荞。
相比之下躏精,C 語(yǔ)言的難度適中鹦肿,也沒(méi)有那么可怕。最讓人害怕的指針瞭吃、位運(yùn)算(嵌入式里面比較多左移右移,需要數(shù)學(xué)功底還可以股冗,不然那些十六進(jìn)制和蚪,二進(jìn)制會(huì)讓人頭暈的)、自定義數(shù)據(jù)結(jié)構(gòu)怯疤、內(nèi)存分配什么的集峦,其實(shí)也還好抠刺,熟能生巧。
3. 嵌入式的主要語(yǔ)言
C 語(yǔ)言在嵌入式領(lǐng)域算是舉足輕重了凯沪,特別是涉及到比較底層的嵌入式买优,當(dāng)然你說(shuō) Python 也可以用于樹(shù)莓派這樣的開(kāi)發(fā)板,但是你不會(huì) C 語(yǔ)言的話烘跺,一般去應(yīng)聘嵌入式的工作還是比較困難的滤淳。
現(xiàn)在這個(gè)時(shí)代砌左,隨著可穿戴設(shè)備和其他設(shè)備日益普及,嵌入式的前景肯定不錯(cuò)屁擅。
我個(gè)人認(rèn)為:人工智能和嵌入式(物聯(lián)網(wǎng))是之后比較火熱的領(lǐng)域产弹。
要入門(mén)和提高嵌入式,可以參看我的這篇文章:什么是嵌入式編程胶果?如何入門(mén)和提高早抠?
4. 理解計(jì)算機(jī)
作為程序員,如果你想要進(jìn)階為高級(jí)甚至偉大乃至史詩(shī)級(jí)別的程序員吼过,一定得對(duì)計(jì)算機(jī)原理咪奖,編譯原理等等有所了解。
C 語(yǔ)言雖然也算是高層語(yǔ)言趟佃,但相對(duì)于 Python昧捷,Java 等,C 語(yǔ)言更接近底層序矩。
入門(mén)了 C 語(yǔ)言簸淀,你會(huì)對(duì)計(jì)算機(jī)的內(nèi)存毒返、寄存器等原理有一定了解(推薦之后閱讀 《深入理解計(jì)算機(jī)系統(tǒng)》 這本書(shū),里面的示例代碼是用 C 語(yǔ)言寫(xiě)的)劲绪。
如果有時(shí)間盆赤,最好也入門(mén)一下匯編語(yǔ)言,可以參看我寫(xiě)的文章:學(xué)習(xí)匯編對(duì)編程有什么幫助祷安?如何學(xué)習(xí)
我學(xué)生時(shí)代就是先學(xué)了 C 語(yǔ)言,然后跟著清華大學(xué)王爽老師的《匯編語(yǔ)言》(那時(shí)是第二冊(cè),現(xiàn)在已經(jīng)是第三冊(cè)了吧)學(xué)了匯編霍骄,特別淺顯易懂淡溯,寫(xiě)得很棒。學(xué)完之后米间,發(fā)現(xiàn)對(duì)內(nèi)存膘侮,位移,寄存器等等操作都有了撥云見(jiàn)霧的認(rèn)識(shí)逻锐,會(huì)感覺(jué)自己慢慢地領(lǐng)悟了編程昧诱。
5. 學(xué)完 C 語(yǔ)言后學(xué)其他語(yǔ)言會(huì)很快
這點(diǎn)我深有體會(huì)所袁,我自從借 C 語(yǔ)言入門(mén)了編程之后,后面再學(xué)習(xí) Java蜈亩,PHP局劲,C++(還是有點(diǎn)疼痛的,誰(shuí)讓 C++ 這么龐雜...)药有,Python愤惰,Kotlin赘理,等等就很容易了。
因?yàn)榻?jīng)過(guò) C 語(yǔ)言的磨礪奠旺,你的編程思維能力已經(jīng)比較不錯(cuò),關(guān)于數(shù)據(jù)結(jié)構(gòu)和算法等可以通過(guò)做練習(xí)和個(gè)人項(xiàng)目來(lái)進(jìn)行响疚。
當(dāng)年我一開(kāi)始接觸 C 語(yǔ)言,感到比較難装诡,就退避了鸦采,改去學(xué) Java咕幻,結(jié)果也不得要領(lǐng)。直到我后來(lái)轉(zhuǎn)而去用 C 語(yǔ)言入門(mén)編程咱旱,學(xué)會(huì)了 C 語(yǔ)言之后绷耍,學(xué) Java 變得順風(fēng)順?biāo)?/p>
之后你如果要進(jìn)階 C 語(yǔ)言,推薦看看《C專(zhuān)家編程》诸典,C 語(yǔ)言之父寫(xiě)的《C程序設(shè)計(jì)語(yǔ)言》(不是譚浩強(qiáng)那本《C語(yǔ)言程序設(shè)計(jì)》狐粱,那本不推薦看)胆数,《C陷阱和缺陷》,中國(guó)人寫(xiě)的《C語(yǔ)言深度解剖》蒋搜。讀完這些判莉,做完里面的練習(xí),你的 C 語(yǔ)言的水平就已經(jīng)很不錯(cuò)了帮哈。
當(dāng)然了锰镀,如果你不是做嵌入式等對(duì) C 語(yǔ)言水平要求比較高的領(lǐng)域咖刃,那沒(méi)必要把 C 語(yǔ)言學(xué)那么深僵缺。
借助 C 語(yǔ)言入門(mén)編程之后可以學(xué)學(xué) Java,Python翠胰,Kotlin,Go 語(yǔ)言(Go 語(yǔ)言被稱(chēng)為 21 世紀(jì)的 C 語(yǔ)言)等比較被看好的語(yǔ)言斤富。
當(dāng)然锻狗,PHP 這樣「世界上最好的語(yǔ)言」也是比較簡(jiǎn)單的。PHP 的語(yǔ)法和 C 語(yǔ)言比較類(lèi)似油额,畢竟 PHP 的解釋器是用 C 來(lái)寫(xiě)的嘛刻帚。
5. 總結(jié)
有一點(diǎn)需要注意,就是學(xué)習(xí)編程語(yǔ)言掂僵,千萬(wàn)不要貪多而不精锰蓬。應(yīng)該先學(xué)精一門(mén)語(yǔ)言眯漩,之后再去涉獵其他的。
畢竟編程語(yǔ)言之間冯勉,基本的邏輯摹芙,條件語(yǔ)句,循環(huán)語(yǔ)句交胚,類(lèi)或結(jié)構(gòu)體,都是互通的蝴簇。一般來(lái)說(shuō)熬词,一通則百通。
有些朋友可能一門(mén)編程語(yǔ)言還沒(méi)入門(mén)或精通呢歪今,就想要蜻蜓點(diǎn)水般去學(xué)新的語(yǔ)言颜矿,這樣最后什么也不能精通。
祝大家還沒(méi)入門(mén)編程的可以早日入門(mén)田篇,已經(jīng)入門(mén)的技術(shù)日益精進(jìn)(需要學(xué)學(xué)面向?qū)ο笏季S泊柬,架構(gòu)坡疼,設(shè)計(jì)模式,數(shù)據(jù)結(jié)構(gòu)和算法闸氮,等)教沾。
要知道現(xiàn)在 IT 行業(yè)可是薪資很不錯(cuò)的,而且未來(lái)前景絕對(duì)不堪憂或悲,畢竟人工智能還要我們來(lái)編寫(xiě)和操控堪唐。
好了,我去繼續(xù)學(xué)習(xí)了男公,下次見(jiàn)~
才疏學(xué)淺合陵,文章中若有錯(cuò)繆或漏說(shuō)的澄阳,歡迎留言指正補(bǔ)充碎赢。我也會(huì)更新文章速梗。謝謝!
我是 謝恩銘峦嗤,終生學(xué)習(xí)者屋摔。
熱愛(ài)生活钓试,喜歡游泳副瀑,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」