论坛首页 编程语言技术论坛

Java的堂弟——Python初体验

浏览 27691 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-04-10  
学习python一小段时间了,太高层次的话题就不说了,层次放低一点,就说说在实际编程中,体会到的Python和JAVA的区别。学习不久,认识有限,希望大家多指正,而我也会不断完善这篇文章。

Python的代码和Java有着相当的类似度,学习一段时间后,感觉有一种亲切感,所以姑且称呼它为Java的堂弟罢。

虽然Dive Into Python中,声明了Everything is Object,可是使用过程中,我的体会就是Python并非真正的OO,类只不过是比模块小一级的方法组织单位罢了,而非真正的类。从OO的学术角度来说,Python只能打个60分,众多的OO特性,更像是为了OO而凑上去的。

1)动态类型语言,使得单纯从方法接口看出,参数和返回结果是什么类型对象,当然也就毫无所谓的接口之说。
2)粗糙的默认公开和__私有方法,没有保护和包内可见的概念
3)令人生厌,无处不在的self
            所有的方法,除了静态方法和类方法,都要以self作为第一个参数。这也就算了,对于成员变量和自己方法的应用,也要加个self. 。 程序小的话,我宁愿直接用module的方法好了,就像python的n个builtin模块一样
4)不方便的log
            虽然有类似log4j的东西,但是log的初始化和配置是在程序中进行,不太方便,我也习惯了用print。而在Django这样大的项目中,居然看不到log,是我没找到地方呢?还是真的没log?迷惑中。

优点

Python相对于Java最大的优势,是灵活和简洁。同样的功能,Python中1行的代码,Java往往要用3到5行才能完成。

1)灵活的字符串,方便提供的超长字符串定义
2)简洁,多行,可注释的正则表达式
3)动态语言特性,对AJAX的配合如鱼得水,因为它和JavaScript的OO有着异曲同工之妙
4)丰富的第三方类库,Python有相当的历史了,网站的copyright是1990-2006,在国外已经有丰富的应用基础,常用的第三方类库应有尽有。


关于开发工具,目前用得最好的是PyDev。已经习惯了不断的代码重构,缺乏了这种的支持,感觉很不顺手,而由于Python的动态特性,PyDev的重构还是很不尽如人意,这点让我很怀疑,作为团队开发时,Python的可行性。

总之,Pthon作为一门动态强类型语言,在OO的严谨,和过程式的随意中,取得了一种很好的平衡。虽然不能作为OO教学的一门语言,但是确实是编写中小型软件和系统的好工具。
   发表时间:2007-04-10  
呵呵,俺也补充一下

1 很喜欢 python中的 FP,尽管python并不是纯粹的FP.

2 编辑器,还可以选择vi或者emacs,比如豆瓣基本都是用VI开发的.

3 python中类之上还有metaclass.

4 和c良好的结合.
0 请登录后投票
   发表时间:2007-04-10  
只想说python不是java。
0 请登录后投票
   发表时间:2007-04-10  
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。

python怎么也说不上是java的堂弟。最多是远房表哥。
0 请登录后投票
   发表时间:2007-04-10  
icetortoise 写道
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。

python怎么也说不上是java的堂弟。最多是远房表哥。
恩,同意,就像dive into python里面说的,python编程的时候你要 Data-centric programming。
0 请登录后投票
   发表时间:2007-04-17  
引用
虽然Dive Into Python中,声明了Everything is Object,可是使用过程中,我的体会就是Python并非真正的OO,类只不过是比模块小一级的方法组织单位罢了,而非真正的类。从OO的学术角度来说,Python只能打个60分,众多的OO特性,更像是为了OO而凑上去的。

你是身在此山中,不知真面目。要知道,在python中模块也是一个对象呀
0 请登录后投票
   发表时间:2007-04-19  
写python代码的时候,要的就是随意的感觉,随着思路一气呵成。

用来做C++项目的脚本,是很好的。比如我现在用的S-GeMS。
1 请登录后投票
   发表时间:2007-04-19  
你把python当作java的堂弟,当然有些东西觉得别扭。python这种scripting language,要用新的思想来考虑。比如要考虑context的切换等等。
0 请登录后投票
   发表时间:2007-04-20  
hurricane1026 写道
python我的的感觉是完全可以不用oo的方式编程,反而很舒服。或者说python根本不应该作为java相关的语言,说起来,strong type语言和weak type语言怎么会有血缘关系?
呵呵,python也是强类型语言。

PS;很喜欢python 的FP.
0 请登录后投票
   发表时间:2007-04-20  
嗯,python支持多种不同的编程风格。在实际使用的时候很少会受到某种编程风格的制约。

选择自己感觉最舒服的方式来写程序,很快你就会发现自然而然的在编写算法相关的模块时你会用很多的fp programming,而具体模拟现实中的某个应用的模块则会使用很多的oo programming.
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics