怎样写一个新编程语言编程
编程思想+计算机结构:编程语言
编程思想决定:类型系统(内存布局)+函数调用解释;函数
计算机结构:控制结构;布局
编程语言-》编译器-〉内存模型设计
编程范式的肯定指针
类型系统的肯定;协程
内存模型的肯定;递归
类型系统对应内存;编译器要完成内存布局的指令;内存
函数调用对应cpu:编译器要完成调用约定;作用域
编译器对abi的支持;
类型系统:类型系统与内存模型密切相关;
做者:Belleve
连接: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