[技术贴]语言的特性及其它

把这几天有关技术的东东都随便说一下,没有什么主题,题目是随便写的。

从令狐的一篇《声音》链到这两篇《<Coding在西元前>–写给所有热爱C++的朋友》和《我眼中的Python》。

在ABP那个贴子里,ajoo说得很在理(就是被令狐收录的那段^O^)。而在JAVAEYE的那个贴子里,ajoo也跟了一贴,对贴主Robbin所说的:我虽然使用Java开发软件已经有5年的历史了,但是能不用Java的时候,我一定不会用Java的。表示同意。

没有什么语言是万能的,必须根据实现情况选择合适语言进行开发。

但这同样会有问题。

昨天和令狐在MSN讨论了一下他最近接触的WebWork–一个JAVA的轻量级WEB开发框架,谈到其中的非侵入WEB应用实现。令狐说:

在以前的框架比如Structs里,你无法独立测试这些模型,因为他们跟框架本身有耦合(extends了Structs中的Action基类),所以,除非把整个框架跑起来,否则不能测试。
而在WebWork中,用户是通过实现接口来和框架进行耦合的,而我们知道,接口本身是一个虚的东西,并没有实际的代码,所以,这个模型实质上是和框架独立开的(除了对接口的一个import之外)。所以,它可以独立测试。至于测试所需的上下文,在WebWork中也有考虑,你可以通过实现一个简单的MockObject来模拟用户提交过程。

我说,这正是我理想中的Web解决方案。

但是这样的方案要移植到别的语言上就会有困难。C++就算了,Python倒还可以考虑。^O^

令狐还发现JAVA中的JMX正是他早就想要实现的一个通用管理框架。

我们的感觉就跟JAVAEYE那位Robbin对Python/Zope/Plone所作的形容:……直到我看到了python和zope,我终于找到了梦寐以求的东西,兼有脚本语言开发的高效率,兼有低部署成本的易用性,同时又有完备的面向对象的强大支撑能力,同时又具备完善的强大的appserver支持。最令我生气的还是plone,这个运行在zope之上的软件,你可以称之为portal,或者称之为cms,或者其他的什么名词,但是我知道它几乎可以实现任何网站想要实现的功能。……

令狐说:我们的视野还是不够宽。而且还是比较矛盾。不接触么有些东西别人做了很多自己还在傻乎乎的想,接触太多么又没那么多精力

其实视野宽了也很郁闷。

如何取舍?如何整合?都是问题。

比如前面说的移植,我最近一直在尝试将JAVA的轻量级容器的思路移植到DELPHI下,但问题是一堆接着一堆。上次我说过我试图用DELPHI自动的接口变量引用计数来模拟GC–本质上跟C++中的带引用计数的SmartPtr差不多。但结果却是很难看:

定义一个:IGCInterface = interface
提供一个:function GetObject : TObject;
再定义一个:TGCObject = class( TInterfacedObject, IGCInterface )
实现GetObject:Result := Self;

本来想说只要让一个CLASS从TGCObject派生即可,但使用中却发现因为Delphi没有template,不支持GP,所以应用代码就会变成:

TMyGCObject = class( TGCObject )

obj : IGCInterface;

obj := TMyGCObject.Create…
( obj.GetObject As TMyGCObject ).doSomething…

不但难看,而且需要进行动态的向下类型转换,存在着出错的风险和性能的问题。

貌似这样说来,支持GC和GP的C#是一种各种特性都比较平衡的“好”语言。但是.net平台却一直是阻碍重重。比如我自己,常用的三台电脑中,只有一台装了.net(这也是我后来舍弃SharpReader改用Sage的一个重要原因)。上次DDJ的一位.net专家宣布退出.net圈子,而MS的Charles Sterling的一句话又被这位周星星同学批了一通。呵呵。

最近感觉比较混乱,今天先写到这。

10 Replies to “[技术贴]语言的特性及其它”

  1. >>最近感觉比较混乱,8写乐。……。偶发现撩可以8的素材也。有米有人来继续发掘。~:p

  2. DELPHI不支持GP,我也一直曾想在设计上用各种技巧绕过它….结果往往是开始容易,后来某些地方卡住便吐血数升…想到CORBA与COM的 IDL编译器到如今仍然有很强生存力..有了一个估计可能很馊的主意..干脆扩展DELPHI语法,使用插件,进行预编译…

  3. TO:哈欠偶已经中JAVA的毒太深,也认为“代码生成是一种恶行”,所以我在试图用DynamicProxy来取代CORBA/COM那样的IDL/MIDL。^O^

  4. 多谢推荐这篇介绍Python的文章,写的很不错。可惜偶也是讨厌scripting language的人,使用python纯属被迫,因为IBM的WebSphere选Python为其admin语言之一。

Leave a Reply

Your email address will not be published. Required fields are marked *