首页 > 学习资料 > 编程知识

go 是更好的 php 2022-07-10 19:52:07

  很多 php 程序员转 go 是囿于当今大环境。今天我给大家带来一个新的观点——「go 是更好的 php」。

  还得从PHP showing its ** turity in release 7.4这篇文章说起。该文章说 PHP 从7.4这个版本开始走向成熟,文章列举了PHP的如下优点:

  完善的面向对象编程支持,主要包括

namespace 处理命名冲突inte ** ce 分离实现与接口traits 代码混入(mixin)支持类型系统 限制函数参数、返回值、类成员的类型

  完善的依赖管理体系,这一点主要由 composer 实现。

  支持 FFI(foreign function inte ** ce),可以很方便的跟各种C语言库(如 TensorFlow)交互,极大地扩展了 PHP 的能力。

  更加安全,主要是引入了更加现代更加安全的密码学类库 libsodium。

  性能不断提升,PHP7.4的性能大约是PHP5.6的3倍,比PHP7.0也快了近18%。主要的性能提升来自于PHP7.0的zval重构。而PHP7.4也能过引入 preload 特性进一步加快了代码的执行速度。PHP8.0 将引入 JIT 技术,届时会有更大的提升。

  作为一个老PHP程序员,我认为这篇文章只说了PHP的优点,而忽略了PHP的缺点。

不支持泛型。程序员无法限制PHP的数组的成员类型。运行时类型检查。PHP的参数类型检查是在代码执行的过程完成的,降低了执行效率。不支持多核。PHP虚拟机就是一个C语言的 while 循环,边读取边执行。如果想跑满多核,只能利用多进程或都多线程,多线程存在同步问题,多进程存在IPC问题。PHP本身和扩展都使用C语言开发,要想深入理解PHP,单写PHP代码是不够的。这在一定程度上增加了改进PHP的门槛。

  而 go 语言恰恰是解决了这些问题

支持基本的的范型 slice 和 ** p 都支持指定类型编译时类型检查,没有运行时开销基于线程实现协程,先天支持多核使用 go 语言自举,编译器和运行时本身由 go 语言加少量汇编语言开发,只要熟悉 go 语言就可以深入研究编译器和运行时代码支持类型推导,开发体验跟 php 这种动态语言类似

  go 语言跟 c 或者 java 相比确实性能上有不少损失,但跟 php 相比基本上可以实现各方面的吊打。如果非要说 go 有什么不如 php 的地方,那就只有社区开方性这一条了。go 是由 google 主导开发的,而 php 是由社区主导开发的。不或者一般开发者影响都不大。

  我在大学里就玩PHP,工作后也一直使用PHP作为主力开发语言,曾经也想着用 PHP 开发所有功能,我甚至还为php量身打造了一款 vim 开发插件。可 PHP 毕竟不是一门通用语言,最合适的应用场景就是写模版(这部分份额不断被node蚕食)。最终,在一个新项目启动的时候我还是选择了 go 语言。当然,go 语言远不只是一个更好的 PHP,但把 go 当成 PHP 来用,你会对 PHP 和 go 有不一样的理解。

  

相关标签:

<