我开发了一个语法与PHP相似度90%的静态语言

AI摘要
这是一篇关于自制编程语言“Sola”的技术知识分享。作者详细介绍了该语言的设计理念,它兼容PHP语法并增加了类型断言、泛型、协程等特性,同时通过静态类型实现的“万能数组”兼顾了开发便利性与高性能。文章还提供了该语言与Go、Java、PHP、Python在多项基准测试中的性能对比数据,展示了其介于成熟JIT语言与脚本语言之间的性能定位。

该语言相比PHP增加了类型断言、泛型、协程等支持,语法与PHP基本完全一致(除了PHP没有的东西),大量的全局函数移动到标准库。

phper们熟悉的$符号,静态调用::,完全一致,phper可以无缝上手,性能已经和golang、java达到了一个级别(JVM20多年的优化太强,还无法超过,但相比PHP已经是数十倍的翻倍)。

不用再花时间搞PHP扩展和配置

我还实现了php的万能数组,这也是很多php开发者们舍不得离开PHP的原因,在高性能场景可以选用高性能的类型数组,非性能敏感性场景则可以使用万能数组;最重要的是这个万能数组我采用静态类型实现,不依赖运行时,性能是php的数十倍,且通过语法糖,让它与PHP的数组写法完全一致,零成本迁移,我甚至在中途对做了大量工作改变了普通数组的语法,为的就是给万能数组让步。

// 普通数组
string[] $names = {"xiaoming", "xiaoqiang", "xiaogang"};

// 万能数组
$config := [
    "title" => "laearnku",
    "id" => 12345"son" => [
        "xx" => "yy",
    ]];
$config["title] = "重新赋值";

除了性能抗打,最重要的引入了协程,虽然php早就有了swoole,但是闭源不说,对windows平台支持差,用docker来映射本地文件开发时磁盘加载慢,除了开发起来不爽,很多人不愿意用,开发者也是问题,phper开发人员质量参差不齐,很多低水平的php开发者根本拿不住swoole。

// 协程
class Abcd {

    public function abcd() :bool {
        go self::test(); // 开启协程
        return true;
    }

    public function test(){
        ...
    }

}

自制编程语言也是我的梦想之一,我争取在一个月内整理好并且完善,开发好中央仓库然后开源beta版。

这个语言我暂时命名为sola,也希望能为它征集到一个新的名字

下面是简单的测试

测试对比对象

  • Go 1.23 - AOT 编译,完全优化
  • Java 21 JVM - HotSpot C2 JIT 编译器
  • Python 3.13.1 - 解释执行 + 部分 JIT 优化
  • PHP 8.2.0 - OPcache + JIT (tracing 模式)
  • Sola JIT - SSA + O1 优化

测试环境

  • 操作系统: Windows 11
  • 测试日期: 2026-01-09

性能测试结果

1. SimpleAdd (简单加法: a + b)

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~2-3 ns ~500M 1.0x (基准)
Java JVM 10,000,000 ~3-5 ns ~300M 0.6x
Sola JIT 10,000,000 ~5-10 ns ~150M 0.3x
PHP 8.2 JIT 10,000,000 ~50 ns ~20M 0.04x
Python 3.13 10,000,000 ~41 ns ~24M 0.05x

2. ComplexArithmetic (复杂算术: (a+b)*(a-b))

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~3-4 ns ~300M 1.0x
Java JVM 10,000,000 ~4-6 ns ~200M 0.7x
Sola JIT 10,000,000 ~8-12 ns ~100M 0.3x
PHP 8.2 JIT 10,000,000 ~56 ns ~18M 0.06x
Python 3.13 10,000,000 ~55 ns ~18M 0.06x

3. FibonacciIter(20) (迭代斐波那契)

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~10-15 ns ~80M 1.0x
Java JVM 10,000,000 ~15-20 ns ~60M 0.75x
Sola JIT 10,000,000 ~30-50 ns ~30M 0.4x
PHP 8.2 JIT 10,000,000 ~740 ns ~1.4M 0.02x
Python 3.13 1,000,000 ~430 ns ~2.3M 0.03x

4. Factorial(10) (阶乘)

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~8-10 ns ~100M 1.0x
Java JVM 10,000,000 ~10-15 ns ~80M 0.8x
Sola JIT 10,000,000 ~20-40 ns ~40M 0.4x
PHP 8.2 JIT 10,000,000 ~155 ns ~6.4M 0.06x
Python 3.13 1,000,000 ~232 ns ~4.3M 0.04x

5. Sum(100) (求和 1到100)

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~30-40 ns ~30M 1.0x
Java JVM 10,000,000 ~40-60 ns ~20M 0.7x
Sola JIT 10,000,000 ~80-120 ns ~10M 0.3x
PHP 8.2 JIT 1,000,000 ~1,075 ns ~930K 0.03x
Python 3.13 1,000,000 ~1,425 ns ~700K 0.02x

6. SumOfSquares(100) (平方和)

语言/运行时 迭代次数 ns/op ops/sec 相对性能
Go 原生 10,000,000 ~40-50 ns ~25M 1.0x
Java JVM 10,000,000 ~50-70 ns ~18M 0.7x
Sola JIT 10,000,000 ~100-150 ns ~8M 0.3x
PHP 8.2 JIT 1,000,000 ~1,259 ns ~795K 0.03x
Python 3.13 1,000,000 ~2,369 ns ~422K 0.02x

性能梯队

  1. 第一梯队:AOT 编译语言

    • Go:完全编译,内联优化,寄存器分配完美
    • 性能: ★★★★★
  2. 第二梯队:成熟 JIT

    • Java HotSpot C2:多年积累的优化技术
    • 性能: ★★★★☆
  3. 第三梯队:新 JIT 实现

    • Sola JIT:基础优化
    • 性能: ★★★☆☆
  4. 第四梯队:脚本语言 JIT

    • PHP JIT:针对脚本特性的 JIT
    • 性能: ★★☆☆☆
  5. 第五梯队:纯解释执行

    • Python 3.13:主要是解释执行
    • 性能: ★☆☆☆☆
:) wink
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!