之因此這樣說「不要認爲學PHP就不須要學C語言」,是由於一味的只學PHP而沒有C語言等這些基礎語言的支撐,是很難深刻理解PHP的不少東西的。編程
這樣的例子其實不少,這裏我就舉這個例子吧:PHP的數組和C語言的數組的區別和聯繫。數組
學過C語言的朋友固然知道C語言裏有數組;數據結構
PHP裏也有數組,但他們兩個的功能幾乎差異很大,PHP的數組太多很好用的功能。那這是什麼緣由?是否是有多種數組,你只是學其中一種數組?其實不是的。性能
根本緣由是:C語言裏的數組是真正的數組,是在棧中申請的一段連續存儲的空間,這種空間一旦申請是不能再添加一個元素,再刪除某個元素,只能總體操做,要麼所有刪除,要麼從新再申請一個數組。這就是真正的數組。學習
而PHP中的數組,其實不是這樣的數組,它是在堆中申請內存,而後用指針去指向頭地址,而後遍歷指針,這樣就能夠刪除某一個元素,隨時添加一個新元素,由於它本質上再也不是那種真正的數組,而是鏈表。spa
那麼從這裏能夠看出,C語言對於PHP的理解和學習意義很大。沒有C語言的鏈表支撐,會讓PHP的那些特性出現的莫名其妙,漫天幻想也老是感受腳不着地。指針
C語言中的鏈表原理是實現C++裏的vector,list,map,等動態數組、鏈表、集合、隊列的原理依據,也是實現PHP裏面的數組(本質是鏈表實現的動態數組)的原理依據。隊列
那麼上層語言的那些複雜的數據結構的理解也就變得瓜熟蒂落了。對於PHP數組的那些操做也就變得很容易理解了。如:ip
在最後插入一個元素:內存
彈出一個元素:
這些東西用起來是很舒暢的,不會給你彈出一個恐怖的黑窗口錯誤提示,可是舒暢的背後是須要基礎來支撐和理解的,犧牲編譯性能是它的事,但可否理解的通就是你的事了,理解不了就只能死記硬背,那就不舒暢了,由於會很容易忘記。
如何才能不容易忘記,那就要理解它,理解它的來源,理解它可行性的實現原理....一切纔會順其天然。誰也沒有規定,你要學會必需要學的很痛苦才行啊。
知其然而不知其因此然,是學有所成的最大障礙,也是出現學習瓶頸的最大因素。
因此C語言的意義在於對上層語言更輕鬆的理解,上層語言中如:PHP,不是用來學鏈表的,而是用鏈表的。因此用PHP來寫個鏈表其實意義性並不大。
那只是給見識不多的初學者進行一次「學術顯擺」而已。由於PHP裏連指針都隱藏了,又何談深刻理解鏈表?也難怪學C的看不上C++的,學C++的看不上學PHP的;難度不同,在有深厚內功的編程人員眼裏,不少所謂的過來人實際上是在作「譁衆取寵」的事,估計是那種無所謂只要能忽悠初學者就行的感受吧。
學習要善於聯想,才能給學習減負。關注學習心情,才能長遠。善於理解仍是須要必定的實力、廣度和深度來支撐的。
因此,不要再認爲學PHP就能夠不要學C語言了,不然你理解PHP不少東西都難理解的通,沒有基礎只能靠幻想、背誦,也難深刻和長久學下去,由於太累......同時學C語言也不是說你看了、學了就算過關了,關鍵是要會,要懂。
好比隨便給一個不懂計算機的人就能解釋鏈表是什麼?有什麼特色,怎麼實現等等。你能說多少,才表示你會了多少。
本文由甲爪cpa聯盟(www.jiazhua.com)整理編輯!