怎样写一个新编程语言
编程思想+计算机结构:
编程思想决定:类型系统(内存布局)+函数调用解释;
计算机结构:控制结构;
编程语言-》编译器-〉内存模型
编程范式的确定
类型系统的确定;
内存模型的确定;
类型系统对应内存;编译器要完成内存布局的指令;
函数调用对应cpu:编译器要完成调用约定;
编译器对abi的支持;
类型系统:类型系统与内存模型密切相关;
作者:Belleve
链接:https://www.zhihu.com/question/19942085/answer/18200093
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/19942085/answer/18200093
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 语义设计
- 语法设计
- 实现一个编译器
- 类型系统:是强类型还是弱类型?静态类型还是动态类型?是否有类型推导?如果有,基于哪种形式系统?是否允许子类型?是否允许递归类型?类型转换的机制如何?等等。
- 编程范式:你的语言是过程式(Imperative)还是声明式(Declarative)还是两者结合?对于「声明式」,是函数式(Functional)还是逻辑式(Logical)?是否允许元编程?等等。
- 存储:你的语言是否允许用户干预存储细节?是否允许指针算数?是否允许手动内存管理?变量(符号)的作用域规则如何?是词法作用域(Lexical Scoping)还是动态作用域(Dynamic Scoping)还是两者结合?
- 子程序:你的语言是否有子程序?如果有,他们是否是第一态(First Class)的?参数传递是按值传递还是按名传递?是否允许按引用传递?求值策略是急迫求值还是懒惰求值?参数之间的求值顺序是怎样?
- 流程控制:你的语言是否允许非结构跳转?是否有内建的异常处理机制?是否有连续体(Continuation)或协程(Coroutine)机制?
https://www.zhihu.com/question/19942085