學習PHP是否需要學習C語言

來源:文萃谷 1.49W

“不要認為學PHP就不需要學C語言”,是因為一味的只學PHP而沒有C語言等這些基礎語言的支撐,是很難深入理解PHP的很多東西的。

學習PHP是否需要學習C語言

這樣的例子其實很多,這裏我就舉這個例子吧:PHP的數組和C語言的數組的區別和聯繫。

學過C語言的朋友當然知道C語言裏有數組;

PHP裏也有數組,但他們兩個的功能幾乎差別很大,PHP的數組太多很好用的功能。那這是什麼原因?是不是有多種數組,你只是學其中一種數組?其實不是的。

根本原因是:C語言裏的數組是真正的數組,是在棧中申請的一段連續存儲的空間,這種空間一旦申請是不能再添加一個元素,再刪除某個元素,只能整體操作,要麼全部刪除,要麼重新再申請一個數組。這就是真正的數組。

而PHP中的數組,其實不是這樣的數組,它是在堆中申請內存,然後用指針去指向頭地址,然後遍歷指針,這樣就可以刪除某一個元素,隨時添加一個新元素,因為它本質上不再是那種真正的數組,而是鏈表。

那麼從這裏可以看出,C語言對於PHP的理解和學習意義很大。沒有C語言的鏈表支撐,會讓PHP的那些特性出現的莫名其妙,漫天幻想也總是感覺腳不着地。

C語言中的鏈表原理是實現C++裏的vector,list,map,等動態數組、鏈表、集合、隊列的原理依據,也是實現PHP裏面的數組(本質是鏈表實現的動態數組)的原理依據。

那麼上層語言的那些複雜的數據結構的理解也就變得順理成章了。對於PHP數組的那些操作也就變得很容易理解了。如:

在最後插入一個元素:

彈出一個元素:

這些東西用起來是很舒暢的,不會給你彈出一個恐怖的黑窗口錯誤提示,但是舒暢的背後是需要基礎來支撐和理解的,犧牲編譯性能是它的事,但能否理解的通就是你的事了,理解不了就只能死記硬背,那就不舒暢了,因為會很容易忘記。

如何才能不容易忘記,那就要理解它,理解它的來源,理解它可行性的實現原理....一切才會順其自然。誰也沒有規定,你要學會必須要學的很痛苦才行啊。

知其然而不知其所以然,是學有所成的最大障礙,也是出現學習瓶頸的`最大因素。

所以C語言的意義在於對上層語言更輕鬆的理解,上層語言中如:PHP,不是用來學鏈表的,而是用鏈表的。所以用PHP來寫個鏈表其實意義性並不大。

那只是給見識很少的初學者進行一次“學術顯擺”而已。因為PHP裏連指針都隱藏了,又何談深入理解鏈表?也難怪學C的看不上C++的,學C++的看不上學PHP的;難度不一樣,在有深厚內功的編程人員眼裏,很多所謂的過來人其實是在做“譁眾取寵”的事,估計是那種無所謂只要能忽悠初學者就行的感覺吧。

學習要善於聯想,才能給學習減負。關注學習心情,才能長遠。善於理解還是需要一定的實力、廣度和深度來支撐的。

所以,不要再認為學PHP就可以不要學C語言了,否則你理解PHP很多東西都難理解的通,沒有基礎只能靠幻想、背誦,也難深入和長久學下去,因為太累......同時學C語言也不是説你看了、學了就算過關了,關鍵是要會,要懂。

比如隨便給一個不懂計算機的人就能解釋鏈表是什麼?有什麼特點,怎麼實現等等。你能説多少,才表示你會了多少。

熱門標籤