曙海教育集团论坛开发语言培训专区Delphi程序设计 → 最近关于delphi python java 和设计的一些想法


  共有6207人关注过本帖树形打印

主题:最近关于delphi python java 和设计的一些想法

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
最近关于delphi python java 和设计的一些想法  发帖心情 Post By:2010-12-14 10:50:19

每个程序员就是艺术家,每个系统构架师都是哲学家

这段时间我一直在思考各种设计上面的问题,原来一直写delphi和一些其他脚本语言。对java一直没有碰,这段时间看的比较多,也写了一些小的程序,过程不说,1个月下来感觉只有四个字:不堪重负 ToT,可能你们还记得前段时间我抱怨了一下java的类库之间的复杂关系,让我完全没有任何的线索

随即切换到python重新实现一些功能,也许是有了前面的经验,写的轻松了很多,虽然这段时间我连很多python的基本用法都没学完,比如那个lambda函数,新奇呀~

用twisted写了一个server,10多行代码,java那边用mina还没有实现逻辑就已经4、5个java文件了,当然大部分代码ide都帮忙写了,不过java类库之间的逻辑关系复杂程度可见一斑。

以我对这两个语言的了解程度,还不足以对他们评头论足,我发现他们在设计思路上有一些很有意思的地方,写下来,大家看看。

delphi闻名是他的RAD套路,还有就是所谓的“优雅”,因为写出来的代码规范而且可读性强,不过很遗憾,delphi的rad貌似也没有太大的进展了,至于用“begin end”来保持的优雅,我持保留意见,呵呵。期待后续的版本能继续发扬RAD,这次支持泛型和unicode就很不错,要是再多些语法糖就好了,恩啊恩啊。delphi仍然是我windows平台下开发的不二选择。
python的设计思路很像delphi,走的是rad的套路,用python写东西的时候,明显感觉到是抛开了详细设计的,就是一切都面向实现功能,他的语言设计是鼓励你这么做的。python强调了函数和模块,他的面向对象我到反而觉得有点半调子,不过无所谓,这些是意识形态上的东西,能解决问题就好。
而用java的时候,我还没开始写一行逻辑代码,已经被迫实现了4、5个接口了,而且我在没有写完之前,还不能把他们整合起来,也不知道是对是错。心里悬着,感觉不舒服。

很有意思的是,python的思路很接近我最初写程序的时候,什么都不知道,只要把东西做出来就好的那种思路,所谓初级程序员的做法。不过这个不是全部,python的开发过程非常强调自省,也就是重构,说白了就是重新写。而且目前的开发中更加注重的是在各种测试的情况下进行重构,也就是是有保障的重构,而非程序员一时性起,写了也不知道对不对。我个人觉得这个是符合逻辑的,在没有了解一个东西的时候做再多的设计都是空的,我原来也尝试过,也看到过开发中到最后,完全和最初的设计没有关系。失去控制,全靠程序员自己努力,更要命的是,牛B的SA还不愿意承认……

python可以做到这一点,是因为python代码很精简,程序员写作的时间很短,就算是重构这个时间消耗也比其他语言低很多,我觉得这是python做的最好的地方,他给这种“初级程序员”的开发模式提供了一个升级的可能

这段时间也很关心各种语言的效率,不可否认,java的jvm虚拟机是一个很厉害的东西,java的执行效率在高端机器上和C在一个水平,一个可以自动管理内存的语言做到这个地步,实在让人惊叹。同时java的开发效率比C又高了不知道多少倍。所以在服务器端java可以说当之无愧的王者。

这次准备放弃java转而用python的主要原因其实是考虑到开发效率和rad的需求。前段时间考虑的方案是用java写框架和效率要求严格的地方,然后用jython实现逻辑和效率要求不高的地方,不过这个想法首先被jython的超级低效率摆了一道,这个低效非常明显而且不是几十倍的问题,
然后自己感觉java的各种代码之间各种交互很多,设计上找不到rad的感觉,我也会设计很多接口,封装,然后工厂,不知道是不是被引诱了呵呵。
然后就是这次做的东西有探索的性质在里面,所以我自己是没有太多经验的,整个开发过程我预算了1次完全的重构和数次的迭代的重构。

现在我基本上决定用python写原型,先跑,然后如果效率上出了问题,profile一下,找问题的地方,用psyco编一下,如果还不行,就直接写C的扩展或者用jtype在java里面做好,python里面调用。个人感觉python比较合适我的思路,也许是因为我不是一个合格的SA,我只是一个程序员图片点击可在新窗口打开查看
多process的情况我也推翻了我原来的设计,尽量减少process之间的状态共享,把程序都往单进程顺序执行上堆,直到我决定写erlang的哪一天,呵呵

对于general purpose的框架来说,开发者一定是对这个领域很有经验的,所以可以抽象出一套比较好的逻辑框架,然后实现成各种接口,工厂,封装,分层来保证灵活性,这个在python的twisted库里面也是一样的,亏他们居然用python半调子的面向对象搞整了这么多东西出来。不过还好他们暴露出来的接口并不复杂,也就是一些回调和事件
不过在面临专业领域的问题的时候,这种一来就高层建模的方式或许就有点行不通了,因为没有人敢站起来拍胸膛说,这个项目所有需求我都了解了。而且大部分需求都在根据时间变化。所以导致开始建模的那些封装到后面可能会变成完全不适用或者需要大量适配才能使用的东西


另外这段时间突然感觉各种语言蜂拥而起,而起很多都有自己的明确的主题,
比如erlang对并发的处理简直就是一绝,
scala在jvm上的表现,整合的非常好,
还有我最喜欢的跨平台pascal:lazarus今天也刚刚出了0.9.26版本完美支持mac平台的新界面框架(好像叫carbon把),跨平台的native程序开发估计也只有他能做了,
ruby新版的效率居然比python2.6还要高,好吧我承认,我没有选ruby和jruby是因为不太喜欢他的语法- -,感觉啰嗦
groove是瞄准ruby去的,不过现在还差一截

最近看到有句话很喜欢:程序设计有两种思路,一种是设计的很简单以至于明显没有缺陷,一种是设计的很复杂以至于没有明显的缺陷 图片点击可在新窗口打开查看

以上是这段时间的一些感受,水平很有限,拉拉杂杂一堆,行家眼里看来肯定是漏洞百出,说出来让大家笑话了。欢迎拍砖

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

最近关于delphi python java 和设计的一些想法








签名