• 怎样写一个新编程语言


    怎样写一个新编程语言

    编程思想+计算机结构:

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

    计算机结构:控制结构;

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

    编程范式的确定

    类型系统的确定;

    内存模型的确定;

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

    函数调用对应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
     
  • 相关阅读:
    重学数据库
    小炒肉
    地三鲜
    mac安装使用visualbox不能启动
    idea Services dashboard
    C# 使用Linq问题
    IDEA 修改页面不重启
    idea提交代码失败
    Idea git 强制同步fork的项目,会覆盖本地上传的文件吗?
    了解swagger遇到的问题
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10580524.html
Copyright © 2020-2023  润新知