您的位置:首页 > 其它

动态语言和虚拟机实现, 暨介绍一下我设计的一个新型的动态语言(2)

2008-01-08 15:43 387 查看
正式有了虚拟机这个中间态, 很多事情就方便很多了. 我们要看到这一点, 另外, 也要看到不够好的地方 .

比如这个虚拟机本身就是有待商榷的. 我们讨论一下java的虚拟机有一种字节码,. .NET平台的虚拟机有一个il, il非常强大, 看着有统一一切的声势. 这两种字节码, 都是对传统机器代码的一种抽象,
大家有兴趣的话, 可以 反编译一下看看. 都是类似汇编的一种平板式的代码, 通过call, jump来实现函数调用, 代码跳转. 这些jump, 对程序员来说是隐藏的. 所以实际没有什么问题, 不过实现虚拟机的时候, 仍旧是要做jump这件事情来做到跳转.

而实际上, 代码并非是平板一块, 代码是一种树状结构.



用跳转来实现树状结构是一种比较传统的办法, 也比较直接简单. 不过, 事情发展到现在. 我看了一些scheme的lisp语法, S-EXP 的理论, 我觉得, 虚拟机可以做的更加微内核, 高性能, 高扩展.

就是用S-EXP的方式来组织虚拟机, 将会做到一个更加微内核, 从而得到更高的性能, 同时还得到了很高的扩展性. 正如lisp的介绍里说的, 连+-*/都不是语言本身的. 理论上而言, 呵呵.
另外, 也有一些额外的好处, 就是S-EXP的中间代码. 记住, 不是bytecode, 在载入的时候, 会有非常高的速度.

当然, 我们在这里绝不是再去实现一个scheme或者lisp, 据说性能上比较差的. 我们要做的事情, 是对scheme进行一些改造提取, 在表现层, 我选择python的一些改造.

scheme+python, 这个组合, 绝对能够大放异彩.

我在后续的文章里面会记录我在实现这个虚拟机的一些思路和准备工作.
呵呵, 作为一个专业的程序员, 我们不能太着急写代码的. 需要把设计做好, 理论指导实践, 永远是真理啊..>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐