找回密码
 立即注册
查看: 171|回复: 0

计算机语言的转换

[复制链接]
发表于 2023-2-21 18:49 | 显示全部楼层 |阅读模式
这个世界上有许多的计算机语言,很多语言已经非常稳定,有成熟的模块和生态系统,一种新的语言的出现,要想获得更多人的认可,难度越来越大。

算法作为沟通计算机和人类思维的抽象媒介,需要用具体的计算机语言实现,才能展现它的能力。相同的算法,在许多的语言中都有实现,因着不同的语法和语言特性,这些代码总是千差万别。

如果有一种中间语言,能够描述算法,需要运行的时候,根据运行环境,转换成不同的计算机语言,那么就会省却很多的工作,创造巨大的价值。

这种语言应当拥有大部分语言都有的特性,是许多语言的子集,而不是超集。

    变量声明
    变量赋值
    命名空间
    导入模块
    函数定义
    强数据类型
    条件判断
    循环迭代
    基本数据结构: 数组和字典
这门中间语言要尽可能简洁,方便书写,容易阅读。就好像 JSON 数据规范,作为不同语言交换数据的格式,也应当有一种在不同语言直接交换算法的形式。

这门语言也可以当做伪代码来使用,因为足够简洁。

这门语言的语法应当容易的修改,所以它应当是语法分离的架构。因为这门语言的设计和维护,还有针对各种语言的转换,都应当由许多人来维护,所以应当足够简单。

MyLang 就是因着这种需要诞生了:

    ns ToLua

    use Core
    use Excore
    use LintMyAst
   
    fn ast-tolua($t $ast) str
      my $strs $t.atoms-tolua-strs($ast)
      return $strs.join(Nln)
这门语言的语法经历过许多的变化,才成为现在的样子,它还会继续变化,为了更容易书写,更容易读,更容易理解,所以会有很多的版本,也会以很高的频率发布更新。

让我们就了解这门语言的架构和核心算法,看看一门语言是如何设计,解析,类型验证和转换的。

编译器也是一种转换器,只不过是将一种抽象程度高的语言转换成更接近机器的语言,也许是汇编语言,也许是某种虚拟机能接受的语言。

解释器,JIT解释器也是另外一种数据转换,它们都是可以单独分离的算法,以某种数据结构作为数据交换规范。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-20 17:21 , Processed in 0.103971 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表