年PHP发布,更是极大地改进了性能,让PHP变得更加强大。不过,像所有的技术一样,人们对它的评价总是参差不齐,有人喜欢而有人不喜欢。今天,达内PHP专家(http://PHP.tedu.cn)跟大家一起分析PHP语言的优缺点。
优点一:流行,容易上手
PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过亿多个网站,有全球超过.%的公共网站在服务器端采用PHP。不仅如此,据统计,有.%从事PHP的人认为PHP最容易学习和上手。这是因为PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。
NewMediaCampaigns公司的开发工程师JoshLockhart曾讲过:PHP是最容易学习的网站开发语言,它能安装在绝大多数的服务器上,并且由于有实时更新的文档和问答,PHP语言相对其他语言简单易学。
优点二:开发职位很多
在服务器端的网站编程中PHP会更容易帮助你找到工作。京东、淘宝、天猫、Google、百度、新浪、腾讯QQ、微信等很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。通过各个招聘网站搜索PHP工程师,得出的数字让我们两眼放光,智联招聘PHP的招聘岗位高达个;前程无忧的招聘岗位人数达;猎聘网的相关数据为个,可见PHP的需求多,职位也多.
优点三:仍然在不断发展
PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是之后,一直在提供更高性能的应用,在一些WordPress基准测试当中,性能可以达到PHP
.的倍。PHP 包含了一些重大安全改进,如除去PHP安全模式,添加魔术引号,有一些新的保留关键字等等。而今年三月份,PHP
..和..已经正式发布。
缺点:设计缺陷,缺少关注
PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从C++和Java学来的。
不过,总的来说,相对于极小的缺点来说,PHP的发展空间是极其大的,这也是为何其会受到市场以及企业喜欢和欢迎的原因所在。可以说,对一门技术的喜厌程度来自很多方面,从个人习惯到项目需求,毕竟任何东西都没办法做到人见人爱。
Java语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。
. 面向对象
Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类所提供的方法 ,实现了代码的复用。
. 分布性
Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户 可以通过 URL地址在网络上很方便地访问其它对象。
. 简单性
Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运行 ,它的基本解释器及类的支持只有 KB左右 ,加上标准类库和线程的支持也只有 KB左右。库和线程的支持也只有 KB左右。
. 鲁棒性
Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题的出现。
. 可移植性
与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java系统本身也具有可移植性。
. 体系结构中立
Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平台运行。
. 安全性
用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易产生的错误。
. 解释执行
Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多编译时信息 ,使得连接过程更加简单。
. 动态性
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。
. 多线程
多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据的正确操作。通过使用多线程 ,程序设计者可以分别用不同的线程完成特定的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实时交互行为。
. 高性能
和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。
尽管Python 已经流行了超过 年,但是一些人仍旧认为相对于通用软件开发产业而言, 它还是个新丁。我们应当谨慎地使用“相对”这个词,因为“网络时代”的程序开发,几年看 上去就像几十年。
当人们询问“什么是Python”的时候,很难用任何一个具象来描述它。人们更倾向于 一口气不加思索地说出他们对Python 的所有感觉,这些特点究竟 又是什么呢?为了让你能知其所以然,我们下面会对这些特点进行逐一地阐释。
简单
Python是一门简单而文字简约的语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让你专注于解决问题的办法而不是语言本身。
容易学习
正如你即将看到的,Python非常容易上手。就像刚刚提到的,Python具有格外简单的语法。
免费开源
Python是一个FLOSS(自由/自由与开源软件)的例子。在一些简单的条款之下,你可以自由地分发这个软件的拷贝,阅读其源代码,修改它,或者将其一部分用到新的自由程序中。FLOSS是基于共享知识社区的概念,这是Python如此好的原因之一——它是由那些希望看到更好的Python的社区创建和不断改进的。
高级语言
当你使用Python编写程序时,你永远不需要担心低级细节,比如你的程序管理内存的使用等。
可移植
基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。只要你足够小心,避免使用系统相关特性,你的所有Python程序都可以不加修改地运行在这其中任意平台。
你可以在Linux、Windows、FreeBSD、Macintosh、Solaris、OS/、Amiga、AROS、AS/、BeOS、OS/、z/OS、Palm
OS、QNX、VMS、Psion、Acorn RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows
CE,甚至PocketPC平台上使用Python。
你甚至可以使用类似Kivy平台为iOS(iPhone、iPad)和Android创建游戏。
解释型
这需要一些解释。
使用编译型语言(像C或者C++)编写的程序,会由编译器使用一系列标志和选项,将源代码(如C或者C++)转换成一种电脑能够识别的语言(二进制代码,也就是和)。在运行程序时,链接器/载入软件将程序从硬盘复制到内存,然后开始运行。
换句话说,Python不需要编译成二进制代码。你只需从源代码直接运行程序。在内部,Python将源代码转换成一种称为字节码的中间格式,然后将其翻译你的计算机的机器语言,然后开始运行。事实上,这一切都让Python的使用更为简单,因为你不必担心程序的编译、保证恰当的库被链接和载入等等。这也使得你的Python程序更易于移植,因为你只需要复制你的Python程序到另外一台计算机,然后它就可以工作了!
面向对象
Python同时支持面向过程和面向对象编程。在面向过程语言中,程序围绕着过程或者函数(只不过是可重复使用的程序片段)构建。在面向对象语言中,程序围绕着对象(数据和功能的组合)构建。Python具有非常强大但是过于简洁的执行面向对象编程的方式,特别是相对于C++或者Java这种大型语言来说。
可扩展
如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
可嵌入
你可以将Python嵌入到C/C++程序,让你的程序的用户获得“脚本化”的能力。
扩展库
Python标准库的确很大。它能够帮助你完成许多工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI(公共网关接口)、FTP(文件传输协议)、电子邮件、XML(可扩展标记语言)、XML-RPC(远程方法调用)、HTML(超文本标记语言)、WAV(音频格式)文件、加密、GUI(图形用户界面)以及其它系统相关的代码。记住,只要安装了Python,所有这些都能做到。这叫做Python的“遥控器”哲学。
除了标准库,还有各式各样的其它高质量库,你可以在Python包索引找到它们。
小结
Python的确是一个激动人心的功能强大的语言。Python那种性能和特性的恰到好处的组合让使用Python编程既有趣又简单。
) 语言简洁,使用方便灵活
C语言是现有程序设计语言中规模最小的语言之一,而小的语言体系往往能设计出较好的程序。C语言的关键字很少,ANSI C标准一共只有个关键字,种控制语句,压缩了一切不必要的成份。C语言的书写形式比较自由,表达方法简洁,使用一些简单的方法就可以构造出相当复杂的数据类型和程序结构。
) 可移植性好
用过汇编语言的读者都知道,即使是功能完全相同的一种程序,对于不同的单片机,必须采用不同的汇编语言来编写。这是因为汇编语言完全依赖于单片机硬件。而现代社会中新器件的更新换代速度非常快,也许我们每年都要跟新的单片机打交道。如果每接触一种新的单片机就要学习一次新的汇编语言,那么也许我们将一事无成,因为每学一种新的汇编语言,少则几月,多则上年,那么我们还有多少时间真正用于产品开发呢?
C语言是通过编译来得到可执行代码的,统计资料表明,不同机器上的C语言编译程序%的代码是公共的,C语言的编译程序便于移植,从而使在一种单片机上使用的C语言程序,可以不加修改或稍加修改即可方便地移植到另一种结构类型的单片机上去。这大大增强了我们使用各种单片机进行产品开发的能力。
) 表达能力强
C语言具有丰富的数据结构类型,可以根据需要采用整型、实型、字符型、数组类型、指针类型、结构类型、联合类型、枚举类型等多种数据类型来实现各种复杂数据结构的运算。C语言还具有多种运算符,灵活使用各种运算符可以实现其他高级语言难以实现的运算。
) 表达方式灵活
利用C语言提供的多种运算符,可以组成各种表达式,还可采用多种方法来获得表达式的值,从而使用户在程序设计中具有更大的灵活性。C语言的语法规则不太严格,程序设计的自由度比较大,程序的书写格式自由灵活。程序主要用小写字母来编写,而小写字母是比较容易阅读的,这些充分体现了C语言灵活、方便和实用的特点。
) 可进行结构化程序设计
C语言是以函数作为程序设计的基本单位的,C语言程序中的函数相当于汇编语言中的子程序。C语言对于输入和输出的处理也是通过函数调用来实现的。各种C语言编译器都会提供一个函数库,其中包含有许多标准函数,如各种数学函数、标准输入输出函数等。此外C语言还具有自定义函数的功能,用户可以根据自己的需要编制满足某种特殊需要的自定义函数。实际上C语言程序就是由许多个函数组成的,一个函数即相当于一个程序模块,因此C语言可以很容易地进行结构化程序设计。
) 可以直接操作计算机硬件
C语言具有直接访问单片机物理地址的能力,可以直接访问片内或片外存储器,还可以进行各种位操作。
) 生成的目标代码质量高
众所周知,汇编语言程序目标代码的效率是最高的,这就是为什么汇编语言仍是编写计算机系统软件的重要工具的原因。但是统计表明,对于同一个问题,用C语言编写的程序生成代码的效率仅比用汇编语言编写的程序低%~%。
尽管C语言具有很多的优点,但和其他任何一种程序设计语言一样也有其自身的缺点,如不能自动检查数组的边界,各种运算符的优先级别太多,某些运算符具有多种用途等。但总的来说,C语言的优点远远超过了它的缺点。经验表明,程序设计人员一旦学会使用C语言之后,就会对它爱不释手,尤其是单片机应用系统的程序设计人员更是如此。
C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C++编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢%~%。
C++语言具有以下特点:
C++是C语言的超集。它既保持了C语言的简洁、高效和接近汇编语言等特点,又克服了C语言的缺点,其编译系统能检查更多的语法错误,因此,C++比C语言更安全。
C++保持了与C语言的兼容。绝大多数C语言程序可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用于C++程序中。
支持面向对象程序设计的特征。C++既支持面向过程的程序设计,又支持面向对象的程序设计。
C++程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
C++避免平台限定或没有普遍用途的特性。
C++不使用会带来额外开销的特性。
C++设计成无需复杂的程序设计环境。
写在最后:学编程,其实每个人都有自己的选择,每一种编程语言的存在都有其应用的方向,选择你想从事的方向,去进行合适的选择就对了!对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!