2007-04-10
Java的堂弟——Python初体验
学习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教学的一门语言,但是确实是编写中小型软件和系统的好工具。
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教学的一门语言,但是确实是编写中小型软件和系统的好工具。
评论
Nicholas_Ding
2007-05-23
怎么能说 Python 是 Java 的堂弟呢,Python 的年纪应该当上老哥了。
huangyiiiiii
2007-05-23
"""
所有的方法,除了静态方法和类方法,都要以self作为第一个参数。
"""
静态方法不传这个参数,类方法传类对象,实例方法传实例对象。
关于 self 参数我的理解:
http://codeplayer.blogspot.com/2006/12/python-method-function-descriptor.html
所有的方法,除了静态方法和类方法,都要以self作为第一个参数。
"""
静态方法不传这个参数,类方法传类对象,实例方法传实例对象。
关于 self 参数我的理解:
http://codeplayer.blogspot.com/2006/12/python-method-function-descriptor.html
fujohnwang
2007-04-28
动态语言我也只能让他们做作SysAdmin的工作...
simohayha
2007-04-24
andyyehoo 写道
差不多,不过其实用什么语言,都会下意识的缩进排版了,即使编译器没要求,无论是从美观还是可读性出发,这个都是有必要的
呵呵,可是python是强制缩进的。特别是tab缩进和空格缩进还是不一样的。
andyyehoo
2007-04-24
ozzzzzz 写道
而这个帖子没有提缩进,说明楼主已经是被java训练好了的。虽然python的写作风格有很多,但是外表靠起来都一样,不同的是内在的思路。这一点同c和java差别很大。
差不多,不过其实用什么语言,都会下意识的缩进排版了,即使编译器没要求,无论是从美观还是可读性出发,这个都是有必要的
ozzzzzz 写道
貌似MIT选择python代替LISP这个也是一个理由。不过这个确实有待探讨。而倒是觉得python支持命令式的编程,也支持oo风格,还可以FP,同时也可以做元语言,这倒是一个原因。毕竟用LISP体会命令式和OO都不容易。
感觉python确实是很方便的一门语言,很容易入门,最少拿来做计算器的,都多方便呢,呵呵
potian
2007-04-20
不是貌似,而是用来代替SICP的,Harold Abelson亲自设计的新课程
不看好
http://courses.csail.mit.edu/6.01/
不看好
http://courses.csail.mit.edu/6.01/
ozzzzzz
2007-04-20
simohayha 写道
楼主可以看下python的哲学
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。
MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。
python还有一个就是开源社区非常强大,就像pypy就非常的不错。
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。
MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。
python还有一个就是开源社区非常强大,就像pypy就非常的不错。
据我一个MIT的朋友说是要课程调整,不是开一门新课。不过具体会如何,也说不清,还要看具体的发展。而且国外用python做教学语言的大学确实很多,这大概是因为国外unix盛行的缘故。可以说python和unix是天生的一对,就差用一个python的shell了。
simohayha
2007-04-20
楼主可以看下python的哲学
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。
MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。
python还有一个就是开源社区非常强大,就像pypy就非常的不错。
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。
MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。
python还有一个就是开源社区非常强大,就像pypy就非常的不错。
ozzzzzz
2007-04-20
python的哲学思想我觉得更加类似c,或者说是程序员的语言。只不过python的程序员是90年代之后的程序员,而c代表的是70年代程序员。
而这个帖子没有提缩进,说明楼主已经是被java训练好了的。虽然python的写作风格有很多,但是外表靠起来都一样,不同的是内在的思路。这一点同c和java差别很大。
关于self这个东西,说不好究竟是什么,不过倒是可以反应python的一些哲学倾向。
另外没有涉及的一点是据说python做元语言很合适,从他入门学习语言学很好。貌似MIT选择python代替LISP这个也是一个理由。不过这个确实有待探讨。而倒是觉得python支持命令式的编程,也支持oo风格,还可以FP,同时也可以做元语言,这倒是一个原因。毕竟用LISP体会命令式和OO都不容易。
而这个帖子没有提缩进,说明楼主已经是被java训练好了的。虽然python的写作风格有很多,但是外表靠起来都一样,不同的是内在的思路。这一点同c和java差别很大。
关于self这个东西,说不好究竟是什么,不过倒是可以反应python的一些哲学倾向。
另外没有涉及的一点是据说python做元语言很合适,从他入门学习语言学很好。貌似MIT选择python代替LISP这个也是一个理由。不过这个确实有待探讨。而倒是觉得python支持命令式的编程,也支持oo风格,还可以FP,同时也可以做元语言,这倒是一个原因。毕竟用LISP体会命令式和OO都不容易。
icetortoise
2007-04-20
嗯,python支持多种不同的编程风格。在实际使用的时候很少会受到某种编程风格的制约。
选择自己感觉最舒服的方式来写程序,很快你就会发现自然而然的在编写算法相关的模块时你会用很多的fp programming,而具体模拟现实中的某个应用的模块则会使用很多的oo programming.
选择自己感觉最舒服的方式来写程序,很快你就会发现自然而然的在编写算法相关的模块时你会用很多的fp programming,而具体模拟现实中的某个应用的模块则会使用很多的oo programming.
simohayha
2007-04-20
hurricane1026 写道
python我的的感觉是完全可以不用oo的方式编程,反而很舒服。或者说python根本不应该作为java相关的语言,说起来,strong type语言和weak type语言怎么会有血缘关系?
呵呵,python也是强类型语言。
PS;很喜欢python 的FP.
刑天战士
2007-04-19
你把python当作java的堂弟,当然有些东西觉得别扭。python这种scripting language,要用新的思想来考虑。比如要考虑context的切换等等。
wzgme
2007-04-19
写python代码的时候,要的就是随意的感觉,随着思路一气呵成。
用来做C++项目的脚本,是很好的。比如我现在用的S-GeMS。
用来做C++项目的脚本,是很好的。比如我现在用的S-GeMS。
hfeeqi
2007-04-17
引用
虽然Dive Into Python中,声明了Everything is Object,可是使用过程中,我的体会就是Python并非真正的OO,类只不过是比模块小一级的方法组织单位罢了,而非真正的类。从OO的学术角度来说,Python只能打个60分,众多的OO特性,更像是为了OO而凑上去的。
你是身在此山中,不知真面目。要知道,在python中模块也是一个对象呀
simohayha
2007-04-10
icetortoise 写道
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。
python怎么也说不上是java的堂弟。最多是远房表哥。
恩,同意,就像dive into python里面说的,python编程的时候你要 Data-centric programming。python怎么也说不上是java的堂弟。最多是远房表哥。
icetortoise
2007-04-10
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。
python怎么也说不上是java的堂弟。最多是远房表哥。
python怎么也说不上是java的堂弟。最多是远房表哥。
limodou
2007-04-10
只想说python不是java。
simohayha
2007-04-10
呵呵,俺也补充一下
1 很喜欢 python中的 FP,尽管python并不是纯粹的FP.
2 编辑器,还可以选择vi或者emacs,比如豆瓣基本都是用VI开发的.
3 python中类之上还有metaclass.
4 和c良好的结合.
1 很喜欢 python中的 FP,尽管python并不是纯粹的FP.
2 编辑器,还可以选择vi或者emacs,比如豆瓣基本都是用VI开发的.
3 python中类之上还有metaclass.
4 和c良好的结合.
- 浏览: 23182 次
- 性别:

- 来自: 成都

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Php的生命力何在
说的不错,只是我个人认为,php的可维护性并不必java差
-- by pdreamer -
最近面试别人的郁闷
飘过,基础问题有时不重要,老板只要出东西
-- by kidfang -
谁会是开源的真正胜利者
techim 写道bcccs 写道 高手?这个世界从来都不是高手说了算。都是资本 ...
-- by bookong -
谁会是开源的真正胜利者
bcccs 写道 高手?这个世界从来都不是高手说了算。都是资本家说了算。 一语道 ...
-- by techim -
谁会是开源的真正胜利者
andyyehoo 写道学习语言不是问题,这个帖子不是讨论哪种语言的好坏。况且在 ...
-- by bcccs






评论排行榜