php大讲堂系列1《什么是php》-php是什么文件

php大讲堂系列1《什么是php》

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包(包括官方包和非官方包)来执行的语句,损耗的时间后者大于前者。

总结起来,每一门语言都有他们的长处和短处,在开发的时候,尤其是大型高并发项目的时候, 往往都是多语言共同解决。每一个模块都是一个或者几个语言来负责,提高内聚,降低耦合, 前后端分离等,才是解决一个需求相对完整完善的方案。

推荐阅读