写点什么

为什么在 20 多年后,我仍然爱着 PHP 和 JavaScript

  • 2022-08-19
    北京
  • 本文字数:1868 字

    阅读完需:约 6 分钟

为什么在 20 多年后,我仍然爱着 PHP 和 JavaScript

二十多年过去了,仍然有很多人对 PHP 和 JavaScript 情有独钟。


在过去的二十年间,从 C 到 Common Lisp,从 Java 到 Python,从 C++ 到 TypeScript,我在工作中用过十多种编程语言,但我却偏偏对那些质量堪忧的语言情有独钟。


为什么说质量堪忧?因为 PHP 和 JavaScript 让人诟病的地方确实不少:PHP 是一门类型松散的语言,所以经常孕育出糟糕的代码, JavaScript 和 Node.js 也基本是这样。


即便这样,我也依然很喜欢用 PHP 和 JavaScript 来编程

Python 很好,但 PHP 确实更容易使用


PHP 诞生于上世纪九十年代中期,岁数甚至比很多程序员还大。我是从 2000 年初开始接触 PHP 的,当时它刚刚从版本 4 过渡到版本 5。后来,我开始在自己编写的 CodeIgniter ZendFramework 框架中编写应用程序。


在我看来,PHP 之所以能够保持长青、多年过去仍无衰老迹象,主要原因就是它被嵌入到了全球各地的新旧应用程序当中、也被嵌入不分老少的开发者头脑当中。有些人用过几年,也有些人用了几十年,PHP 都在他们心中留下了深刻印象。开发者不会消失、编写出的商业代码也没有消失,所以 PHP 依旧健在。而且有趣的是,Python 其实诞生于 1991 年,比 PHP 还要早。而且虽然生命周期更长,但 Python 一直没能达到 PHP 目前的高度。


为什么会这样?


从个人观点出发,我觉得跟 PHP 相比,Python 使用起来要更麻烦。这个问题在 Python 3 中有所改善,但退回 15 年前,Python 还没有 PHP 中开箱即用的那些“花哨功能”(函数)。很多功能必须手动安装,否则就没得用。


而且长期贯穿 Python 语言的另一个老大难问题,就是其中的间隔语法。这种由代码间的空格数决定分隔关系的语法让很多人望而生厌。很多程序员喜欢按自己喜欢的方式分隔代码,而且完全受不了编程语言本身在这里动脑筋,而在这点上,PHP 就做得很好。

PHP 和 JavaScript 哪些方面让人着迷?

此外,PHP 和 JavaScript 还有更多让人着迷的地方,具体包括以下几个方面。

真正干实事的人在用


怎样理解 PHP 和 JavaScript 对真正干实事的人大有用处?也就是说,对于那些能理解商业需求、快速迭代,并有大量开发维护项目经验的人来说,PHP 和 JavaScript 这两种语言可谓是必需品

多年的发展让它们和自己的生态一同成长


PHP 8 可不是你太奶奶用过的 PHP3,而 ECMAScript 12 也不是你太爷爷写过的 JavaScript。这些老古董们所依赖的生态系统可没有原地踏步。像是 CPAN、PECL、npm 这类的工具让其他语言的发展卷了起来。JavaScript 一直以来都是创新的温床,带动了新范式和框架的层出不穷。

它们的质量常被其他因素弥补


这类“质量堪忧”的编程语言当初可并不是因为它们的优雅而出名的。它们更可能是在速度、部署难度、可延展性、工具、开发社群、框架,或者平台等方面更胜其他竞争者一筹。


我更偏爱 PHP 则是因为它的 CGI-bin 模式,它允许分块重构遗留代码库,还提供了简单易用的缓存和扩展方式,而且,开发者也完全不需要担心资源泄露。

更有趣


这些语言即使是在一些基本问题上都能出状况,这也就意味着用它们编程总会带给人们做实验的感觉。能够用并不优雅的语言写出优雅的代码总会让人享受到成功的满足感。

在这些语言面前众程序员人人平等


这些语言对程序员们的背景要求并不严格,即使是一无所知的小白都能在几天内让一个真正的网站跑起来。我当年就是一路从复制粘贴基础代码段一路成长到用 PHP2 和 PHP3 写出完全属于我自己的网站,而现在的我也能够用我积累的经验回报社群,帮助那些刚入门的初学者们,这一点让我感到非常自豪。

对十二岁小孩或刚从代码新兵训练营中毕业的年轻人所写的程序代码不屑一顾,这种自大并不可取。正是因为这些用户拥有多种教育背景,才让不甚完美的编程语言拥有了更友善、更活跃的社群环境。

没有什么能阻挡你写出好代码


无论是 PHP、JavaScript 还是 Perl,这些语言都提供了函数、变量、类、头等函数等行之有效的工具,有的还额外提供了 trait 和原型式继承。而一个优秀的软件则需要有产品定位、软件设计、命名和设计模式,通过在静态分析或单元测试中强化不变性,为开发者们提供快捷有效的反馈循环,以及一个良好的团队交流环境。这些要素可完全不依赖任何的编程语言。对于 JavaScript 和 PHP 来说,它们提供了可靠的库、实用的静态分析工具,以及出色的 IDE 支持,你甚至会发现,它们在工具方面比许多更“优质”的编程语言还要强大。

我爱遗留代码库


遗留代码库意味着产品性能的有保障,也意味着我能在其上做出更即时且有效的优化改进。对于我来说,再没有什么事情比和其他用户一起优化一款产品更美好了。


原文链接:https://the.scapegoat.dev/why-i-love-php-and-javascript/

2022-08-19 16:024266
用户头像
李冬梅 加V:busulishang4668

发布了 1011 篇内容, 共 623.6 次阅读, 收获喜欢 1181 次。

关注

评论

发布
暂无评论
发现更多内容

如何查看苹果手机的CPU型号?

雪奈椰子

OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

阿里巴巴云原生

阿里云 开源 容器 云原生

强大的日志权限管理:多索引与访问规则的创新应用

观测云

日志 数据安全

《数据结构与算法分析:Java语言描述(第3版)》PDF

程序员李木子

测试管理者的智慧:能力图谱指导下的职业发展之道

测吧(北京)科技有限公司

测试

KubeBlocks 研发轶事之 addon 抽象

小猿姐

数据库 Kubernetes 云原生 抽象

运营商大模型,数字中国的一枚“落子”

脑极体

AI 大模型

定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱

阿里巴巴云原生

阿里云 云原生 函数计算

Sentinel 新版本发布,提升配置灵活性以及可观测配套

阿里巴巴云原生

阿里云 开源 云原生

从 13 个企业关心的问题看懂用云范式的改变

阿里巴巴云原生

阿里云 云原生 云原生容器

C# 循环与条件语句详解

小万哥

C# 程序人生 编程语言 软件工程 后端开发

《Java性能权威指南(第2版)》PDF

程序员李木子

成本更低、更可控,云原生可观测新计费模式正式上线

阿里巴巴云原生

阿里云 云原生 可观测

测试管理的方法论宝典:工具、流程与最佳实践

测吧(北京)科技有限公司

测试

Databend 开源周报第 129 期

Databend

玩转数据处理利器:学会使用 YAML 文件轻松处理数据

测试人

软件测试 测试开发

聚道云连接器实现航信与用友NC凭证对接,助力企业实现数字化转型

聚道云软件连接器

案例分享

进击的 Serverless:Java 应用如何从容地面对突增流量

阿里巴巴云原生

阿里云 Serverless 云原生

「回看 Milvus 的 2023」:AI 热潮中的非典型向量数据库

Zilliz

Milvus 大模型 AIGC 向量数据库

云原生离线工作流编排利器 -- 分布式工作流 Argo 集群

阿里巴巴云原生

阿里云 云原生

走出大模型部署新手村!小明这样用魔搭×函数计算

阿里巴巴云原生

阿里云 云原生 函数计算

活动回顾丨云原生技术实践营上海站「云原生 AI &大数据」专场(附 PPT)

阿里巴巴云原生

阿里云 容器 云原生

影视行业使用云电脑能有哪些好处?云电脑有什么优势

青椒云云电脑

云桌面 云电脑 云电脑平台

左耳听风 - 软件开发与架构设计的原则「读书打卡 day 13」

Java 工程师蔡姬

读书笔记 程序员 个人成长 职业发展

搭建开发体育赛事直播间解说平台,现成源码框架功能模块具备

软件开发-梦幻运营部

项目管理中有效沟通的7大技巧

爱吃小舅的鱼

项目管理 项目经理 沟通技巧

笔记软件哪个好?超全的笔记软件盘点推荐:手写笔记、文本笔记、协作笔记、知识管理等!

彭宏豪95

效率工具 在线白板 办公软件 笔记软件 boardmix

Consul 留给你的时间不多了

阿里巴巴云原生

阿里云 云原生

为什么在 20 多年后,我仍然爱着 PHP 和 JavaScript_文化 & 方法_mmlmml_InfoQ精选文章