我觉得C++ 虽然速度快,但是编译起来很复杂,要写各种dependency 才不会导致因编译顺序产生的失败。namespace 的乱用和混用让人摸不着头脑。不同的Cpp可以共用一个h,你都找不到申明在哪里。
PHP就好多了。类似java,文件名就是class 名,继承简单,完全面向对象。这就是面向对象编程的真正好处。看代码时很好理解,除了map, vector的操作很奇葩以外。
既然如此,C++程序员为什么看不起PHP呢?
写了4年php,写了6年c++。
不是看不起php,只是觉得一个解释型脚本语言和一个编译型的程序语言不太具备可比性。
个人觉得php应该和python lua js 等这类语言做比较,毕竟从题主的题干上就可以看出来,其可能没有理清编译型语言和解释型语言的概念,所以才会吐槽c++的编译过程。
一个典型的区别是php必须依托环境来执行,php本身也是有很多模块来构成。这无论组织还是架构都与python 等语言非常相像。如果把php的二进制文件当作虚拟机的话,和java以及c#都是比较接近的。因为题主才对这几种感到熟悉。
而事实是,以上几种语言脱离了解释器或者虚拟机是无法运行的,但c++与他们不同,甚至于其运行所依赖的模块中也有一大部分是由c++完成的。
这是所谓c++程序员对以上几种语言的“看不起”的原因,而实际上根本没有看不起的说法,因为根本没有可比性。就像飞鸟会看不起鱼吗?
写网页的时候有人用c++吗?有,c++甚至可以再写一套php出来。只是这么做划算与否的问题,而显然反之而言,php自身的局限性较大。但php在网页领域也非c++可以比拟的。
存在即为合理,这么简单的道理,怎么就这么多人不懂呢。
但是,以上是对语言本身的讨论,下面是我对程序员的一些看法。
我 个人窃以为,每个合格的,称职的,真正的程序员都应该学习并了解c++。因为连栈是什么都不懂,连堆不知道怎么分配的人,甚至从来没有发现字自己引以为傲 的技术,自己写的代码,均是他人封装了不知道多少层的产物的人,是可悲而又可怜的。整天嚼他人唾下之物,岂不如嚼蜡般索然,而又无味?
就好像学计算机的看不起修电脑的,虽然也会修,但毕竟不是干这个的,能干但没电脑城修电脑的速度快,同理,修电脑的也干不来程序开发的活,专属领域都不同,非要说,c++更加底层,包含了php,所以理所当然傲视其他语言。遇到汇编也是被鄙视,五十步笑百步。