- 相關(guān)推薦
學(xué)習(xí)PHP是否需要學(xué)習(xí)C語言
“不要認(rèn)為學(xué)PHP就不需要學(xué)C語言”,是因為一味的只學(xué)PHP而沒有C語言等這些基礎(chǔ)語言的支撐,是很難深入理解PHP的很多東西的。
這樣的例子其實很多,這里我就舉這個例子吧:PHP的數(shù)組和C語言的數(shù)組的區(qū)別和聯(lián)系。
學(xué)過C語言的朋友當(dāng)然知道C語言里有數(shù)組;
PHP里也有數(shù)組,但他們兩個的功能幾乎差別很大,PHP的數(shù)組太多很好用的功能。那這是什么原因?是不是有多種數(shù)組,你只是學(xué)其中一種數(shù)組?其實不是的。
根本原因是:C語言里的數(shù)組是真正的數(shù)組,是在棧中申請的一段連續(xù)存儲的空間,這種空間一旦申請是不能再添加一個元素,再刪除某個元素,只能整體操作,要么全部刪除,要么重新再申請一個數(shù)組。這就是真正的數(shù)組。
而PHP中的數(shù)組,其實不是這樣的數(shù)組,它是在堆中申請內(nèi)存,然后用指針去指向頭地址,然后遍歷指針,這樣就可以刪除某一個元素,隨時添加一個新元素,因為它本質(zhì)上不再是那種真正的數(shù)組,而是鏈表。
那么從這里可以看出,C語言對于PHP的理解和學(xué)習(xí)意義很大。沒有C語言的鏈表支撐,會讓PHP的那些特性出現(xiàn)的莫名其妙,漫天幻想也總是感覺腳不著地。
C語言中的鏈表原理是實現(xiàn)C++里的vector,list,map,等動態(tài)數(shù)組、鏈表、集合、隊列的原理依據(jù),也是實現(xiàn)PHP里面的數(shù)組(本質(zhì)是鏈表實現(xiàn)的動態(tài)數(shù)組)的原理依據(jù)。
那么上層語言的那些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的理解也就變得順理成章了。對于PHP數(shù)組的那些操作也就變得很容易理解了。如:
在最后插入一個元素:
彈出一個元素:
這些東西用起來是很舒暢的,不會給你彈出一個恐怖的黑窗口錯誤提示,但是舒暢的背后是需要基礎(chǔ)來支撐和理解的,犧牲編譯性能是它的事,但能否理解的通就是你的事了,理解不了就只能死記硬背,那就不舒暢了,因為會很容易忘記。
如何才能不容易忘記,那就要理解它,理解它的來源,理解它可行性的實現(xiàn)原理....一切才會順其自然。誰也沒有規(guī)定,你要學(xué)會必須要學(xué)的很痛苦才行啊。
知其然而不知其所以然,是學(xué)有所成的最大障礙,也是出現(xiàn)學(xué)習(xí)瓶頸的最大因素。
所以C語言的意義在于對上層語言更輕松的理解,上層語言中如:PHP,不是用來學(xué)鏈表的,而是用鏈表的。所以用PHP來寫個鏈表其實意義性并不大。
那只是給見識很少的初學(xué)者進(jìn)行一次“學(xué)術(shù)顯擺”而已。因為PHP里連指針都隱藏了,又何談深入理解鏈表?也難怪學(xué)C的看不上C++的,學(xué)C++的看不上學(xué)PHP的;難度不一樣,在有深厚內(nèi)功的編程人員眼里,很多所謂的過來人其實是在做“嘩眾取寵”的事,估計是那種無所謂只要能忽悠初學(xué)者就行的感覺吧。
學(xué)習(xí)要善于聯(lián)想,才能給學(xué)習(xí)減負(fù)。關(guān)注學(xué)習(xí)心情,才能長遠(yuǎn)。善于理解還是需要一定的實力、廣度和深度來支撐的。
所以,不要再認(rèn)為學(xué)PHP就可以不要學(xué)C語言了,否則你理解PHP很多東西都難理解的通,沒有基礎(chǔ)只能靠幻想、背誦,也難深入和長久學(xué)下去,因為太累......同時學(xué)C語言也不是說你看了、學(xué)了就算過關(guān)了,關(guān)鍵是要會,要懂。
比如隨便給一個不懂計算機(jī)的人就能解釋鏈表是什么?有什么特點,怎么實現(xiàn)等等。你能說多少,才表示你會了多少。
【學(xué)習(xí)PHP是否需要學(xué)習(xí)C語言】相關(guān)文章:
如何學(xué)習(xí)php語言12-02
如何學(xué)習(xí)好php語言03-11
學(xué)習(xí)php語言難嗎03-14
學(xué)習(xí)php編程語言 php常用英語單詞11-17
C語言常量入門學(xué)習(xí)11-29
如何學(xué)習(xí)c語言最好?03-31
如何學(xué)習(xí)C語言編程11-27