verchielxy原创
本文紧张先容打算机措辞的共同性,紧张讲php这门打算机措辞的一些基本特性和优缺陷,以及和其他编程措辞的(比如java和c)的差异。首先要理解打算机措辞打算机措辞,顾名思义,便是指人和打算机之间通信的措辞。 当然这只是一个拟人化的比喻,实际上机器是不可能理解我们平时所说的措辞的,以是我们须要媒介去和机器交互。 到目前为止,机器能理解的措辞有且只有二进制措辞,其他例如汇编和高等措辞,终极都会转化成为二进制措辞共机器解读。
打算机措辞的种类非常的多,总的来说可以分成机器措辞,汇编措辞,高等措辞三大类。
1. 机器措辞
电子打算机所利用的是由\"大众0\公众和\公众1\公众组成的二进制数,二进制是打算机的措辞的根本。 凑集是指令集,指令是不可分割的最小功能单元。 机器措辞的指令集和硬件本身有关,以是不同的硬件之间有可能互通,有可能不通。
2. 汇编措辞
汇编措辞不用多先容,相信工科出身的童鞋对这方面比我更理解。 汇编措辞紧张是指用一些简洁的英笔墨母、符号串来替代一个特定的指令的二进制串, 早期的目的是能让人更随意马虎理解和开拓协作,用来做机器措辞的上层,但是由于不同的硬件之间的通信本钱大, 以是汇编措辞不能作为终极的开拓措辞来进行迭代利用,所往后面又衍生出来高等措辞。
3. 高等措辞
高等措辞便是我们常常说到的打算机措辞,比如c,c++,java,ruby,php等等。 打算机不能直接理解高等措辞,只能直接理解机器措辞,以是必须要把高等措辞翻译成机器措辞,打算性能力实行高等措辞编写的程序。 高等措辞涌现,终极办理了现在打算机措辞领域的终极载体,可以说是极大的降落了人工开拓的代价和制订了一个相对标准的规则。 (难道你想用“0”“1”来写机器措辞?) 这里我们通过措辞的一些特性,又分割出来编译措辞和解释措辞两个大类, 这两大类的措辞直接包含了现在所有的开拓措辞,编译和解释这两个特性直接决定了措辞在生产环境当中的需求目标。
编译措辞和解释措辞的差异编译措辞
编译型措辞指的是,在程序实行之前,须要一个专门的编译过程,把程序编译成为机器措辞的文件,比如在windows上面的exe文件。 往后要运行的话就不用重新翻译了,直策应用编译的结果就行了,由于翻译只做了一次,运行时不须要翻译,以是编译型措辞的程序实行效率高。 但也不能一概而论,部分阐明型措辞的阐明器通过在运行时动态优化代码,乃至能够使阐明型措辞的性能超过编译型措辞。
阐明措辞
阐明性措辞的程序不须要编译,省了道工序,阐明性措辞在运行程序的时候才翻译。 比如阐明性basic措辞,专门有一个阐明器能够直接实行basic程序,每个语句都是实行的时候才翻译。 这样阐明性措辞每实行一次就要翻译一次,效率比较低。阐明是一句一句的翻译。
难道只有编译措辞和解释措辞两大类?说只有两大类,是对的,也是不完备的。 随着Java等的措辞的涌现,我们又不能把措辞纯挚地分成阐明型和编译型这两种。 这些措辞包含了编译和解释的两种特性,以是这些措辞都是须要单独谈论的。
以java为例子,java首先是通过编译器编译成字节码文件,然后在运行的时候通过阐明器给阐明成机器文件。
再以C#为例子,C#首先是通过编译器将C#文件编译成IL文件,然后在通过CLR将IL文件编译成机器文件。 以是我们说C#是一门纯编译措辞,但是C#是一门须要二次编译的措辞。同理也可等效利用到基于.NET平台上的其他措辞。
那php又是属于什么类型的措辞?php属于脚本措辞。有些人又开始迷惑了,上面根本就没提到过脚本措辞好吗。好吧,我只能说,是没有提到过。 脚本措辞实在是属于阐明措辞当中的子集,说脚本措辞是阐明措辞是没有错的,但是说阐明措辞是脚本措辞是不对的,不完备的。 上面提到过有java这种措辞的存在,有些人喜好吧java归类到阐明性措辞当中,有人归类到半阐明和半编译当中,实在都没有错。 由于java这些措辞随意马虎被部分人归类到阐明性措辞当中,以是在阐明措辞又划分出来一个子集,叫脚本措辞,把像php和perl这类措辞归类个中。
php是天下上最好的措辞,这只是一个调侃作为一个php开拓的从业者来讲,php是天下上最好的措辞这种论调,这只不过是一种戏称,一个调侃而已。 措辞没有好坏之分,针对不同的业务需求,不同的措辞会有不同的上风。
php措辞的一些基本特性php作为脚本措辞,他的措辞特点有如下几个:
1. 作为脚本措辞,环境支配相对大略,出了问题也相对随意马虎调试。
2. 弱措辞类型,对付变量的类型没有限定,语法也相对大略,便于初学者自学。
3. 不须要像java一样,要设计是自动内存分配回收机制。php的变量在实行脚本起占用内容,结束之后开释。
4. php措辞面向的是办理web方面的问题,虽然不代表他不能办理其他方面的问题,但是这不是php的长处所在。
5. php本身便是一个模板措辞,不须要合营其他模板引擎利用。
6. 对付大部分的中型公司而言,客户频繁的变更需求和前期开拓的架构一直的迭代, 利用php措辞可以快速和小本钱的办理这方面的问题。当然这不代表这门措辞便是办理这类需求的终极方案。
当然php也有他的弱势特点所在
1. php是多进程,单线程的措辞,设计模式也是如此。这意味着, php在承载高并发量的时候,花费的硬件资源比其他措辞要多。
2. php作为脚本措辞,其实行速率要远低于编译措辞。虽然在日常开拓当中, 这些速率损耗远没有架构毛病和数据库带来的韶光损耗多,但是在大型项目的开拓当中, 这仍旧是php的毛病之一。
3. php由于变量太过于灵巧, 一个命名不规范的php程序以及不规范的开拓构造, 导致在二次开拓上面的技能代价可能比较大。
4. 大部分措辞的通病,类的反射花费的韶光长,同样的代码,纯sql语句实行和 依托php包(包括官方包和非官方包)来实行的语句,损耗的韶光后者大于前者。
总结起来,每一门措辞都有他们的长处和短处,在开拓的时候,尤其是大型高并发项目的时候, 每每都是多措辞共同办理。每一个模块都是一个或者几个措辞来卖力,提高内聚,降落耦合, 前后端分离等,才是办理一个需求相对完全完善的方案。