计算机语言的转换
这个世界上有许多的计算机语言,很多语言已经非常稳定,有成熟的模块和生态系统,一种新的语言的出现,要想获得更多人的认可,难度越来越大。算法作为沟通计算机和人类思维的抽象媒介,需要用具体的计算机语言实现,才能展现它的能力。相同的算法,在许多的语言中都有实现,因着不同的语法和语言特性,这些代码总是千差万别。
如果有一种中间语言,能够描述算法,需要运行的时候,根据运行环境,转换成不同的计算机语言,那么就会省却很多的工作,创造巨大的价值。
这种语言应当拥有大部分语言都有的特性,是许多语言的子集,而不是超集。
变量声明
变量赋值
命名空间
导入模块
函数定义
强数据类型
条件判断
循环迭代
基本数据结构: 数组和字典
这门中间语言要尽可能简洁,方便书写,容易阅读。就好像 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解释器也是另外一种数据转换,它们都是可以单独分离的算法,以某种数据结构作为数据交换规范。
页:
[1]