2006年2月15日星期三

纯javascript和汇编越来越像了

首先先说说类似之处:

1.指令都是执行很琐碎的功能,用起来比较吃力。别以为javascript是解释执行的高级语言就好,要获取一个HTML对象还要document.getElementById(),这一情形和用汇编的mov和add差不多??看起来是非常必需的指令,但往往自然语言的一个语义(例如c = a + b)必需翻译成几条这样的基础指令。

2.指令集版本多,而且由商业因素变化而变化,不存在必然的兼容。就好象不同CPU支持的指令集一样,javascript也是这样,你想写一个兼容多几种浏览的javascript那个调试难度就大咯,有些情况下几乎你要为每种浏览器写一次代码,测试也是要分开测试,这和写兼容多种CPU指令集的软件一样。现在有专门为某种硬件优化的编译器,例如你今天可以看到游戏有Run Greats on Pentium4 HyperThreading的欢迎屏,迟点就可能可以看到有网站写着Better Visual Effects on Windows Vista with Internet Explorer 7(IE7 for Vista可能就像IE6 for XP那样是和通用版不同的,鬼知道它会不会对Vista的Theme和DirectX10有没有什么特别支持)。

然后就是我们现在面临的情景:各种各样的Web UI Library出现,这些UI Library和当年的微软的MASM有什么不同?(我个人认为MASM这个缩写中第一个"M"指Macro,如果按现在的叫法应该是MS-MASM,也就是Microsoft Macro Assembler,在MSDN你仍然可以查到MASM的帮助,不过只有关于Macro的,没有关于普通汇编指令的,可见它强调Macro的程度)。我们现在用$()代替document.getElementById(),简直就是一种Macro,我们通过Macro特别是好象MASM那样的高度自动化和智能的Macro省下了很多指令,它能够自动适应环境产生代码甚至根据复杂的逻辑产生代码,但实际上Macro离真正的可编译高级语言还有很远的距离。

什么时候才是javascript好象汇编那样,出现一种能编译的高级语言?我之前说过,有一天可能只需要写服务器端代码,就能够自动把部分生成为javascript在客户端执行,可能那才是javascript全自动生成的时代,我们离这个时代可能还有几年的距离,也可能几年没过完javascript就成为过时的技术而被新的技术取代掉。

2 条评论:

  1. CAT��http://east.maxcell.com.cn���ܷ��ʷ�����Щ�������ʵ�

    回复删除
  2. Ӧ��һֱ�����Է��ʵģ�У�ڵĻ���У����8686�˿ڣ���Ҫ���������硣

    回复删除