不要认为学PHP就不需要学C语言

原创 ningcaichen66 随笔 PHP 404阅读 2017-05-12 17:30:54 举报

之所以这样说“不要认为学PHP就不需要学C语言”,是因为一味的只学PHP而没有C语言等这些基础语言的支撑,是很难深入理解PHP的很多东西的。

这样的例子其实很多,这里我就举这个例子吧:PHP的数组和C语言的数组的区别和联系。

学过C语言的朋友当然知道C语言里有数组;

PHP里也有数组,但他们两个的功能几乎差别很大,PHP的数组太多很好用的功能。那这是什么原因?是不是有多种数组,你只是学其中一种数组?其实不是的。

根本原因是:C语言里的数组是真正的数组,是在栈中申请的一段连续存储的空间,这种空间一旦申请是不能再添加一个元素,再删除某个元素,只能整体操作,要么全部删除,要么重新再申请一个数组。这就是真正的数组。

而PHP中的数组,其实不是这样的数组,它是在堆中申请内存,然后用指针去指向头地址,然后遍历指针,这样就可以删除某一个元素,随时添加一个新元素,因为它本质上不再是那种真正的数组,而是链表。

那么从这里可以看出,C语言对于PHP的理解和学习意义很大。没有C语言的链表支撑,会让PHP的那些特性出现的莫名其妙,漫天幻想也总是感觉脚不着地。

C语言中的链表原理是实现C++里的vector,list,map,等动态数组、链表、集合、队列的原理依据,也是实现PHP里面的数组(本质是链表实现的动态数组)的原理依据。

那么上层语言的那些复杂的数据结构的理解也就变得顺理成章了。对于PHP数组的那些操作也就变得很容易理解了。如:

在最后插入一个元素:

不要认为学PHP就不需要学C语言

不要认为学PHP就不需要学C语言

弹出一个元素:

不要认为学PHP就不需要学C语言

不要认为学PHP就不需要学C语言

这些东西用起来是很舒畅的,不会给你弹出一个恐怖的黑窗口错误提示,但是舒畅的背后是需要基础来支撑和理解的,牺牲编译性能是它的事,但能否理解的通就是你的事了,理解不了就只能死记硬背,那就不舒畅了,因为会很容易忘记。

如何才能不容易忘记,那就要理解它,理解它的来源,理解它可行性的实现原理....一切才会顺其自然。谁也没有规定,你要学会必须要学的很痛苦才行啊。

知其然而不知其所以然,是学有所成的最大障碍,也是出现学习瓶颈的最大因素。

所以C语言的意义在于对上层语言更轻松的理解,上层语言中如:PHP,不是用来学链表的,而是用链表的。所以用PHP来写个链表其实意义性并不大。

那只是给见识很少的初学者进行一次“学术显摆”而已。因为PHP里连指针都隐藏了,又何谈深入理解链表?也难怪学C的看不上C++的,学C++的看不上学PHP的;难度不一样,在有深厚内功的编程人员眼里,很多所谓的过来人其实是在做“哗众取宠”的事,估计是那种无所谓只要能忽悠初学者就行的感觉吧。

学习要善于联想,才能给学习减负。关注学习心情,才能长远。善于理解还是需要一定的实力、广度和深度来支撑的。

所以,不要再认为学PHP就可以不要学C语言了,否则你理解PHP很多东西都难理解的通,没有基础只能靠幻想、背诵,也难深入和长久学下去,因为太累......同时学C语言也不是说你看了、学了就算过关了,关键是要会,要懂。

比如随便给一个不懂计算机的人就能解释链表是什么?有什么特点,怎么实现等等。你能说多少,才表示你会了多少。

评论 ( 4 )
最新评论
ningcaichen66 2017-05-15 17:35:31 4F

文章作者是:ningcaichen66或者是宁哥实战课堂,那都是我自已的原创文章了

天凉好个秋 2F 2017-05-15 10:26:51 3F

原来你是原创啊,不好意思,我再其他网站也看到。

ningcaichen66 1F 2017-05-13 16:15:28 2F

我的原创文章,你在哪时看到过吗?

天凉好个秋 2017-05-13 09:55:27 1F

又是转载的