写点什么

为什么在 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:024243
用户头像
李冬梅 加V:busulishang4668

发布了 983 篇内容, 共 588.3 次阅读, 收获喜欢 1143 次。

关注

评论

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

你知道你和高薪的距离在哪里吗?这份“并发编程笔记,redis分布式锁原理java

Java 程序员 后端

你确定你真的理解_双亲委派_了吗?!,阿里内部核心Java进阶手册

Java 程序员 后端

从构建小系统到架构分布式大系统,Spring Boot2的精髓全在这里了

Java 程序员 后端

从某度外包逆袭成为阿里架构师,分享我的Java进阶成长笔记

Java 程序员 后端

以GraalVM原生镜像的方式运行Spring Boot应用程序,mybatisjoin原理

Java 程序员 后端

你不会仅仅把Redis作为缓存的工具吧?给你一亿个keys,如何高效统计

Java 程序员 后端

你曾遇到过哪些大厂的-Java-面试?,mysql入门书籍哪本好

Java 程序员 后端

CANN 5.0黑科技解密 | 算力虚拟化,让AI算力“物尽其用”

华为云开发者联盟

AI 算力 CANN 昇腾 算力虚拟化

从小公司跳槽到阿里,靠着刷多套面试题,成功拿到蚂蚁金服P7Offer

Java 程序员 后端

从腾讯T3-3大佬手上获得的Java架构进阶PDF文档,图文并茂,真香(1)

Java 程序员 后端

从Mybatis源码到Spring动态数据源底层原理分析系列二、Mybatis执行器源码分析

Java 程序员 后端

作为java程序员,在金三银四季你遇到过哪些质量很高的java面试?

Java 程序员 后端

使用 nodejs 中的 http 模块实现几个超实用的工具,实战java虚拟机葛一鸣第二版pdf

Java 程序员 后端

你们初刷leetcode时会怀疑自己的智商吗?,java中级面试题下载

Java 程序员 后端

你技术这么好,总要改变点什么把!(1),2021我的Java大厂面试之旅

Java 程序员 后端

使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题

Java 程序员 后端

从单体式架构迁移到微服务架构,3年Java开发工程师面试经验分享

Java 程序员 后端

架构实战营-毕业总结

王晓宇

架构实战营

优化技术专题-线程间的高性能消息框架-深入浅出Disruptor的使用和原理

Java 程序员 后端

你技术这么好,总要改变点什么把!,java面试项目中你遇到的难题

Java 程序员 后端

你知道 Java 类是如何被加载的吗?,mybatis从入门到精通pdf百度云

Java 程序员 后端

使用IDEA的Docker插件部署SpringBoot项目,让我成功在寒冬中站稳脚步

Java 程序员 后端

下班约会时来了新需求,咋办?

华为云开发者联盟

ide 开发 代码 华为云 华为云DevStar

优秀如我毅然和女票分手,面试字节跳动技术四面吊打面试官,终获取到Offer

Java 程序员 后端

优质高效!基于Spring-boot-admin的微服务监控系统实现

Java 程序员 后端

从一次线下读书会获得的收获,linux使用教程

Java 程序员 后端

你遇到过哪些质量很高的 Java 面试?,nginx教程阮一峰

Java 程序员 后端

你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体

Java 程序员 后端

从腾讯T3-3大佬手上获得的Java架构进阶PDF文档,图文并茂,真香

Java 程序员 后端

代码简洁之道--笔记,2021华为Java面试真题

Java 程序员 后端

作为分布式服务框架,我用大白话给你解释Zookeeper的选举机制!

Java 程序员 后端

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