• 技术文章 >后端开发 >php教程

    PHP 是一门高级语言吗?为什么总是被其他语言黑?

    2016-06-17 08:31:20原创1033
    ps。 我知道高级语言不一定“高端”。但问题是,既然属于高级语言,既然图灵完备,为什么会“低端”。哪里招惹其他语言了?

    回复内容:

    N卡和A卡其实都很牛逼,但是你看N卡党和A卡党还不是互相黑来黑去的?
    iOS 和 Android 其实都很牛逼,但是你看 iOS 党和 Android 党还不是互相黑来黑去的?
    同理,来来来,题主你告诉我有哪个编程语言是不被黑的?
    编程语言大体可分两种:1) 被人黑的 2) 没人用的
    ——奥斯托洛夫斯基

    楼上说得对
    ——卡巴斯基
    这个话题经久不衰

    XXX语言才是真正的程序员。
    XXX编辑器才是程序员的最终归宿。
    XXX语言在未来是一种趋势,必将干掉XXX。

    你看他们讨论出来什么了吗?

    我好想把这些XXX补上,为了避免大规模战争,还是算了吧。
    高级语言才会被黑 低级语言黑不动 哈哈哈,首先我们要坚持PHP是世界上最好的语言~

    话说PHP low确实是入手简单,写起来也快,内置函数多,基本都大多数人用。
    没啥设计模式,随便怎么写都能run,运行成本低(是个空间就能跑)

    PHP是高级语言,同时也是被黑次数可以与java抗衡的语言。

    另外,PHP写得快是因为不会有下面这种类名 。。。。。

    临走前黑下java。喏,你看
    javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference

    链接:JavaDevelopmentKit(JDK)1.7.0_03: javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference 呵呵,哪个语言不被黑?就算再优秀,那也不可能被所有人喜欢。 维基百科是这样解释低级语言的:
    低级语言(英语:Low-level programming language),在计算机科学之中,是电脑编程语言的一类。该类编程语言之所以被称为低级,是因为该类语言在运作时无法进行进一步的抽象化,而与中央处理器的机器语言或指令直接对应,因此一般亦被指是原始的编程语言。即使是与高级语言相对,但这并非指低级语言较高级语言为差,相反,低级语言由于无需大量的编译动作即可被中央处理器所运行,因此以该类编程语言编写的源代码编译和运作效率一般较高级语言的源代码为高。

    低级与高级其实只是相对的概念,Java对比C语言可以被认为是一种相对高级的编程语言。
    有一篇博文是这样解释高级语言和低级语言的区别:

    一般来讲高级语言和低级语言有一下特点:

    高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好

    低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差


    我们都知道CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码,但是为什么实现会有以上众多差异呢?下面以C语言为高级语言代表,汇编语言为低级语言代表来解释一下。

    越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。也就是说你用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器(即编译器),从而人力得到了解放。因为机器就是用来为人类提供便利的,所以说高级语言的出现是计算机发展的必然结果。

    下面重点解释为何低级语言的执行效率更高:

    1.低级语言可以通过控制硬件访问来优化效率

    越低级的语言月接近底层,即控制硬件访问的能力越强,对硬件资源的利用效率越高。比如说汇编语言能够访问寄存器,而C语言就做不到。通过对寄存器等硬件的访问,我们可以将程序的运行效率优化到最大,而像C这样的高级语言用的最多的是堆栈这样的内存结构,访问速度自然不如寄存器了。

    2.高级语言程序存在工作冗余,有效率损失。

    各种语言需要通过编译器翻译成机器码,不管编译多么智能和强大,都是会产生冗余。这里的冗余不是指指令的多少,而是有没有做没有必要的事情。 产生冗余的多少关键要看语言跟机器指令之间的耦合度。耦合度越大,编译器翻译过程越简单,产生的冗余越少。对应汇编来书,由于与机器码一一对应,所以翻译后基本没有冗余。而高级语言由于进行了抽象和封装,所以与机器指令间的耦合度较低,因此整个翻译过程较复杂,因此在高级语言在具体化的过程中不可避免会产生较多的冗余。据说C语言有10%的效率损失。

    3.效率高不高,还取决于程序员水平。

    一个差的程序员用汇编写程序,可能存在很多没有用的操作,而程序高手用c语言写,可以将程序优化到最大。最终的结果可能是汇编的程序跑不过C语言程序。


    总之,完成一项工作的工作量是不变的,机器做的 多了,人就做的就少了,同时人对程序的很多细节的控制性也减弱了。各种语言都是在这个平衡点附近纠结。从C/C++的注重机器运算效率的优化,到C#/JAVA注重开发效率的优化。人操作起来更加方便了,更高效了,代价就是,机器要处理的东西更多,运算效率被进一步压缩。但是这个压缩在许可范围内,那么这也是一种进步。

    我是这样认为的:
    编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。C、java、PHP都属于高级语言。
    高级不等于高端。 对于 PHP 有一篇完整的吐槽 PHP: a fractal of bad design / fuzzy notepad,没有什么要补充的了。 一群傻逼没事干。
    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:
    上一篇:学习PHP,然后学习C, 深入Linux的, 如果想往底层发展, 应该是如何的一个学习过程? 下一篇:如果把 Java、PHP、C#、C、C++、Python 分别用一个人或一件东西来比喻,用什么来比喻比较恰当?
    大前端线上培训班

    相关文章推荐

    • PHP中获取SQL的查询结果的常用函数整理(实例详解)• PHP中怎样去连接MySQL数据库?• PHP中mysqli_select_db与mysqli_query函数的用法• 你必须了解PHP中什么是抽象类和抽象方法• PHP中怎样完成Cookie的创建、读取和删除?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网