Hello World
Spiga

归档:2011年05月

JavaScript:假如default不是switch的最后一项

2011-05-24 11:33 by 老赵, 7798 visits
摘要:话说大家对于switch语句应该再熟悉不过了,各种类C语言都不例外,JavaScript自然也是如此。switch的逻辑很简单,根据switch内容的值执行对应的case项,否则执行default项即可。但是不同的语言在具体一些细节上面的处理却是不同的。例如在JavaScript里,每个case项都可以没有break,于是语句便会顺延到下个case或是default里面去——但某些语言设计者认为这种特性容易造成代码理解上的偏差,因此比如在C#里便要求每个非空的case都要有个break。那么再来一个细节问题:如果default之后还有case,那么会出现什么样的情况?如果default里没有break呢? 阅读全文

上周末Jscex项目介绍的幻灯片

2011-05-16 13:43 by 老赵, 5489 visits
摘要:上周末,在风景秀丽的浙江大学校园内,举行了NodeParty杭州站的活动。我在活动上结合Node.js项目对Jscex进行了简单介绍,包括其设计目的,设计原则,使用方式,高级模式,组成部分等等。在场的许多朋友也提出了不少问题,我也一一作了解答或是演示。总体感觉还算不错,毕竟是亲手编写的项目,对其各方面还是了然于胸的。在此发布演讲用的幻灯片,希望能给不在现场的同学带来一些帮助。 阅读全文

浅谈Jscex的$await语义及异步任务模型

2011-05-10 22:29 by 老赵, 3059 visits
摘要:从某些程度上说,Jscex的是提供了“新语言”,只不过这种新语言和JavaScript长的一模一样,最多添加了一个$await操作这个语义而已。其他方面,JavaScript的各种语法都可以让Jscex编译,所以它基本可以说是个完备的方案。之前有朋友提出疑问,说$await只能执行单个任务,那么岂不是多个任务之间就出现了先后依赖关系?假如有三个任务:A和B可以并行,但C依赖前两者,ABC如果串行的话,系统的总耗时便不够理想了。其实Jscex并没有这种限制,因为它的任务模型和$await语义简单且具有深厚的理论基础,灵活、丰富而统一。 阅读全文

浅谈Jscex编译结果的优化

2011-05-05 18:45 by 老赵, 2670 visits
摘要:Jscex的核心是一个JavaScript语言到Monadic形式的编译器。从理论上说,这种编译规则十分简单,要写一个能够“正常运行”的编译器很容易。但是“正常运行”不代表足够优化。优化不当,会导致生成的结果中产生太多函数及闭包,对性能产生负面影响。在Jscex的早期原型中,从AST生成最终代码的逻辑比较简单,只做了一些基础优化。后来重构了编译器,减少了不必要的代码。而上周我提交了更新,实现了更复杂而有效的优化策略。如今的Jscex编译器部分应该已经足够稳定,剩下的便是类库方便的发展了。 阅读全文
1
使用Live Messenger联系我