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

从实际工作需要与经历说说我选择PYTHON的原因(附相关源代码)

浏览 39912 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-05-05   最后修改:2009-05-05
哎,后面还有

代码中也并没有用什么独有的数据类型和相关操作(就是哈希表,数组,简单的字符串操作,文件读写,呵,一般好象也就用到这些也能解决大多数问题了这些最常用到的要用特别的语句调用才能有效果?),我功力不够,不知道是怎么回事,就上来发表请大家指点下

说明这2个语言的内部操作实现不同呗,也许有的更好一些吧...我的水平只能让我这么想

呵,我对RUBY,PYTHON确实是初学者...
0 请登录后投票
   发表时间:2009-05-05  
Hooopo 写道
xukong 写道


另外看了改进后的RUBY,有点小寒,不是对RUBY有点了解的,有些符号操作就看不懂了,当然不懂就不乱用,也不要乱发表评论,这个我是吸取教训了(不过我也只是常规写法啊,谁想到会有这么大差距,关键是2个代码都几乎一样,结果不一样,就有点被迷惑,想当然了),不过要吸引同事,初期还是: 嘿,我这个程序跑得还比较快,也不太难看懂,有兴趣学下没有,呵,呵...

真不知道楼主怎么想的,您一次又一次的强调代码一样

代码一样能说明什么问题呢?

如果您说您是初学者这样说有情可原,可是,,前面您又说自己写了10程序,也写过省级项目。。。


这个不矛盾啊。
写了10年程序,用的估计是java,但对ruby和python来说都是初学者。


0 请登录后投票
   发表时间:2009-05-05  
七猫 写道
第二种可以让人家知道这是个bool变量,而第一个也许只是!=NULL

# if (Checked) //第一种写法; 
# if (Checked == true) //第二种写法;

前面提到了,这是Java。
0 请登录后投票
   发表时间:2009-05-05  
xukong 写道
判断简单的为真为假我才会用 if (result_search) 而且要是确切的布尔型

但我现在判断的是否为空值,在这种情况下我从来没有用过上面的写法

一般认为非0值才是为真,NIL确实算得上是0之外,但是实际上NIL是什么都没有,我不习惯将什么都没有当作真,一定要有个值哪怕是真是假,是正是负,还是有值的什么任何类型

下面的代码证实了我的想发,NIL不为真

fwdsendwaitstatus = Hash.new()

k = "1"
x = k
fwdsendwaitstatus[k] = x

k = "2"
result_search = fwdsendwaitstatus[k]

if (result_search == nil)
    puts "result_search == nil"
end

if (result_search)
    puts "result_search == nil is true, yes yes yes"
else
    puts "result_search == nil is true, no no no"
end


我写成 if (result_search == nil)  是当为空时要做什么事
如果写成你所说的 if (result_search)
最终什么都做不成...

呵,挡箭牌,我只是有点不自甘菲薄而已...

倒霉,没有注意到那个!,我最不喜欢用的就是!,一不小心会看漏掉,直观的东西还要反过来再想,要做2道思考...

仔细想了下,还是觉得蛮怪的 if (!result_search) 做非空操作来判断它是空为真(为什么不直接判断它是空,非要多手多脚做个非空为真操作来判段它是空,从性能上考虑就多了个无端端的!非操作)后才做当 result_search 为空时的操作

呵,说是挡箭牌就挡箭牌牌吧,楼上的可能觉得if (!result_search)代码少,觉得优雅,不过我还是喜欢 if (result_search == nil) 的习惯...


楼主在这个问题上提到了性能,同时用性能,可读性和习惯来维护自己的观点。

关于可读性,
用楼主偏爱的Python的话,!就是not,跟VB一样,比起!清晰多了。
Ruby还有一个unless,其实就是if not (if !),据说,为的就是提高可读性,
unless (result_search) 等价于 if (!result_search)
对于unless存在的意义,我不做评论。

又及:我终于知道那本《Ruby on Rails敏捷开发最佳实践》的读者群了。
0 请登录后投票
   发表时间:2009-05-05  
xukong 写道
    呵,谢谢支持,这里分享下如何监视JAVAEYE回复更新的一些心得:

    难得写篇帖子,就时不时的用浏览器来打开网页刷新下看有什么回复没有 但是这样操作多了也累,就找了下监视网页的软件,有个叫 specto 的软件,是用PYTHON写的,有点兴趣,结果一看是只能跑在LINUX下,虽说LINUX不错,但是工作环境是WIN啊,还是继续找,发现了个 urly warning 的软件,免费的,最新是 3.0

话说JavaEye提供了丰富的RSS,直接抓自己的更新的RSS就能跟踪帖子回复的更新了。

至于楼主的代码……
我觉得楼主大可以保持自己的观点。代码是写给自己读,写给电脑执行的。如果自己读不懂自己的代码显然会有问题,至于别人读得读不懂、读得读不顺,呵呵……
而且根据自己的能力去选用合适的工具没任何错误。等熟悉了别的工具的惯用法再换用别的工具也未尝不可。
要说的话,像是拧螺丝,本来用一把螺丝刀去拧就行,但只熟悉钳子的用法的人决定用两把螺丝刀去夹着螺丝来拧,自然是比不上用熟悉的钳子来得顺手和便捷。在一种语言里很自然的代码换到另一种语言里很可能很不自然,强调源码的相似性正好掉进了这陷阱里。

楼主发现Ruby里nil在用于逻辑判断时是假值了,而Python里的None也是假值,差不了多少。
0 请登录后投票
   发表时间:2009-05-05  
呵, Xorcerer 的帖子我好多是有看没有懂...

不过我已经回答我看懂的了...

大家讨论的时候,特别是发帖人的不足会被一一指出,无一错漏,这很正常,反正大家也看到,也不存在狡辩,有理有据的,接受,或者公说公有理的,那就再论,呵,如果大家有闲有兴趣的话...
0 请登录后投票
   发表时间:2009-05-05  

呵,谢谢 RednaxelaFX 点拨,RSS我试试...
0 请登录后投票
   发表时间:2009-05-05  
xukong 写道
呵, Xorcerer 的帖子我好多是有看没有懂...

不过我已经回答我看懂的了...

大家讨论的时候,特别是发帖人的不足会被一一指出,无一错漏,这很正常,反正大家也看到,也不存在狡辩,有理有据的,接受,或者公说公有理的,那就再论,呵,如果大家有闲有兴趣的话...


看Hooopo的就足够了。
我上一个回帖的话,只是希望你不要把习惯,性能,可读性揉在一起说。
别人说这样性能不好,你就说你习惯了,
别人说这是Ruby一般用户的习惯,你就说这样可读性不好,
别人说这样对于Ruby一般用户来说可读性较好,你却说这样性能有问题,
......
总有理由,却没有一个确定的立足点。

其他朋友已经直接或者间接地提到这个问题,我只是直白一点罢了。

比如,你说!不舒服,而你更倾向于Python,那么我就提到了,Python用的not,其实很直观;
而前面Hooopo也说了,object.nil?这个方法是Ruby的惯例(我开始也忘了);
至于Ruby是不是太无聊,居然用一个方法代替 object == nil,就是个编程哲学问题的,你高兴就好。
就如为什么Java不是Ruby这类的问题。

我也总是忘记str.empty?之类的方法,但我至少知道用它有利于其他Ruby用户的理解,至少知道我忘记这个不好。

可读性针对那个语言的一般用户的而言的,否则的话,就无所谓可读性了;
习惯是针对自己的。

请原谅我的直白,也请相信我没有恶意。
0 请登录后投票
   发表时间:2009-05-05   最后修改:2009-05-05
Xorcerer 写道
xukong 写道
呵, Xorcerer 的帖子我好多是有看没有懂...

不过我已经回答我看懂的了...

大家讨论的时候,特别是发帖人的不足会被一一指出,无一错漏,这很正常,反正大家也看到,也不存在狡辩,有理有据的,接受,或者公说公有理的,那就再论,呵,如果大家有闲有兴趣的话...


看Hooopo的就足够了。
我上一个回帖的话,只是希望你不要把习惯,性能,可读性揉在一起说。
别人说这样性能不好,你就说你习惯了,
别人说这是Ruby一般用户的习惯,你就说这样可读性不好,
别人说这样对于Ruby一般用户来说可读性较好,你却说这样性能有问题,
......
总有理由,却没有一个确定的立足点。

其他朋友已经直接或者间接地提到这个问题,我只是直白一点罢了。

比如,你说!不舒服,而你更倾向于Python,那么我就提到了,Python用的not,其实很直观;
而前面Hooopo也说了,object.nil?这个方法是Ruby的惯例(我开始也忘了);
至于Ruby是不是太无聊,居然用一个方法代替 object == nil,就是个编程哲学问题的,你高兴就好。
就如为什么Java不是Ruby这类的问题。

我也总是忘记str.empty?之类的方法,但我至少知道用它有利于其他Ruby用户的理解,至少知道我忘记这个不好。

可读性针对那个语言的一般用户的而言的,否则的话,就无所谓可读性了;
习惯是针对自己的。

请原谅我的直白,也请相信我没有恶意。


呃...看样子文字不大容易精确表示想表达的意思,写的是一个意思,看的可能又有不同的理解,我就多说几句解释下

Xorcerer 写道
别人说这样性能不好,你就说你习惯了,

确实,我的代码长了点,可能是会影响性能,但PY执行的结果我能接受,大量的数据能在5分钟内处理结束,工作很快完成了,我很高兴,再改进提高到3分钟,2分钟也没什么太大意义,请注意,是接受这次写出程序的运行结果,不是习惯...而且我前面说的习惯也只说习惯了变量名写得长些,操作步骤表达式写的详细些,导致代码有点冗长,竟然被引申到习惯性能不好,真是厉害...

Xorcerer 写道
Ruby一般用户的习惯,你就说这样可读性不好
别人说这样对于Ruby一般用户来说可读性较好,你却说这样性能有问题

!我是说了不舒服,但没说我倾向于py,只说了我习惯于 if (result_search == nil), 这是PY独有的?

性能问题我只是开个玩笑,意思是这句代码的写法不只是个人爱好问题,严格来讲,是有影响性能的地方的,

我确实很看不惯这个多出来的操作和不必要的非空反向思考,并不会因为PY是用NOT而改变,也不会因为这适合RUBY用户的习惯和可读性,而不说出我的看法.

RUBY用户的习惯和可读性我不会也没资格横加干涉,我只说出我写这样一条语句的理由和抉择...讨论的也就是有限的2条语句,这两条语句中我也只明确反对一条(认为可读性和性能都有问题),另一条随意,就被以点概面的引申到一般用户的习惯,一般用户的可读性,而且好象先说后说,我就不停的闪闪烁烁,呵...

Hooopo的2个疑问当时我回复了,解释了许多,现在才明白意思大概是写得不够RUBY,呵...

请原谅我不停的回复,我承认这几句话把我说得有点堵,呵...

object.nil? 这个我也只说了习惯普遍的写法,就让我被说不够RUBY吧

Xorcerer 写道
可读性针对那个语言的一般用户的而言的,否则的话,就无所谓可读性了;
呃...仔细想了想,这个见仁见智了

我前面提到的可读性的意思是看到这段rb代码跑得快,想学又没有接触过rb的人,可能会觉得要了解的东西比较多
不象都是用通用的普通语句写的,速度也够快的,容易接受而已
0 请登录后投票
   发表时间:2009-05-06   最后修改:2009-05-06
呵,谢谢这么多同学的参与,讨论到现在,我就用个不太恰当的比喻来总结一下:

在小学联谊运动会的百米跑比赛结束后,有好事同学就在一人多之处上发起讨论,

好事同学先发言: 大家都是在宽10米的一条直线跑道上比赛,大家都是用2条腿跨步跑,怎么甲A跑得比甲B快了那么多?

W同学说: 我觉得可能是主场问题,甲A是WIN校的,甲B是LINUX校的,比赛在WIN校进行,所以甲A有一定优势(操作系统原因)
好事同学: 有道理

W同学又说: 我觉得甲B同学的跑步姿势有问题,待我纠正一下,亲身演练一番,果然是快了许多(谢谢W同学的代码)
好事同学: 有道理

W同学又说: 我觉得甲A同学身上的衣服穿得厚了点,可能空气阻力有点影响,另外他跑得有点急,小步子太多了,其实它可以更快的
(变量多,语句多)
好事同学: 有道理,但看来不是主要原因

H同学说: 我来说一句,甲B同学的皮肤不够白,不够漂亮
好事同学: ...
0 请登录后投票
论坛首页 编程语言技术版

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