本文發(fā)布于微信公眾號:三玹
你知道現(xiàn)在的編程總共有多少門嗎?
這個問題整得我橫豎睡不著,打開電腦一查,從字里行間只看到了兩個字,“很多”!
是的,現(xiàn)在的編程語言可以說是汗牛充棟、不計其數(shù)。甭說所有,就現(xiàn)在常用的十幾二十種編程語言,就足夠一個人窮極一生去了解、研究,而且都未必樣樣都學(xué)得精通。
為什么編程語言會如此之多呢?
在網(wǎng)上有這么一個梗,恰好說明了這種現(xiàn)狀:很久以前有個年輕人,來到了編程界。當看到這方世界竟然秩序混亂,久久不能統(tǒng)一。不忍看到這個世界再繼續(xù)混亂下去,于是年輕人許下豪言壯志,誓要做出一套可以一統(tǒng)編程界的語言。
后來,編程界就又多了一門編程語言……
回歸正題,什么是編程?
顧名思義,編程就是編寫程序,也就是程序員將解決問題的步驟用編程語言編寫成代碼程序,然后交給計算機去執(zhí)行運算,從而達到計算機可以重復(fù)解決問題的目的。
打個比喻:假如程序是一本菜譜,那么程序員就是寫菜譜的大廚,編寫代碼的過程就是在寫菜譜。而不會做菜的人就是計算機,他們收到了大廚寫的菜譜,按照上面條令執(zhí)行,至少能做出像模像樣的菜。
而編程語言就是大廚寫菜譜時所使用的語言。比如大廚是中國人,那么他寫菜譜時所用的語言是漢語。如果是俄羅斯人,那他用的是俄語。那么,想讓普通的俄羅斯人也能看懂中國大廚寫的菜譜,首先需要將中國大廚寫的菜譜用俄語翻譯一遍。翻譯的這一過程,在計算機中也被稱之為編譯。
目前,主流的、且工作上用得比較多的編程語言有:C、Java、Python、C++、C#、JavaScript、SQL、Ruby、PHP、Go、Swift等等。如此眾多的編程語言,它們之間也是各有不同,按照編譯以及運行方式可以分出以下兩大類:
編譯型語言
代表語言:C、C++、C#、Go等。
通常是將代碼一次性全部編譯為二進制碼(計算機看得懂的語言:10010101),然后再一次執(zhí)行。
編譯型語言的優(yōu)勢就在于執(zhí)行速度要比解釋型語言快得多,而且消耗的內(nèi)存也更少。
缺點在于編譯器遠比解釋器要難得多,而且在調(diào)試過程中,編譯器往往提供不了太多的幫助,同時編譯型程序是面向特定平臺,對平臺有一定的依賴性。
解釋型語言
代表語言:Python、Java、JavaScript等。
有專門的解釋器。首先將代碼翻譯為中間代碼,然后交給解釋器對中間代碼進行解釋運行,編譯一行,運行一行。
解釋型語言最大的優(yōu)勢是具有平臺獨立性,不受限于任意平臺,對平臺的依賴性沒那么高。只需要擁有相應(yīng)的解釋環(huán)境,就可以在任意平臺使用。
缺點就在于解釋型應(yīng)用會占用更多的內(nèi)存和CPU資源,同時解釋型應(yīng)用需要進行【解碼-抓取-運行】的周期,因而整體速度要比編譯型程序要慢很多。
把這兩個大類比作是兩個工廠。
A工廠是編譯型語言,一次性將所有產(chǎn)品都做好了,然后上交給相關(guān)部門進行檢查。如果產(chǎn)品質(zhì)量過關(guān),那么A工廠就可以迅速搶占市場。但要是發(fā)現(xiàn)了質(zhì)量不過關(guān)的,就得重新返工,一個個去尋找質(zhì)量不過關(guān)的產(chǎn)品。
B工廠是解釋型語言,這個廠的廠長非常謹慎,每做好一個產(chǎn)品,就提交一次檢查。雖然這樣的速度會非常的慢,但勝在保穩(wěn)。如果發(fā)現(xiàn)了錯誤,那么及時將有問題的產(chǎn)品返工重做,不需要費時費力地去檢測所有產(chǎn)品的問題。
面對如此眾多的編程語言,該從哪個開始?相信這是許多初學(xué)者的煩惱和顧慮。
其實這個問題很簡單。根據(jù)自己的興趣選擇,興趣就是最好的老師。例如你想做游戲,可以入手C++或者C#;想做Web網(wǎng)站系統(tǒng)的,可以選擇Java;想做機器學(xué)習(xí)的,可以著手Python。
當然,如果你不太清楚自己對什么有興趣,那么我的建議是以下兩點:
如果是在校學(xué)生,或者時間較為充沛,同時想成為職業(yè)選手的朋友??梢韵葘W(xué)習(xí)C語言入門編程。C語言被稱之為現(xiàn)代編程語言之母,學(xué)習(xí)C語言可以了解一些底層基礎(chǔ),到后面學(xué)其他語言就會事半功倍。
如果是業(yè)余學(xué)習(xí),或者急于求職的朋友,那么可以根據(jù)興趣或者求職意愿和方向去選擇性學(xué)習(xí)補強。比如要做前端的,重點學(xué)習(xí)JavaScript、TypeScript等;后端系統(tǒng)的,可以學(xué)習(xí)Java、C++;爬蟲、數(shù)據(jù)分析類的,可以學(xué)習(xí)Python。
學(xué)習(xí)最重要的就在于一個“勤”字,編程學(xué)習(xí)也是一樣的。
勤動手,勤思考。如果想要讓自己的編程技術(shù)更快地長進,勤敲代碼是必不可少的,畢竟熟能生巧。同時在敲寫代碼的時候,加入一點點思考,比如為什么這段代碼是這樣敲的?這樣敲的理由是什么?有沒有更好的方法讓這段代碼更簡潔、更好用?在學(xué)習(xí)、練習(xí)的過程中,多問自己幾個為什么,怎么樣才能做得更好,想得透徹了,那么成長就只是時間的問題了。