Archive for the ‘Ruby/ROR’ Category

ruby与python的选择之二

星期五, 九月 7th, 2007

经过一段世间的比较,发现ruby不错,python也不错。既然是一种语言,只要存在,就有它存在的理由,姑且不必理会这些理由。ruby活python绝不是我们唯一的编程工具,我使用他们的理由是灵活的进行一些数据处理而已,或者说是编一些小程序以方便生活,从这个层面来讲,我发现python才是好的选择。python语法简单,缩进的感觉真的很爽。当然ruby无视python的缩进,采用块方式,我感觉这样不是很爽。ruby与python相比,最重要的差距不是语言本身,而是ruby的历史太短造成的一系列因素,如:没有丰富类库,没有大型支持社区,没有商业应用,学习周期太长,学习成本太大等。

再等待一段世间吧,说不定会无法忍受于其中之一而去关注另外一个吧。

Python与Ruby之间的选择

星期六, 八月 4th, 2007

关于python与ruby之间争论的话题,自ruby诞生以来就从未停止过。最近学习ruby,于是同时简单学习了python。先举个例子:

要输出从0开始到99结束的所有数字:

100.times {|i| p i}

结果输出0到99之间的数字。 世界上还有比这更简单明了的编程语言了么。这是ruby的一个典型特征,称为迭代,这一点是python没有的,更是其他很多高级语言没有的。这同时还是一个典型的“一切都是对象”的例子。在ruby里面,连最基本的数字都是对象,有自己的方法和属性。

同样的case用不同的语言来处理,java,c,c++,甚至是python,我想都不可能这么简单明了吧。

我想上面这个例子就是我为什么喜欢上了ruby的原因,不过ruby的好处当然不只这些。

ruby语言的哲学也是我关心的一个话题。编程在传统上来讲是一个严肃和呆板的事情,程序员的快乐大多来自于编程结束后的成就感,而在过程中大都背负着不同程度的压力和不快。ruby则不同,它使一切皆是对象,使程序员的精力花费在解决问题上而非语言本身。同时ruby自由放荡的语言个性使得同一个问题往往有很多不同的解决办法和编码实现,这一点和我的个人性格倒也不谋而合,我想这也是80代人的共同性格吧,桀骜不驯,不喜欢束缚约束。ruby就是典型崇尚自由的言语,但其自由却从不脱离现实,反而与其他语言相比,ruby的哲学更接近人们的真实生活。

单语言本身来讲,我认为无可挑剔。当然也有一些令我不爽的:

ruby是日本人开发的,正所谓英雄不问出处,我们应该理智的看待语言本身。但对一些盲目的爱国主义程序员来讲,他们或许会嗤笑,使得ruby得不到正当的支持。

ruby是新型语言,没有众多程序员在实践中总结的精华,没有丰富的类库;还没有完整的社区,更没有完整的中文社区。这使得学习它是一个比较困难的事情。

关于ruby和python选择的问题,我想要同时持续学习两个语言一段时间,直到我无法忍受于其中的令一个。

昨天看电影看到一句老话:Nothing is impossibl.贴出来与正在进取的人共勉。

哥德巴赫猜想的验证

星期五, 六月 15th, 2007

十九世纪数学家康托(Cantor G.F.L.P.,1845.3.3~1918.1.6)耐心地试验了1000以内所有的偶数,奥培利又试验了1000~2000的全部偶数,他们都肯定了在所试验的范围内猜想是正确的。1911年梅利指出,从4到9000000之间绝大多数偶数都是两个素数之和,仅有14个数情况不明。后来甚至有人一直验算到三亿三千万这个数,都肯定了猜想是正确的。

上面是材料,我特别注意了黑体部分。19世纪还没有计算机的,所以即使再伟大的数学家要推算简单的1000以内的哥德巴赫猜想,也需要非常的耐心,我要生在那个年代看来注定是不会成伟人的。但在当今,只需要简单的下边的Ruby代码即可轻松完成1千、1万甚至更多的质数穷举,而所需时间仅仅要几秒钟。不知道是该感叹世界进步了,还是我们的大脑退步了。

result=Array.new
for i in 2..10000
flag=true
for seed in result
if i%seed==0
flag=false
break
end
end
if flag
result[result.length]=i
end
end
p result
p result.size