怎样写一个新编程语言

怎样写一个新编程语言编程

 

编程思想+计算机结构:编程语言

编程思想决定:类型系统(内存布局)+函数调用解释;函数

计算机结构:控制结构;布局

 

编程语言-》编译器-〉内存模型设计

 

编程范式的肯定指针

类型系统的肯定;协程

内存模型的肯定;递归

 

类型系统对应内存;编译器要完成内存布局的指令;内存

函数调用对应cpu:编译器要完成调用约定;作用域

 

编译器对abi的支持;

 

 

 

类型系统:类型系统与内存模型密切相关;

 

做者:Belleve
连接:https://www.zhihu.com/question/19942085/answer/18200093
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

  1. 语义设计
  2. 语法设计
  3. 实现一个编译器
实际上,最难的每每是第一步,也就是语义设计,由于它决定了你的语言的最终形态。「语义」的内容会很宽泛,下面这些都是语义的范畴:
  1. 类型系统:是强类型仍是弱类型?静态类型仍是动态类型?是否有类型推导?若是有,基于哪一种形式系统?是否容许子类型?是否容许递归类型?类型转换的机制如何?等等。
  2. 编程范式:你的语言是过程式(Imperative)仍是声明式(Declarative)仍是二者结合?对于「声明式」,是函数式(Functional)仍是逻辑式(Logical)?是否容许元编程?等等。
  3. 存储:你的语言是否容许用户干预存储细节?是否容许指针算数?是否容许手动内存管理?变量(符号)的做用域规则如何?是词法做用域(Lexical Scoping)仍是动态做用域(Dynamic Scoping)仍是二者结合?
  4. 子程序:你的语言是否有子程序?若是有,他们是不是第一态(First Class)的?参数传递是按值传递仍是按名传递?是否容许按引用传递?求值策略是急迫求值仍是懒惰求值?参数之间的求值顺序是怎样?
  5. 流程控制:你的语言是否容许非结构跳转?是否有内建的异常处理机制?是否有连续体(Continuation)或协程(Coroutine)机制?
https://www.zhihu.com/question/19942085
相关文章
相关标签/搜索