概要共6214字,预计自学时数16两分钟
图源:Google
我写这首诗有几天了,这里啥这时候那里啥这时候,但是不晓得甚么这时候发表。最近PHP 8发行,让我觉得现在“是这时候了”。
每个月我单厢看见没人说PHP正在逐渐落伍,他们不假如在采用它。假如你在许多高峰论坛或者Stack Overflow上看见有关“自学PHP”的问题,百分之百会看见没人发类似“为甚么会想ThoubalPHP?学点牛的不香吗,比如‘某牛词汇’”的论调。
我写PHP整整20年了(可能将更久,我不太提过我甚么这时候开始的了)。在用其它词汇的这时候,大多数情况下,我单厢直接忽视谈话的大部分内容。这么多年来,PHP都在慢慢“丧失创造力”,我早就假如不用它了。在任何词汇上我都算不上是专家,有关PHP我还有许多Thoubal的,但我发觉一场又一场地优先选择它。
偶而读到许多写的不错的劝人不要采用PHP的该文时,我也几乎被劝服了,所以我花了许多时间去自学其它词汇。我要宣称那些积极探索使我斩获斐然。尽管我可能将在采用上永远也达不到圣默内水平,但通过自学其它词汇,我对开发人员这个业余有了更进一步的理解。
假如说从这首诗中有甚么东西Thoubal的话,那是:去学捷伊词汇。但不原因在于“PHP丧失创造力了”——这是严重错误的观点。你要自学其它的词汇原因在于这对作为开发人员的你有益处,假如PHP真的要没关系了,那么你更假如去学别的词汇。但此刻,它并没有丧失创造力。
对许多写PHP的开发人员来说,当她们需要保卫自己的优先选择时,她们可能将种叠会摘下许多表单,那些表单显示了PHP在全站的热烈欢迎程度。尽管那些位数很令人振奋,我却是有些揣测它们暗含虚假。
他们要要认识到PHP畅销,原因在于人们对WordPress的钟爱。不论你讨厌不讨厌WordPress,都要宣称它的存在非常重要。但虽说,WordPress却是有许多瑕疵的,并且大有人在。但我晓得许多人都用WordPress完成许多有意思的事情,也赚了不少钱。
PHP不是WordPress,即使WordPress深深植根于PHP历史的土壤中,PHP要比WordPress好得多,好得多得多的多。WordPress有许多不足的地方,PHP也有很多不足的地方,但这并不意味着它们不适用于所有项目。
我一般不会用C++去写网络程序,至少它会排在我优先选择清单的末尾。但这不是说C++是种不好的词汇,它只是不适用而已,就像我不会用PHP去写硬件驱动或任何和AI有关的东西,这已经超出了它的能力范围了。
对词汇的优先选择当然也和你自身对它们的掌握程度紧密相连。就像老话说的那样:时间是金钱,用新学的词汇去进行一个项目往往是艰巨的,这会让本来就很紧张的时间雪上加霜。
我对PHP比较熟悉,所以我往往先优先选择它。我略懂一点Python,但我写PHP要得心应手得多。同一项任务我也可以选Python,但花费的时间可能将会是两倍(至少刚开始是这样的)。这并不是说我之后都不会采用Python或者我对Python有甚么不满的,只是说PHP是我的首选。
自学一门编程词汇并没有那么难,一个有经验的开发人员可能将花上一个周末就能掌握一门词汇的要点。但这并不意味着她们懂这门词汇。了解哪个内置函数做甚么不叫懂一门词汇,你要要有足够的经验晓得甚么这时候用甚么样的特性,或者明确这整个生态系统如何结合在一起。
我懂PHP,但我也晓得如何设置一个Nginx web服务器、如何配置FPM或opcache。我掌握的足够多,有能力摆脱依赖的影响,做出正确的优先选择。我晓得如何在生产环境中安全地部署PHP应用程序,而且我晓得假如不小心采用某些词汇特性,可能将会带来安全问题。那些事情不仅仅是“了解”一门词汇就能够晓得的。作为开发人员,他们需要投入大量的时间来自学他们优先选择的那些词汇之外的东西。
这是为甚么当有的开发人员说你选的词汇是“垃圾”,我会感到非常失望。我花了二十年的时间去在磨练这方面的技术,现在却来了个人告诉我,我的优先选择是严重错误的?
其实这并不是严重错误的优先选择,PHP给我带来了满意的工作。我之所以能住上漂亮的房子,能开着豪华的轿车,正原因在于我花了20年时间精通PHP。扯远了,假如接着讲为甚么PHP不是垃圾的。
许多讨厌PHP并认为它假如被出局的人,会列许多点来证明PHP是大错特错的优先选择。有许多他们这几年来一直听到的观点都是针对PHP的骨灰版本(我不晓得为甚么每个人都还抓着PHP4不放,搞啥呢?)。
还有些点根本是无稽之谈甚至是严重错误的。这不是争夺“我的编程词汇比你好”大赛,不需要歇斯底里,我打心底里认为每一种编程词汇都有它本身的使命。那些发明那些词汇的人(也是那些比我聪明得多的人)发明那些语言都是有原因的,编程词汇不是随随便便就能被搞出来的东西。
图源:unsplash
那么,为甚么要选PHP呢?
答案很明了:因为它就在那里。我是自学PHP的,没参加过多少正规培训,除了偶而参加的网络培训课程,我没有上面盖着“我可以教电脑做事情”的名牌大学毕业证。
我是学设计出身的,尽管我从大概七岁开始摆弄代码和电脑,但我对接受这方面的教育却没有同样的热情。我甚至不晓得为甚么,我热爱电脑热爱网络,却优先选择了平面设计。我不想赘述这方面的内容,因为尽管我有这个学位,但它在我今天的工作中却没有起到太大的作用。
我相信和大多数PHP开发人员一样,我开始采用PHP原因在于他们想网站做更多,不仅仅是显示一张图片和一段文字。当我学会了如何将数据从数据库里提取出来显示在网页上时,我万分激动,这太令人振奋了!这正是我想的,所以我便一头扎了进去。
后来,我遇到了WordPress。就像那些坐在电脑屏幕前,懂一点PHP基本知识的自以为是的人改变这一切一样,WordPress也改变着一切。WordPress的成功要归于像我这样的人,他们那些年轻人想一个自己的博客,却不晓得怎么自己建立。
你安装了WordPress……然后添加了一个插件,改变了主题……然后你对主题做了许多小小的改变,所以它完成许多其它的东西,或看起来有点不同。然后你修改了一个插件。然后你创造了自己的主题。然后你在想,我还能做甚么?
所以我认识了PHP,不是我优先选择了PHP,而是PHP优先选择了我。20年后我还在用PHP创造东西,早就不用WordPress了。我想我已经是个成熟的PHP开发人员,有能力来写这首诗了。
“PHP太简单了,你假如学点有挑战性的”
PHP那么畅销的其中一个重要的原因是它无处不在,哪里都装着它。就连你最普通的MacBook中也预装了PHP,真见鬼。
从头写PHP也非常容易,通常没有甚么特别的事情需要你做。创建一个index.php文件,在里面放一行PHP代码,然后上传到几乎所有的共享主机账户:
然后就完成了。入门PHP真的特别简单,你不需要晓得它的工作原理。你安安心心地干就完事了。然而,假如你相信的话,PHP的这种“易操性”实际上也可能将是它的一种缺点。理论上讲,假如PHP如此简单,那么用PHP编写危险的代码也非常容易。
一想到这,我有点坐立难安。这是否意味着人们不太可能将采用那些难的词汇来编写危险的代码?我在哪里读到过,微软为Windows发布的修补程序中,大约有70%是为了解决由c++引起的内存问题(这话不是我说的)。我揣测用c++写微软的人都是业余的,而且我很确定她们晓得自己在做甚么。
是的,尽管Windows比你用的购物车网站要复杂得多,但我认为这个观点是站得住脚的。Python是公认的新手友好型词汇,但却没没人说它“危险”。用任何词汇写任何危险的代码都是容易的。不是词汇创造了危险的代码,而是缺乏相关的知识创造了危险的代码。
“简单”不是劝退新手自学PHP的理由,相反,这给了初学者们更好的工具,好让她们在写代码的这时候做出更好的优先选择。这是也是帮助她们找到合适的资源正确自学PHP的原因。我却是挺幸运的,尽管我写过不少“危险”代码,我的自学之路上总会有许多贵人(不一定是PHP工程师)来帮助我找出需要改进的地方。
PHP很慢
图源:unsplash
并不。PHP 可以同步你写代码的速度。PHP是一种脚本词汇,因此将其与编译语言进行比较是毫无意义的,然而出于某种原因,我看见甚至没人将PHP与Rust或Go进行比较。那些比较没甚么意思。
把它和python或是Ruby比,可能将还好许多,但一种词汇的“速度”是由多种因素决定的,词汇本身,还有环境,运行的代码,解释器配置方式,等等。凭空就说PHP很慢是不够意思的。
对某些类型的任务,PHP确实很慢。例如,假如从事机器自学领域的工作,可能将就别首选PHP (尽管有许多很有趣的项目正展现出许多前景)。
有时你会看见许多基准测试,两种词汇做同一件事,比如循环超过100万条记录,做许多简单的计算。结果往往相差几毫秒,这常常有这时候被用来证明PHP运作慢(有这时候用来证明快)。假如你编写的软件,在对一百万条记录进行循环时,多花几毫秒就会造成灾难性的后果,那也无话可说。
WordPress挺垃圾的
我还蛮同意这个观点的。目前我不太讨厌WordPress,但我也宣称没有WordPress,我们很可能将也不会有今天的PHP社区。然而,因为一个软件就说一种词汇不好也有点草率。这就好像因为你不讨厌Microsoft Windows,就说C++是一种垃圾词汇一样。
PHP不是只有一种功能,WordPress也只是它的一部分。假如你想的话,有大量的框架和软件包供你优先选择。人们说Laravel是“让PHP再次炫酷”。我要宣称,这个框架是到目前为止我最讨厌的框架之一,并且对我来说在大多数项目中选它都是最容易的。
因为WordPress是由PHP写的,就说PHP不好有失公允。没人可能将会说WordPress反映了PHP的局限性,但那是很久以前的事了,而且从那时起这门词汇已经成熟了许多。
PHP不适合企业使用
为甚么呢?我都不晓得这种论调从何而来,但这种风真的很大。那么甚么才能让一种词汇“适合企业”呢?Java可能将是最受企业热烈欢迎的一种词汇之一了,但并不原因在于Java本身是适合企业的。原因在于Java EE平台的存在,我不是Java开发人员,所以有错热烈欢迎纠正。
在我看来,Java是一种构建企业应用软件的平台。听起来有点像一个框架,对吧?所以可能将这个问题假如是:“我最讨厌的PHP框架是不是适合企业的呢?”
要回答这个问题的话要再写一首诗了。我想说的点是PHP和其它任何词汇一样,都是足够适合企业采用的。这完全取决于你怎样用它。
顺便提一下,我曾是一个小型团队的一员,这个团队在南非一家最重要的金融机构的内部网络上构建并部署了一个事件管理平台(我可能将会写许多我在这方面的经验)。该应用程序完全是用PHP和JavaScript编写的。
随着新冠疫情的全面爆发,整个系统承受着巨大的压力,但它几乎应付了所有的压力。他们也遇到了许多问题,但都很快解决了。
PHP不可扩展
这可能将是唯一一个有点理据的观点了,但这比你想象的要复杂许多。事实上,假如你编写了像样的代码,PHP就能很好的扩展。当人们说PHP不可扩展时,她们通常指的是用PHP编写的应用程序可能将无法处理非常大量的请求(比如数百万)。
问题是,这并不是那么简单的,我认为许多对它的误解来自于WordPress,最近WordPress因有扩展性问题而出名。
来举个例子,Slack是一个通讯平台,曾一度想取email,它有几百万的用户,她们每天用的这个系统的后端是用PHP写的。假如这还不能说明PHP可扩展,那我也无话可说了。
许多人引用Facebook作为一个很好的例子,即使我认为Facebook在许多形式上还采用PHP,但大部分的应用都不用PHP了。但虽说,Facebook这个例子有点特殊。
谈论扩展性绕不开基础设施。假如你在一个简单的共享主机上托管一个WordPress博客,然后你突然得到成千上万的点击……这可能将是一个问题,你的主机会给你发一封令人讨厌的邮件,或者至少会给你开出比你预想的多得多的账单。
扩展应用程序涉及的不仅仅是词汇优先选择。有许多变化的部分,每当PHP首当其冲受到指责时,我都感到难过。在适合的环境和配置下,新版本的PHP完全能够每秒处理大量请求。Laravel Vapor是一个在AWS上运行的Laravel应用程序的第一方无服务器平台,它有许多非常令人印象深刻的位数。
我有这时候觉得扩展性这个问题有点夸张,我写PHP20多年了,我从来都没有遇到过每秒“数百万个请求”的情况。甚至类似的情况也没有。他们绝大多数的人都没有机会去建立下一个Facebook,不论他们有多想。
在现实中,他们建立的软件有针对性多了。他们打交道的是特定国家里的特定行业,所以他们不用担心需要面临每秒数百万个请求的情况。对他们参与的许多项目来说,这是一个巨大的数字。这并不意味着他们所做的不重要,只是意味着他们不需要考虑那种规模,扩展应用程序以处理数百万个请求并不是他们日常工作的一部分。
PHP好丑
你怕不是在开玩笑吧,我把最烦人的这个观点留到最后说。假如你是根据外观来挑选技术堆栈的话,那我想说你错了,你真的需要去重新评估一下你的优先选择方式了。
话虽这么说,我认为PHP一点也不难看。有的人觉得不好看很可能将是很早之前在HTML采用PHP,HTML是真的难看。问题是:现在没人这么干了,再没人这么干会被嫌弃的。
我不是说那些所谓的“美丽的词汇”是不好的优先选择,但“好看不好看”不假如成为你的评价标准。Java非常不好看,但却是世界上最畅销的词汇之一。鼓吹因为PHP难看而不要用PHP真的太傻了。
PHP可能将不是最美丽的词汇,但我发现写得好的话却是很有可读性的。PHP8也有许多捷伊工具可以让你的代码看起来更“美丽”。
图源:unsplash
我爱PHP
我真的爱PHP。我爱这种编程词汇和它的生态系统。我爱它在过去几年中的完善,PHP 8不仅仅是同一种词汇的另一种迭代。随着每个主要版本的发布,他们得到了更好和更有用的工具。
我讨厌PHP的易上手,但我也讨厌它的复杂,要成为一名专业的PHP开发人员有太多Thoubal的东西了。我讨厌Symfony 和Laravel,我认为开发团队作为PHP的核心,一直在推动这种词汇的进步。
但我最讨厌部分的却是当一个开发人员。不仅仅是写PHP,我讨厌用任何词汇写。我讨厌我可以告诉电脑可以去做甚么以及我教会了我自己如何去这么做。这归功于PHP。
没有PHP,我不晓得现在的自己会从事甚么工作。也许我会成为一个平庸的设计师,然后讨厌我的工作和生活(没有冒犯设计师朋友们的意思,我也有许多才华横溢的设计师朋友们,她们很热爱自己的工作)。
但最终,我用我爱的编程词汇从事了热爱的工作。
他们一起分享AI自学与发展的干货
如转载,请后台留言,遵守转载规范