用了两天Rails,就开始怀念Python了

2011-07-12 16:31:29 +08:00
 27493586
1. Rails的文档和书跟Python比起来,都是渣渣,看惯了Python条理清晰的文档,我看到类似doxygen生成的东西就想关
左边那是啥? http://api.rubyonrails.org/
看看Python的。 http://flask.pocoo.org/docs/

能不用iframe嘛喂? http://www.ruby-doc.org/docs/ProgrammingRuby/
这才叫美。 http://docs.python.org/

2. logger打出来的东西居然不带行号和文件名?那和我自己print有什么区别?错误信息里也是,
undefined method `map' for #<String:0xb4a3a5c>
我自己代码里用到map的地方都删了,系统代码出错了至少应该告诉我在哪儿啊

3. Rails官方那本agile的书,一上来就咣咣咣生一堆满是magic的代码出来,也不讲清楚干啥用的。后来还是找了本Rails Tutorial从底向上走了一趟才勉强弄清楚了Rails里文件之间乱七八糟的关系。

4. 陡峭的学习曲线并没有带来多大程度上的开发效率提升,自动生成的代码在脱离了官方那几个例子之后用处也不大了,自己手写也多不了几行。
可能因为我没用到Rails的ORM。所以没有感觉到Rails的好处。自动测试啊,TDD/BDD之类的开发辅助工具倒是很强大,不过现阶段只想先上手。
回想去年这个时候自学Python,找了几本书并排着看,每本都讲得很清楚,没有任何难度就入门了,再之后学django/flask/web.py/bottle也都是轻松上手。Python党的文笔和美感就是比Ruby党的要好。而且Ruby/Rails代码有太多对效率提升没多大帮助的Magic写法了,无故加大了学习曲线。

5. 如果不是因为Python的json, u'xxx', unicode encode/decode error的话,我还用python。Python的语法是最接近数学和英语的,是我用过的这么多语言中最接近完美的一个。


结论就是,希望没用过Python的Ruby/Rails党去试试Python,你们会上瘾的。
23525 次点击
所在节点    Ruby on Rails
62 条回复
reus
2011-07-12 16:55:25 +08:00
1:严重同意
2:错误信息的前面不是有文件名和行号嘛,比如:
t.rb:1:in `<main>': undefined method `map' for "ok":String (NoMethodError)
t.rb就是文件名,1就是行号
3:没看过不作评论
4:ruby正是用很magical的metaprogramming来提高开发效率的,可以用更少的代码表达更多的意义
5:python3应该在unicode方面比较方便些,不过,python2搞清楚了,注意点,也是没问题的
levon
2011-07-12 16:55:52 +08:00
楼主能简单分享想你学习Python的过程吗?
hellmash
2011-07-12 17:01:54 +08:00
万能的python
pcx3802482
2011-07-12 17:09:36 +08:00
“python是工程,不是艺术。”
gotounix
2011-07-12 17:12:14 +08:00
尝试过rails,感觉还是django清晰、简洁。
27493586
2011-07-12 17:19:45 +08:00
@levon
网上down几本python的书,打开一起看。
当时我用的最后一本也是用得最多的一本是Learning Python还是Beginning Python来着,400页左右,
其实里面我也就重点看了看dict/set/list这一章,
其他章节内容和C++/Java差不多,用到的时候再去查也是非常容易的。
入门之后就再也没看python的书了,一直用官方doc,
官方doc查找起来非常方便。
有C++/Java之类的经验的话,学Python很快。

@reus
4. 太magic就没有可读性了,当然rails熟手还是能读懂,但是如果新手想从研究前辈的代码开始学习那就难于上青天了。相反python的新手可以马上把v2ex的代码下下来看,读起来没有rails的程序这么困难。
下面随便找了两段代码,python基本上就是英文,rails基本上就是魔法诵唱文
https://github.com/livid/v2ex/blob/master/main.py
https://github.com/fdv/typo/blob/master/app/controllers/articles_controller.rb
至于开发效率我现在也只有一个肤浅的感受,就觉得generate和我以前自己写相差的时间并不是特别大,更多的时间是在完善generate之后的东西上。再用一段时间看看。

5. Python 3据说是搞定了unicode的问题,而且去掉了u'xxx'的格式。我现在的问题出在json.loads和json.dumps,有时候json.dumps到redis的字符串是"u'xxx'"的格式,有个u在前面那就必定loads失败了,有时候又是"key":"val",双引号好像也会出错。而数据来源又太复杂,一直没解决,就学了学Rails
Paranoid
2011-07-12 17:44:22 +08:00
10天,20天后再回来,还有此情况,那说明ruby可能不适合你。

正如 python 的缩进可以枪毙100回一样,只是个人喜好而已。
liwei
2011-07-12 17:50:05 +08:00
本来两种语言的设计哲学就不一样,个人爱好而已
imonyse
2011-07-12 18:12:06 +08:00
1. 请用apidoc.com,google出来排第一的还真不一定是最好的。 如果你用textmate,查询快捷键 ctrl+h 非常方便。
2. 不太明白你的意思,我看出错后的backtrace log还是很清晰的啊。
3. Agile那本书是因为dhh有参与,所以算推荐,不能算官方书籍。官方的是网站上的guide,我个人觉得还是讲的挺清楚的。
4.不光是bdd的那套东西,实际使用中,你结合textmate的bundle snippet,无数简单易用的gem,程序写起来简直行云流水般痛快。话说我第一次用cucumber-rails写集成测试时,脑子里不停蹦出一句话,就是FUCKING AMAZING !

补充几点:
我原来使用python,写过一些pyqt的应用。后来学web编程,接触rails之后就完全转到ruby了。在我看来,python除了执行速度,再没有任何特性吸引我了。但你用解释性语言,则注定速度不是你的第一考虑重点。

针对你的问题:
1. ruby的block,第一次用还觉得有点python2.6之后的statement的感觉,用多了才发觉要灵活太多了。
2. 因为ruby的纯面向对象特性,所以你可以在rails里使用像 1.hour.ago, 2.days.from_now, 3.megabytes 这样的语句。
3. 再看看最新的rails 3.1引入的asset pipeline,默认支持 coffeescript 和 sass,你会感觉这就是一个总是走在最前沿,并且充满活力的社区。
27493586
2011-07-12 18:24:23 +08:00
@imonyse 多谢指点,我期待的就是您这样的回复。我再用一段时间看看,可能我还没用习惯
est
2011-07-12 18:34:40 +08:00
用了两天 <此处插入新事物名字>,就开始怀念 <此处插入类似旧事物名字> 了
roamlog
2011-07-12 18:44:33 +08:00
1, 查 api 的话, 我推荐 http://railsapi.com/
2, log 对我来说蛮清晰的
3, dhh 那本书其实一般, 我更推荐 Ruby on Rails Tutorial Learn Rails by Example, 就是你看的这本
4, ruby 和 rails,因为非常灵活的原因, 要想精通确实有难度, 而且要学的周边的东西也蛮多的
5, 说到 unicode 的话, 我个人觉得 ruby 1.9 关于编码这一块的处理方式很恶心...
imonyse
2011-07-12 19:29:11 +08:00
@27493586 不知道你看railstutorail时,有没有看/买他的screencast。多看看screencast(免费的极力推荐ryan bates的screencast.com),其实也可以学到不少只看书学不到的技巧的,比如其他人的编码习惯,常用快捷键等等。

如你所说,现在刚起步,推荐你看一眼这个:http://railscasts.com/episodes/250-authentication-from-scratch
reus
2011-07-12 19:34:39 +08:00
@27493586 可以给个示例程序看看吗?json.dumps如果要输出u'xxx'这样的格式,只有可能是参数使用了repr()吧
Numbcoder
2011-07-12 19:49:26 +08:00
为什么拿 rails 和 python 比?
ruby 不止有rails。
是ruby 的优雅才造就了华丽的rails
iwinux
2011-07-12 20:56:21 +08:00
1. 分清楚 API reference 和 guide 的区别。跟 http://flask.pocoo.org/docs/ 对应的应该是 http://guides.rubyonrails.org. 至于 API 参考,http://railsapi.com/doc/rails-v3.0.8rc1/ 这个很不错。

2. 你说的 logger 输出是指日志文件、终端还是浏览器页面里显示的信息?在终端和日志文件里都能看到出错代码的行号。

3. 教程推荐 http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

4. 开发效率的提升比较难描述,但以我自己的经历来说,我初学 Rails 的时候做过一件很爽的事情,就是用 acts_as_taggable_on 这个 gem 在不到半小时内给自己的网站添加了 tag 支持(从搜索到这个 gem 到实际测试通过)。Python 里最接近的效果估计只有 Django 能做到了吧。

最后补一句题外话,无意冒犯,但我觉得楼主用 Python 的 Web 框架也没写过太复杂的东西。
bhuztez
2011-07-12 21:52:18 +08:00
@imonyse 其实python也可以 1-hour-ago 的嘛
fanzeyi
2011-07-12 22:04:14 +08:00
我觉得基本从Python转到Ruby的基本都会有这样的想法- -

嘛 当然在往后我也不知道了。。
27493586
2011-07-12 22:09:05 +08:00
@iwinux @imonyse @roamlog 多谢指点,受益匪浅!

没做过复杂东西,4月开始学做网页和js,当时由于有python的经验就直接用了python的框架,这三个月js框架和python框架都换了不少。Rails才出来那会儿我试着学过,还是看的agile那本书,rails网站上放着的。。当时看的感觉和现在的感觉一样,一头雾水。但是一直想学学Rails,因为cucumber太酷了,而且很多先进技术都是Rails带出来,其他框架再copy
Rails Tutorial确实要好很多,不过今天学Ruby去了,没怎么看,接下来应该会继续学Rails。

谢谢所有回复的朋友们
marco
2011-09-09 16:58:44 +08:00
Rails Tutorial 罗嗦得让我想杀人。
Rails Guides 算是超级实用派的,不过学习曲线比较大。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/15666

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX