动态语言和虚拟机实现, 暨介绍一下我设计的一个新型的动态语言(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, 这个组合, 绝对能够大放异彩.
我在后续的文章里面会记录我在实现这个虚拟机的一些思路和准备工作.
呵呵, 作为一个专业的程序员, 我们不能太着急写代码的. 需要把设计做好, 理论指导实践, 永远是真理啊..>
比如这个虚拟机本身就是有待商榷的. 我们讨论一下java的虚拟机有一种字节码,. .NET平台的虚拟机有一个il, il非常强大, 看着有统一一切的声势. 这两种字节码, 都是对传统机器代码的一种抽象,
大家有兴趣的话, 可以 反编译一下看看. 都是类似汇编的一种平板式的代码, 通过call, jump来实现函数调用, 代码跳转. 这些jump, 对程序员来说是隐藏的. 所以实际没有什么问题, 不过实现虚拟机的时候, 仍旧是要做jump这件事情来做到跳转.
而实际上, 代码并非是平板一块, 代码是一种树状结构.
用跳转来实现树状结构是一种比较传统的办法, 也比较直接简单. 不过, 事情发展到现在. 我看了一些scheme的lisp语法, S-EXP 的理论, 我觉得, 虚拟机可以做的更加微内核, 高性能, 高扩展.
就是用S-EXP的方式来组织虚拟机, 将会做到一个更加微内核, 从而得到更高的性能, 同时还得到了很高的扩展性. 正如lisp的介绍里说的, 连+-*/都不是语言本身的. 理论上而言, 呵呵.
另外, 也有一些额外的好处, 就是S-EXP的中间代码. 记住, 不是bytecode, 在载入的时候, 会有非常高的速度.
当然, 我们在这里绝不是再去实现一个scheme或者lisp, 据说性能上比较差的. 我们要做的事情, 是对scheme进行一些改造提取, 在表现层, 我选择python的一些改造.
scheme+python, 这个组合, 绝对能够大放异彩.
我在后续的文章里面会记录我在实现这个虚拟机的一些思路和准备工作.
呵呵, 作为一个专业的程序员, 我们不能太着急写代码的. 需要把设计做好, 理论指导实践, 永远是真理啊..>
相关文章推荐
- 动态语言和虚拟机实现, 暨介绍一下我设计的一个新型的动态语言(3)
- 动态语言和虚拟机实现, 暨介绍一下我设计的一个新型的动态语言(1)
- 关注各种高级语言虚拟机(high-level language virtual machine,HLL VM)的设计与实现,泛化至各种高级语言的运行时的设计与实现,也会涉及动态编译、GC、动态语言的编
- 设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能
- 用JavaScript脚本语言设计并实现一个函数,将三位数重新排列输出最大值
- Java语言 设计一个动物声音“模拟器”(用接口实现)
- 【脚本语言】一个简易的语言的设计与实现
- 一个基于约束传播的,玩具级微型计算语言的设计和简单实现
- 由动态类型语言想到IDE应该考虑实现的一个功能
- 大一 PROJECT REPORT#1 设计一个基于C的简单语言,并为其写编译器,汇编器,虚拟机
- oc是一个全动态语言,oc的一切都是基于runtime实现的!
- 一个脚本设计语言的设计与实现
- 实现一个SLR(1)的动态语言解释器
- 群上出的一个算法题,上我的解,大家可以用自己会的语言实现一下哦,我用的php
- 用 Lua 实现一个微型虚拟机-基本篇
- Xilinx ISE14.1用Verilog语言实现一个半加器并测试
- 设计并实现一个LRU Cache
- C#第1次试验(4)设计一个程序,输入10个数存入数组中,然后实现冒泡排序
- DAO设计模式---实现一个简单的注册(中)
- CGLib动态代理原理及实现的一个小例子