Scientific 库是仓颉语言在科学计算领域的重要基础设施,旨在为开发者提供一套类型安全、高性能、功能完备的科学计算工具链。
目标与定位
仓颉 Scientific 库对标 Python 生态中的 numpy、scipy、matplotlib,以及 MATLAB 和 Julia 等主流科学计算语言与环境。其目标是:
-
为仓颉语言在科学计算领域的应用提供坚实基础;
-
在保持高性能的同时,提供更强的类型安全性;
-
降低从 Python/MATLAB 生态迁移至仓颉的学习成本。
核心功能概览
1. 线性代数
提供与 numpy/scipy 类似的向量、矩阵与张量操作,包括:
-
数组创建:array, arange, linspace, meshgrid
-
数组操作:reshape, flatten, concatenate, vstack, hstack
-
矩阵运算:inv, solve, det, norm, lstsq, pinv
-
特征值与分解:eig, svd, lu, cholesky, qr 等
2. 绘图功能
基于 C++ 的 matplot++ 库封装,提供与 matplotlib 类似的接口,支持 55 种图形类型,包括:
-
线图、3D 图、直方图、条形图、箱线图、等高线图、极坐标图、曲面图等
-
支持地图、向量场、离散图等多种专业可视化需求
3. 统计分析
实现约 80 个连续分布(如 Gamma、T分布)与多种离散分布(如 Bernoulli、Poisson),并提供:
-
概率密度函数(PDF)与累积分布函数(CDF)
-
多元分布(如多元正态、Dirichlet)
-
摘要函数(均值、方差、偏度、峰度等)
-
统计检验(t检验、卡方检验、Mann-Whitney U 检验等)
-
相关性分析(Pearson、Spearman、线性回归等)
类型安全:仓颉的独特优势
与 Python 或 MATLAB 等动态类型语言不同,仓颉具备强类型系统,能在编译期发现类型错误,显著提升代码的可维护性与可靠性。具体体现在:
-
数值类型层次结构:如 Real、Float、Integer、Complex 等,函数可明确指定参数类型;
-
多维数组类型:定义 AbstractTensor 及其子类 Vector、Matrix、Tensor,避免维度不匹配的错误。
高性能:底层调用 BLAS
通过调用高效的 BLAS 后端(默认使用 OpenBLAS),仓颉 Scientific 库在矩阵运算等核心操作上达到与 numpy 和 Julia 相近的性能水平。
实战演示:线性回归

点击链接查看演示视频:仓颉workshop38期(0:23:06议题2开始),在该演示视频中詹老师展示了如何使用仓颉 Scientific 库实现线性回归,包括:
-
使用封装好的 linregress 函数;
-
使用更底层的 lstsq 函数;
-
结合绘图库可视化回归结果与残差分布。
整个过程体现了仓颉在类型检查 与代码清晰度方面的优势,即便是在类型转换或维度不匹配时,也能在编译阶段及时报错,避免运行时隐患。
未来计划
-
系统建模
基于仓颉的元编程机制,开发嵌入式系统建模与仿真语言,目标替代 MATLAB/Simulink 在该领域的地位。
-
机器学习
基于现有线性代数与统计基础,实现神经网络与传统机器学习算法,支持 CPU/GPU 计算。
-
教育场景与交互式环境
推动在教学中的应用,提供交互式科学计算体验,降低学习与使用门槛。
开源与社区共建
仓颉 Scientific 库已经开源 ,代码仓库位于: https://gitcode.com/Cangjie-TPC/scientific
欢迎对科学计算、系统建模、机器学习感兴趣的开发者加入,共同推动仓颉生态的发展。
总结
仓颉 Scientific 库不仅是一个科学计算库,更是仓颉语言在高性能计算与系统级开发中迈出的重要一步。它融合了类型安全、高性能与易用性,有望成为未来国产编程语言在科研、教育与工业应用中不可或缺的一环。