为什么开发人员对于PHP语言褒贬不一
PHP 语言,作为服务器端开发的脚本语言,在网站开发方面非常有名。从1995年 Rasmus Lerdorf 创建之后,根据 W3Techs 的调查显示在已知的服务端编程语言中,PHP 占了82%。其中不乏WordPress,Facebook 这种公司。在 PyPL(编程语言流行度排行榜)中仅次于 Java,在 Toibe 排行中名列第六。2015年会有高性能的 PHP 7 发布。
像所有的技术一样,人们对它的评价参差不齐。我们来看看为什么有的人喜欢它而有的人诅咒它。
优点一:流行,容易上手
PHP 是目前最流行的编程语言。PHP 工具厂商 Zend 科技 CEO Andi Gutmans 如是说。New Media Campaigns公司的开发工程师 Josh Lockhart 对我们讲:PHP 是最容易学习的网站开发语言。它安装在绝大多数的服务器上。由于有实时更新的文档和问答,PHP 语言相对其他语言简单易学。
优点二:网站开发职位很多
Gutmans 还说,在服务器端的网站编程中PHP会帮助你找到工作。Dice.com 一个简短的调查中显示,和 PHP 相关的职位有3366个,相比于 Java 17418个和 Perl 4300个,Python 5429个少了一些,但是比 Ruby 的2973和985个 Objective-C 职位多一些。尽管比 Ruby,Python,Go,Rust 语言略逊,但是 Lockhart 认为 PHP 仍然是使用最多的语言之一。
优点三:仍然在不断发展
PHP 在不断兼容着类似 closures 和命名空间等技术,同时兼顾性能和当下流行的框架。Gutmans 说道,接触 PHP 并不需要知道 PHP 到底提供了哪些技术,Lockhart 作为一名开发人员讲:大家讲 PHP 认为是一个面向对象的开发模型。接下来的版本是7,将要提供更高性能的应用。Lockhart 指出Facebook 也在加强 PHP,比如他们的 HHVM 虚拟机,和 Hack 编程语言。
缺点:设计缺陷,缺少关注
博 主 Eevee 说,PHP 的每个功能设计都是有问题的。他对 PHP 的看法是极其糟糕的设计。Eevee 不仅不喜欢这个语言,对其框架也不能赞同。他认为 PHP 语言不稳定,总是出现各种意外。PHP 被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的 PHP 受到 Perl 的影响,带有 out 参数的标准库又是有 C 语言引入,面向对象的部分又是从 C++ 和Java 学来的。
Lockhart 得知 Eeveef 反对 PHP 的言论的时候他觉得有些夸张了。尽管是 PHP 的拥护者,Lockhart对于对 PHP 的批评还是很耐心的。
- 语言不持续化,特别在命名空间和参数顺序上。Lockhart:这些都很容易适应,不是大问题。
- PHP 还有很多遗留下来的东西,包括全局变量,魔法引用等。 Lockhart:这些不好的实现都会在不断地被淘汰。但在淘汰之前,它让变成习惯不好的程序猿有法可施。
- PHP 的关注度不够。Lockhart 也在不断努力提升 PHP 关注度。Lockhart:尽管断断续续,但是社区的人们仍然很关注 PHP。
对一门技术的喜厌程度来自很多方面,从个人习惯到项目需求,PHP没办法做到人见人爱,但是,你一定有很多话要对PHP说,那在下面的评论出说吧
为什么开发人员对于PHP语言褒贬不一的更多相关文章
- Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言
今年 5 月,谷歌在 I/O 大会上宣布,Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言. Kotlin 是一种面向现代多平台应用程序的编程语言,成为谷歌开发 Android ...
- 为什么我建议每个开发人员都需要学Python?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/10-reasons-why-every-d ...
- web 开发人员必须学习的 3 门语言
web 开发人员必须学习的 3 门语言:html css js HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 网页的行为
- .NET CoreCLR开发人员指南(上)
1.为什么每一个CLR开发人员都需要读这篇文章 和所有的其他的大型代码库相比,CLR代码库有很多而且比较成熟的代码调试工具去检测BUG.对于程序员来说,理解这些规则和习惯写法非常的重要. 这篇文章让所 ...
- .NET开发人员值得关注的七个开源项目 .
NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...
- Front End Developer Questions 前端开发人员问题(二)
问题来源:http://markyun.github.io/2015/Front-end-Developer-Questions/ 二.CSS 1.介绍一下标准的CSS的盒子模型?与低版本IE的盒子模 ...
- SharePoint Server 2013开发之旅(二):使用在线的开发人员网站进行SharePoint App开发
上一篇我已经介绍了新版本的SharePoint Server提供了四种主要的开发场景,其中一个全新的App开发模型让我们眼前一亮.这一篇我将介绍如何在线进行SharePoint App开发. 谈到Sh ...
- 开发人员看测试之TDD和BDD
前言: 已经数月没有来园子了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来.但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动力.最近这两天有听到Jbehave这 ...
- 给 Web 前端开发人员推荐20款 CSS 编辑器
CSS 和 HTML,JavaScript 是网页的基础,作为前端开发人员,对这三者都要很熟悉.特别是未来流行全栈开发的时代,每项技术都是你知识结构中必要的一个节点. 在开发中,选择好工具是非常重要的 ...
随机推荐
- 几个makefile小例子
http://www.blogjava.net/canvas/articles/quick_makefile.html http://www.cnblogs.com/azraelly/archive/ ...
- MVC4 + EF + System.Threading.Thread 出现的问题记录
项目要求是页面监测到后台数据库用户数据(Users)变化,前台做出相应的响应和操作. 一.参考很多资料,大概有几种方式: 参考资料地址:http://www.cnblogs.com/hoojo/p/l ...
- asm.uew
/L16"ASM" Nocase Line Comment = ; File Extensions = ASM INC DEF /Colors = ,,,,, /Colors Ba ...
- Delphi线程同步(临界区、互斥、信号量,包括详细代码)
当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源. 例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件的字符数.当然,在整个文件调入内存之前,统计它的计数是 ...
- Fragment销毁时replace和add两个方法的区别
这个首先从一个bug说起,如图: 我们都知道fragment切换有两种方式: 1. replace方式 transaction.replace(R.id.content, IndexFragmen ...
- Linq to Sql自动生成实体类重名情况的处理
使用Linq to sql自动生成实体类时,如果要生成多个库的实体类,往往会遇到类名重名的情况,也就是表名重名,这样编译会不通过,这种情况下要在自动生成的实体类文件中(.designer.cs后缀)将 ...
- codecomb 2092【课程选择】
题目描述 大学选课总是烦恼着很多人.现在X同学选出了很多备选课,但是有的课程之间是有时间冲突的.X不会分身,自然无法在同一个时间上不同的课.每个课可能有很多备选时间,但是每个课只需要选一个时间上就可以 ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- Android学习总结——SQLite
SQLiteDatabase类: 一.使用sql语句操作数据库 SQLiteDatabase db = openOrCreateDatabase("database.db", MO ...
- java值传递
Java使用按值传递的函数调用方式,这往往使我感到迷惑.因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递.其实经过学习,Java在任何地方,都一直发挥着按值传递的本色. 首 ...