“我从不喜欢编程,过去不喜欢,现在也不怎么喜欢。我唯一喜欢的与计算机有关的,就是以解决问题为中心,这点永远不变。”-----:PHP之父 拉姆斯·勒多夫
对于PHP这种语言,目前很多人的概念还停留在:
1.轻易不要选择php,毕竟他不怎么样;
2很多大的项目都是用php语言写的,例如脸书、维基百科等。如果用 Ruby、Erlang、 Haskell这些语言来表达他们的应用程序,会不会更好呢?
也许情况不是这样。虽然PHP本身有非常多的缺陷,但他的编程环境可以抵消这些缺陷。所以,现今人们对于如何提高PHP的编程语言水平保有非常大的热情。与PHP本身的缺点相反的是,PHP这门语言比其他竞争的变成语言为开发者提供了更多关于新建、改变以及创建一个成功的项目的支持。
与当前流行的编程语言不同,PHP产生于web服务器。PHP的优势大部分在于结果导向和服务端执行的编程环境中。
PHP的含义是“个人主页”。PHP在1995年由Rasms Lerdorf发布初始版本,着眼于支持小型,简单的动态网络应用,例如在网络早期受欢迎的留言板和计数器。
从PHP发布以来,它一直被用在许许多多复杂的项目之中,这大大超出了PHP创建者们的预期。在此过程中,PHP完成了几个重大的版本更替,每一次的版本更替都给这些更复杂的应用程序带来新的机制。在2016年,PHP凭借着自身丰富的功能,已经成为混合范式开发生产语言(MPDPL)这个大家庭的一员,这个家庭的成员还包括:JavaScript,Python,Ruby和Lua如果你仅仅只接触过早期版本的PHP,那么最新版本的PHP代码库的特性会给你一个惊喜。
PHP的优点
第一,状态。每一个网页请求都是从一个完完全全的白板开始。除了提供原始功能和生命支持的标准的全局变量,函数和类以外,它的命名空间和全局变量都是未初始化的。通过从已知状态开始每一个请求,我们可以得到一种本质上的故障隔离;如果请求t 遇到了软件的缺陷和失败,这个缺陷不会直接干扰后续的请求t+1。状态驻留在程序堆以为的其他地方,当然它有可能有状态地弄糟数据库,或者缓存,或者文件信息系统。但是PHP和所有允许存在的可能环境分担了它的弱点。隔离请求堆从另一个方面降低了大多数程序缺陷的成本。
第二,并发。一个独立的网络请求运行在一个单独的PHP线程上。乍看,这似乎是一个愚蠢的限制。但是一旦你的程序执行在了一个网络服务器的上下文中以后,我们就有了一个可用的自然并发:网络请求。异步地CURL到本地服务(甚至是网络服务)提供了一个开发并行性的无共享,拷入/拷出的方式。在实践中,这对错误来说比大多数其他通用语言提供的锁共享状态方法要更安全,更具有弹性。
最后一个,事实上PHP程序在一个请求级别操作意味着程序员的工作流程是快速而有效的,并保持随着应用的变化而快速变化。许多开发者使用的语言声称是这样,但是如果它们没有为每一个请求重置状态,主事件循环将和请求共享程序级状态,它们几乎总是需要一些启动时间。例如,对一个典型的Python 应用服务,调试周期看起来像这样“想;编辑;重启服务;发送一些测试请求”。即使“重启服务”只花了几秒,但这也会让我们人类有限的大脑为了保持到微妙状态浪费的时间。
PHP的缺点
1. 未知类型转换。
程序员每天都在比较编程语言,例如整数和浮点数与> =运算符; heck,甚至C都是允许。其意图是完全清楚的。不太清楚的是使用==比较字符串和整数意味着什么,不同的语言做出了不同的选择。 PHP在这个部分的选择是特别不恰当的,这导致了异常和未检测到的错误。例如,123 ==“123foo”求值为true,但0123 ==“0123foo”是false(hmm)。
2.值语义,引用的不一致。
PHP 有一个明确的语义--赋值,参数传递和返回都是通过值来传递。程序员可以选择参考语义与注释。这将与PHP 4和5中引入了面向对象的编程程序冲突。 PHP的面向对象符号大部分是从Java借鉴的,Java具有通过引用处理对象的语义,而基本类型由值来处理。所以PHP的语义的当前状态是对象通过引用传递,基本类型通过值传递,但是旧的引用语义和&表示法依然保留,有时候与新的方式对接会出现未知的现象。
3.哲学。
PHP进行了非常多的尝试来满足运行需求,它甚至做了一些很奇特的事情。例如,除以0不会抛出异常,或返回INF值,或终止请求。默认情况下。它警告并赋值为false。由于false在数值上默认值0,所以许多应用程序在部署和运行中没有检测到除以0的错误。这个特殊的问题在PHP 7中改变了,但是设计的动力是不断的发展,在过去它可能有意义的,也遍及很多的库中。
4.标准库中不一致。
在PHP发展初期,其受众者大都熟悉C语言,许多API使用C标准库的设计语言:六个字符的小写名称,成功和失败返回一个整数返回值,返回值为“实数“,返回值由调用者out参数返回等等。随着PHP成熟,通过前缀_命名空间的C风格变得更加普遍:mysql_ ...,json_ ...等等。最近,Java风格的CamelCase类的camelCase方法的已经成为最多的常见的引入新函数的方式。因此,有时我们看到的代码片断交错表达式像新DirectoryIterator($路径)与if(!($f = fopen($ p,'w +'))...一个全新的方式。
使用了PHP的这些项目的成功,主要归功于 PHP环境的特性,以及其带来的高节奏的工作流。而环境的优势所带来的价值要比由语言缺陷所造成的问题更加重要。还有一点在 MPDPL 当中比较独特的就是, 以 Hack 和 HHVM 的形式向更高的性能,更安全和更高的可维护性这些方面的迁移,途径是明确的。Slack 目前正处在向 HHVM 过渡的后期阶段,以及向 Hack 过渡的早期阶段,而我们也乐观地认为它们将会让我们的更加快速的产出更好的软件。
以上就是“最好的编程语言:详谈php优缺点”的详细内容,想要了解更多php教程欢迎关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/8442/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料