“為什么我之前學(xué)c語言學(xué)得云里霧里,學(xué)完python之后再回過頭來看c語言,很多問題都一目了然了?”偶然看到這樣的一個問題,簡單說下自己的看法。
一直認(rèn)為:編程語言之間很多都是融匯貫通的,學(xué)好一門,其他語言都是可以觸類旁通的。
首先,兩種語言的性質(zhì)不同。
Python 是一種腳本語言,所見即所得,比較符合人的閱讀習(xí)慣,就像,讀一般文字。Python用于互聯(lián)網(wǎng)和自動化測試的開發(fā)。
C 語言是一種高級語言,特點(diǎn)運(yùn)算塊,數(shù)據(jù)結(jié)構(gòu)復(fù)雜,做大型項(xiàng)目,比如嵌入式,用C較多。
C語言
其實(shí)C本身也不難,難的是現(xiàn)在的程序員很少去深入了解計(jì)算機(jī)硬件本身了,比如CPU的運(yùn)行機(jī)制,寄存器操作,內(nèi)存讀寫等等這些,這些都是對應(yīng)底層的硬件操作。
C語言更多的是用在這些地方,還有操作系統(tǒng)核心,編譯器本身等等,最基礎(chǔ)的程序都是C寫的。
c語言是一種面向過程的一種“中級”語言。為什么說只是中級語言,主要是因?yàn)樗兄?a href="http://wenjunhu.com/v/tag/3195/" target="_blank">匯編語言的影子和固有思維(面向過程),主要的運(yùn)用環(huán)境也是在微處理器。
說白了,c語言關(guān)心的是如何讓代碼完美的運(yùn)行在微處理器上,并且處理時間要快。
所以,學(xué)好c語言不僅僅是學(xué)會c語言語法知識,還需要扎實(shí)的硬件基礎(chǔ),數(shù)據(jù)結(jié)構(gòu)等知識。因?yàn)?,在c語言的世界里,除了比較難用的庫函數(shù),很難找到可以直接用的庫(比如雙向數(shù)據(jù)鏈,硬件驅(qū)動)。
C就是描繪世界的基石,C寫的基本庫和代碼塊被后面的各種語言像磊磚頭一樣搭成各種房子建筑。
我感覺這就想一個人看書,你能看懂書里寫的故事,但是讓你來寫書你就不會了。
python
python 都是只關(guān)心這個東西是干什么的,你說你理解了c也是理解了他是干什么的,但是具體怎么干,怎么干的好你就說不出了。
而在Python的世界里,幾乎你能想到的功能,都能找到,而且,Python是解釋性語言,簡單易懂,不需要懂硬件和枯燥乏味且難懂的數(shù)據(jù)結(jié)構(gòu)等理論,所以上手會很容易,組合各個功能強(qiáng)大的庫函數(shù),完成各個功能的實(shí)現(xiàn)。
也許是因?yàn)閷W(xué)了Python,對編程邏輯有了很好的理解,融會貫通之后能比較容易看懂c語言的語句,但是,也僅僅只是一部分語句。
正如前面說的,c語言本身語法只是很少的一部分,精華部分在于如何絕妙的和硬件打交道,在有限的資源里,完成各項(xiàng)任務(wù)。
就像理解一種模式相對來說還是比較簡單,但是設(shè)計(jì)一種模式難度是相當(dāng)大,這兩種語言就是針對了兩個方向,差距還是很大的。
觸類旁通
其實(shí)很多事情都是觸類旁通的,雖然不同的編程語言有一些不同,但是編程中很多思想都是一樣的。
python屬于高級編程語言,你學(xué)會了以后可以說你的編程思維就已經(jīng)形成了,這時你再去學(xué)c肯定是會有一定幫助的。
就像我們高中時很多知識當(dāng)時感覺是很難理解的,但是當(dāng)你上完大學(xué)后再回過來看,貌似很多就容易理解了!
編程語言是有很多共通的東西,學(xué)會了python,其實(shí)也就掌握了編程語言的一些通用的特性,再看c,其實(shí)也就在通性上有些具體的修改或者增加自己的特性,看起來也就一目了然了。
舉例
C語言就像是原著版的小說《紅樓夢》,python就像是電視劇版的的《紅樓夢》。
當(dāng)你看小說原著時,實(shí)在太難看懂,里面的人物關(guān)系過于復(fù)雜,看了半天不知所云,往往在細(xì)節(jié)地方反復(fù)糾纏而難以理清主線,也沒人告訴你誰是主要人物(總共出場900多人),只好眉毛胡子一把抓。
這時候,你去看了電視劇,發(fā)現(xiàn)電視劇竟然基本看懂了,至少主線搞清楚了,主要人物的人物關(guān)系搞清楚了。
這時候回過頭再去看原著,發(fā)現(xiàn)原著突然變得簡單起來。
然后,當(dāng)你看完原著,又去看電視劇時,發(fā)現(xiàn)原來看電視劇很多搞不清楚的地方,竟然也變得清晰起來。
因?yàn)樵鴥?nèi)容多,很嚴(yán)謹(jǐn)。在電視劇里沒有解釋清楚的,原著中都有解釋。
當(dāng)然也有人說:由python入c難,由c入python易;這些都是自己一些個人看法罷了。
審核編輯:劉清
評論
查看更多