构建自己的语言工具包——关于编程语言,我们需要关注什么?
在业界拥有众多高级编程语言的今天,如何系统化构建自己的编程语言知识库,这是本文的核心。
@
应用领域
这门语言的应用领域主要在哪里?常用于业务开发还是系统开发?
如C/C++/Rust主要用于系统编程,Java/Go主要用于业务开发,Python/Shell主要用于脚本开发,Python也用于机器学习。
开发效率
这门语言的语法是否友好,,标准库是否健壮,支持的数据结构如何?
生态环境
这门语言工具链是否齐全,生态是否强大?编译工具/测试工具?
工程管理
这门语言的工程管理能力如何?
性能
这门语言的抽象程度如何?是否接近机器?
安全性
在缓冲区溢出、数组越界、指针非法访问、未定义行为等领域,这门语言是否做了处理?处理效果如何?
跨平台能力
这门需要能否“一次编译,到处运行”?是否强依赖于体系结构?
执行模式
这门语言的翻译方式是编译 or 解释 or 混合?
命令行
这门语言是否支持界面交互?(一般解释性语言有)
编程范式
这门语言支持哪些编程范式?面向过程/面向对象/函数式/泛型?
面向对象
这门语言如何实现封装、继承和多态的?
并发编程
这门语言有哪些关于并发的语言级机制?有哪些原生支持的并发组件?是否支持异步编程?
网络编程
这门语言的网络编程接口设计的如何?网络编程的一些生态工具是否具备?
泛型编程
这门语言是否支持泛型?
元编程
这门语言是否支持宏、模板、反射、自省...?
类型系统
这门语言是静态类型还是动态类型?是强类型还是弱类型?类型是否丰富?有类型推断机制吗?如何做安全的类型转换?
时间处理
这门语言是否支持高精度的时间类型?
字符串处理
这门语言的字符串类型设计是否优雅?使用简单?
错误处理
这门语言错误处理主要是依靠返回值机制还是异常机制?
内存管理
这门语言的内存管理是手动管理还是自动回收(GC)?
这门语言的内存模型如何?
系统调用
这门语言如何做系统调用?比如文件操作?
其他
这门语言在随机数、散列、压缩编码方面的生态如何?
关于编程语言,如果有更多需要关注的地方会随时更新。