`
庄表伟
  • 浏览: 1150478 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

敲响OO时代的丧钟——关于DJ的开发思路

阅读更多
DJ是一个精心设计的语言,之所以敢于夸耀这个语言,在于我在设计这个DJ语言的时候,不但在考虑语法的表达的能力,更加在考虑基于DJ语言的开发模式与设计模式。而在此之前的大多数语言,大多仅仅考虑了功能,在这方面最值得一提到Java语言,这个语言的设计也算得上是相当用心了,虽然不能说是近乎完美,但是与同时代的语言相比,可以说java是最注意考虑“java将被如何用于开发”的语言了。
 
遗憾的是,java是基于OO的固有思路的一种语言,在有些方面的设计,是过于OO化了。比如它的Exception体系。而我现在要设计一种新的语言,自然不能停留在10年前的设计水平上,而应该考虑得更多。
 
在我看来,语言与框架,并不是截然不同的两种事物,他们的共同之处,都在他们对于“需求世界”究竟如何,有自己的看法。基于这样的看法设计出来的语言与框架,对于程序员来说,既是一种帮助,同时也是一种限制。有很多语言,标榜自己没有限制,或者只有极少的几种限制,这样才能够带来最大的灵活性。也有的语言标榜自己的丰富性,完成同样的功能,程序员有无数种可以挑选的方案。但是,我却认为,灵活度、自由度、丰富性,是以降低开发效率为代价的。也许有人会不同意我的观点,没办法,对于这个问题,哪怕是最顶尖的专家之间,也尚有分歧。我这里就不多说了。
 
就说一个现象,不少朋友说我的DJ已经定义了太多的关键字了。其实,这正是我设计思路的一部分。概念A与概念B之间,如果有可以清晰识别出来的差别,那么我就会给他们以不同的命名。命名多并不是问题,只要这些概念以一种非常自然的方式,构成DJ的全体,就会很容易记忆,容易选择,也容易被阅读。
 
再说到check:与test:太多的问题,在我看来,DJ是一种非常灵活的语言,为了保证灵活性不会危害到开发的系统的健壮性,必须有足够严密的校验体系,来保证这一点。打个比方,在《天龙八部》里面,那个扫地的老和尚就说得很好,少林七十二绝技,各有各的危害,必须以更高的佛法,来化解其中的恹气。而越是动态的、弱类型甚至无类型的语言,就必须有“强校验机制”作为系统的健壮性的保证。
 
当然,这样也因此带来了一个效率问题,因此,采用DJ进行系统开发,在我的设想之中,应该是分为四个阶段的:
 
1、编码阶段,这个没什么好多说的,就是coding
2、预编译阶段,就是将DJ的代码,编译为java的代码,这个阶段,是DJ编译器校验的阶段,在这个阶段,DJ编译器会运行各个代码的test:部分,只有通过测试的代码,才能够被编译为实际的java代码,以及进一步的class。在编译出来的java代码中,test:部分,自然是消失了。
3、debug阶段,就是保留所有check:部分的代码,做系统的试运行。在试运行过程中,所有被触发而报错的check代码,都将被认为是有价值的check。反之,如果一个check从来都返回为真,就说明这个check没有实际存在的必要。与此类似的还有event部分的代码——这个明天会介绍到——也是只有被触发的代码,才是有意义的。
4、release阶段,就是将所有真正有效的代码编译出来组成的系统。那些test:与check:,将根据实际的情况记录,不再被编译到正式发行的系统之中。
 
这样的阶段划分,不但保证了实际系统的运行效率,也保证了更加安全、稳定的系统质量水平。这就是我对于开发模式的设想。
 
(未完待续)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics