语言选型(GO和PHP)

69 阅读1分钟

PHP

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

Go 对应的解决方案

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