代码改变世界

IronPython的第二块鳞片

2004-09-15 23:54  FantasySoft  阅读(1826)  评论(9编辑  收藏  举报

        今天花了两个小时的时间把users-ironpython.com Archives中8月份的Mail仔细的看了一遍,整体的感觉就是IronPython这条小蟒蛇真的太幼小了,确实需要一段很长的时间才能成长起来。当然,我们可以从它的主人Jim的Mail中体会到他抚养这条小蟒蛇所承受的压力以及他的决心。
        8月份的Mail长达3900多行,在这些Mail当中,有提问的,有but report,有对IronPython开发的建议,也有对IronPython存在意义的怀疑。现将这些Mail中的一些精华部分列举如下,当做我摸索到的IronPython第二块鳞片吧:
        1、首先一个重要的问题就是跟CPython的兼容性问题,由于IronPython使用C#实现的,那么里面使用到的自定义的module,如"Equals"和"GetHashCode",是否需要呈现给开发人员呢?同时,象list这种原来内建的对象也拥有了更多的方法,如标准的list只能使用append方法去增加list中的元素,但是IronPython增加了C#下面实现的方法:Add(object)。有开发人员针对这个问题提出了自己的疑问,而Jim所给的回答就是,因为IronPython是在一个全新的平台去实现Python,与CPython完全保持一致是不可能,即使CPython本身版本的变迁也会带来变化;
        2、IronPython现在存在的一些比较严重的Bug,一个就是在上一篇blog中提到的第四点,关于使用__main__方法抛出的<eof>异常;一个是关于类成员访问的问题,如以下代码所示:

class Buggy: 
   class_member 
= 'find bug'
 
   def printMember(self):
       print Buggy.class_member

=
 Buggy()
t.printMember()  

        这段代码存为一个.py文件,然后使用IronPythonConsole来执行,结果会抛出Unhandled Exception: IronPython.Objects.PythonAttributeError,而这段代码在CPython下是运行OK的。
        3、很多热心的开发人员都提出了需要一个subversion repository来存放IronPython的代码,大家都可以为IronPython的开发作出一份努力,同时也可以得到IronPython最新的代码。譬如上面提出的两个bug,已经有程序员找出了修改的办法,但是就是苦于没有地方提交他们的代码。而Jim给出的回应是,由于他加入了微软,为了新的工作还需要搬家,他也很诚恳的请求大家耐心等他一段时间,因为他需要做个计划。同时,他也回应了在开发上的一些怀疑:I have great confidence the resulting plan will be one that will make the developer community happy.  If the plan doesn't work for developers,then it just doesn't make sense;
        4、一位热心的开发人员开发出了一个将Visual Studio中开发的基于C#的Form代码转化为IronPython代码的工具,我还没有来得及去尝试,但是看回复的Mail,应该做得不错,有兴趣的朋友可以下载来试一下;
        5、当使用IronPythonConsole命令行的方式去执行一个.py文件的时候,会在IronPythonConsole所在的目录bin下面产生一个__main__.exe文件,但是这样产生可执行文件的方式并非是在IronPython.com首页上提到的static compilation。事实上在0.6版本中并没有真正实现这个特性。
        总结就到这里了,有兴趣的朋友,可以访问IronPython的邮件列表,以获得更详细的信息。