@
yodhcn #113 是和 Python 类似啊,Python 也是强类型的。
Rails 的话,首先 Ruby 这门语言的表达能力强,写起来舒服,这个对我是最重要的。我现在所有的项目(除了公司的)都已经用 Ruby 写了,包括平时用的小工具,服务器上的运维脚本,等等。
其次是 Rails 本身就是追求最佳实践和约定优于配置。学习 Rails 上手做一个 hello world 级别的项目(比如一个简易的博客)基本上只要几十分钟时间,而且只要你跟着 Rails 的教程走,你的项目就会是可维护、可测试的。
比如说 Rails 的 ORM 有 database migration 机制,数据库结构的变更可以用代码来描述(增加或者删除列,修改类型,等等),然后你部署新版本的时候只要 migrate 一下数据库就会自动执行变更集,不需要手动去管理。
又比如说 Rails 很容易集成 BDD 测试驱动开发套件(比如 rspec ),你写生产代码的时候可以一并把测试用例写完。对于 Web 项目,你可以一次性把单元测试和功能测试全部搞定,还有 capybara 这种模拟浏览器点击的组件可以用,这些都可以促使程序员去写可维护可测试的代码。
Rails 好像从来就没在国内热过。
西方的初创企业会大规模用 Rails ,因为开发实在是太快了。一个点子想出来,一星期时间就可以从头到尾做完上线测试了,并且可以一直持续迭代到你拿到疯投为止,都不太会有很大的瓶颈。
至于借鉴,我只知道很多框架都或多或少借鉴了一些 Rails 的东西。(当然你也可以说 Rails 之前就有同样风格的框架了,但是我觉得当时没有任何一个框架能像当年 Rails 一样把各种精华都集中到一起去。)
当然对于陌生人我一般不会推荐学 Ruby 和 Rails ,原因你也说了,在国内太小众了,没有前途。在美国 Ruby 的工作岗位有不少,前段时间我以前从零开始带入门 Ruby 的徒弟告诉我他找到一个挺不错的工作,远程在家办公写 Rails ,一年 15 万美元。国内学 Ruby 和 Rails 的,大都是真的喜欢 Ruby 和 Rails 的人,否则为什么不学 Python Java Go 呢,哪怕 PHP 工作也比 Ruby 多啊。但是尽管如此,学一下 Rails 还是很好的,有很多最佳实践的概念会影响你一生,让你写其他语言的时候也能受益。
还有一个原因是 Ruby 和 Rails 太容易搞出 black magic 了。black magic 会让你写代码的时候大呼惊奇,但是万一出了问题踩了坑,那就只能一坑到底爬不上来了。这个我下一楼再说。
很不幸的,我现在工作用的是 Java 8 。我现在还是保持和以前一样的习惯,写项目会写单元测试和功能测试,写组件会更倾向于拆分结构,写接口会尽可能更「人性化」一些,所以学过 Rails 姑且还是有好处的。