1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
设计一个自己的编程语言.md 1.89 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2021-12-29 14:42 . rust 更新一些内容

设计一个自己的编程语言

前言

本文记录自己的一些奇思妙想:)

引用

本语言应该提供机器语言对应的所有功能,在此之上为了安全,做一定的约束。

原始指针(裸指针),对应机器码。

引用(受限指针)。

内存安全:

  1. 针对栈空间的引用: &ptr
    1. 不能(函数)返回引用和带有引用的结构,因为有可能指向释放的栈空间。
      1. 返回一个引用有什么意义?调用函数的人难道没有参数的引用嘛?返回引用没有多大用处,但是代价却巨大,让语法变得异常复杂。
    2. 引用不持有对象,所以随着栈空间消失而消失没有任何影响
    3. 多重引用传入变为一级指针。因为传递多重引用到子函数,并改写指向,有可能指向即将释放的栈空间。也就是可以修改指向的数据,但不能修改指向。(这个逻辑可以用于带引用的结构的传入)
    4. 因为不能返回,所以不需要标注生命周期。在子函数内都有效。在当前上下文可以静态分析。
  2. 针对堆内存的装箱(指针):boxed
    1. 所有权机制,由持有所有权的函数局部变量释放
    2. 可以返回
    3. 由库提供堆内存分配的功能
  3. 共享指针:可同时写入和读取的多功能指针。只适用瞬时(标记性)的业务或同步任务。
    1. 裸指针: *ptr
  4. 分时指针:同一时刻,只有一个写入或只有多个读取指针。可以配合事务性实施对等的读写关系。
    1. 静态借用规则
    2. 动态借用规则:装箱的,引用计数,和异步机制深度结合
      1. 同步指针: sync boxed

语言能力:

  1. 标量:对应机器码的表达式
    1. 范围 => 集合
  2. 集合:函数式
    1. 迭代器

借鉴:

  1. 尽量使用 c 语言的形式,不创造奇奇怪怪的语法,除非必要

参考

1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助