ror 会打败 j2ee 么?

2015-01-22 17:06:57 +08:00
 otmb

网上溜达了下,宝石粉说ror是最优美,强大的技术,秒杀j2ee几条街啊:(
可是又听说java spring挺靠谱的,
这里有人同时搞ror和spring么?
说下对这两者的感受吧:)

4055 次点击
所在节点    程序员
45 条回复
williamx
2015-01-24 08:48:11 +08:00
感觉ror框架不错,但是 ruby 真不怎么样。
ren2881971
2015-01-24 10:57:36 +08:00
还只是个小众开发语言。。 面对企业开发的复杂业务比较疲软吧 。
还只是个玩具。。
hitsmaxft
2015-01-24 13:03:16 +08:00
java 适合用来对付一堆能力平平的码农

ror 嘛, 适合有创造力的团队

别 yy, 大部分人都是前者。 所以选什么看 leader 的选择
nine
2015-01-24 16:48:24 +08:00
@williamx
你错了
Rails正是因为ruby才变得如此强大

@otmb
Java要不断的教人怎么使用Java,然后人多了才可以进行创造。
Ruby不用,学习完如何使用(轮子)了,立刻投入创造活动中去了。

然后回头看看一堆讨论语言优劣的人告诉他们

ruby很好啊,balabala
答:ruby运行太慢了。

可是Ruby开发快啊。
答:PHP开发快啊。

php缺少aaa、bbb、ccc.....怎么快啊
答:搞那么复杂干嘛,PHP就是简单啊,做东西快。

项目一旦大了起来之后,没有这些会拖慢开发速度。
答:有学习这些和写单元测试的时间,我都迭代多少个模块了。

没有单元测试覆盖,一个复杂的系统你怎么能快速迭代呢?
答:复杂的用Java写就好了。

Java写起来成本高啊,需要人太多了。
答:ruby根本无法完成大型系统啊

果然如此么?

百度有这么一个方案 http://www.zhihu.com/question/20790576
觉得自己做了一个很牛X的大型方案,殊不知,这在Rails里是一个标准组件。
反观Java社区呢?


无论你说出什么,他们总会告诉你ruby不行。
但是他们不知道,Java从出生到现在,C++众都在说Java不行。
PHP从流行到现在,Java众都优越感十足。

但跟上述语言不同的是,Ruby生产效率太高,有跟你们贫嘴的时间,早开发一堆产品出来了。
算了算不划算,布道成本高,收益甚微。

最无奈的是,他们有最后一条理由击溃你:“Ruby是日本人开发的!我才不用!”


所以。。。
wingyiu
2015-01-24 17:40:12 +08:00
rails style is the future
williamx
2015-01-24 19:33:28 +08:00
@nine 呵呵呵
msg7086
2015-01-24 20:08:14 +08:00
@nine
@williamx
其实就是我前面说的,Ruby不需要你去和编译器做斗争,可以用一种舒服的语言/语法去写代码。
而且Ruby语言本身就可以用来做DSL。
看看rake就知道了,现在我做自动化已经完全抛弃makefile改用rakefile了,谁用谁知道。
还有像testing也是DSL,可以在Ruby语言框架内写测试代码。

而且我最近正在试着给项目做去Rails化,把Rails剥离出去,改用Grape之类的轻量级实现方案。
开发起来感觉也很好,框架基于DSL,代码是Ruby,也没见有什么不方便的。

当你说ROR框架不错的时候,其实就说明了Ruby很好。没有这样一个优秀的语言,就不可能有ROR这样的方案。(比如Laravel没有了rake就只能用artisan这种奇怪的东西,etc)
lujiajing1126
2015-01-24 20:58:00 +08:00
其实我觉得有一个问题是
java太普及了,以至于很多学校,培训机构大量生产所谓了解、或者说精通java的人,其实啥也干不了,什么都不懂,或者只会按培训的教材干活,他们只会ssh框架,然后在那说java怎么怎么牛逼,以前这种简历一收一大把
但是一般用ruby的人,不会特别菜,一般都学习过其他的语言,java,php或者其他的,有很多语言的开发经验作为背景,所以能力就还不错
不过话说回来ruby开发真的相当快。这对一些创业公司来讲,速度就是生命线
otmb
2015-01-24 21:09:21 +08:00
@lujiajing1126 不是说ruby比java简单么?
既然java程序员可以批量生产,ruby程序员为什么不行呢:)
nine
2015-01-25 01:33:30 +08:00
@msg7086
你看,就是不管你怎么说,他们“呵呵呵”
我也呵呵呵,懒得说
datou552211
2015-01-25 09:38:42 +08:00
用java的,会考虑效率,安全,复杂需求解决方案
datou552211
2015-01-25 09:41:57 +08:00
@williamx ror离不开ruby。其他语言无法完美实现ror
williamx
2015-01-25 11:02:07 +08:00
@datou552211
@msg7086
我说“ ror 不错”可能没有表达正确,我只是指它是一个完整的框架(从前端到后端、从表现到数据),然后不需要太多的折腾就可以让新人上手,就可以出 demo,仅此而已。对其的一些理念,比如“约定优于配置”之类,我很保留意见。
至于 ruby 语言本身,我确实只能“呵呵呵”。
williamx
2015-01-25 11:08:00 +08:00
@otmb 太灵活的东西,掌握起来就有难度,想精通更是要化大力气,又不是非其不可,再加上性能上的缺陷,愿意大量投入的公司并不多。就业面既然乍,自然就不会有大量的人涌进去学习。
说白了就一句话:不划算。
msg7086
2015-01-25 11:17:14 +08:00
@otmb 大概是因为ruby还需要一些创造能力和全栈能力吧。
先说一句,我没有学过java,虽然上过java课但是是直接用c#的概念强推过去的。
我只从周围的情况来看,java程序员更适合几十个工程师围着一个项目来开发,而ruby程序员很多都是full stack,两三个人搞定整个网站。
java的好处就是人多,跑了一个只要马上再招一个就行了,而ruby stack上,懂的人相对少,如果跳槽周期长也就算了,遇上短期工那一个酸爽。

@williamx 不知道 ruby 语言本身有什么好呵呵的。
如果你平时都是用 haskell 啊 clojure 啊 scala 啊之类的那就当我没问过。
williamx
2015-01-25 11:58:43 +08:00
@msg7086 上面已经提到过一点:太灵活。
比如括号,什么时候可以省略,什么时候不可以省略;
比如字符串 %q %Q << <<-;
比如赋值时的逻辑不统一 x, y, z = [1, 2, 3];
至于 elsif 这样华丽丽的缩写我就不吐槽了,习惯就好
至于循环要怎么写,是 for, for/in, each {}, 还是 each do {},还是使用其他的各种迭代器 times, map?我无力吐槽,至今没有彻底掌握,分不清是关键字?函数?——也没兴趣再去深究。
之余其他的还有很多——很多,就不一一列举了。

这种无力不像是以C++/Java 背景去学习 Erlang,是由于不同的思维方式引起的;这更像是一开始就没有设计好,天马行空让人完全把握不住脉络、理不清逻辑所导致的。
williamx
2015-01-25 12:00:27 +08:00
所以只能“呵呵呵”了。
msg7086
2015-01-25 12:13:35 +08:00
@williamx 太灵活算是把双刃剑吧。
单纯循环的话,一般 5.times {} 这样。
容器遍历的话,list.each / map 即可。
在写DSL的时候,这种灵活性会节省下大量的时间。
相反Python或者C++/Java里,你会不得不为了迎合编译器的口味而写上很多原本可以省略掉的括号,我觉得这才是让人呵呵的地方。
williamx
2015-01-25 12:35:23 +08:00
@msg7086 括号可不光是省略就完了。你还得知道什么时候可以省略,什么时候不可以。你如果可以给我概况一个,我也算是学习到了!
还包括为什么可以 `if v=='xxx'; then;` 却不可以 `while v='xxx'; do;`;
说到 do,它有几种用法,什么时候可以省略,什么时候不可以。

如果你觉得代码想怎么写就怎么写,不管别人看得懂看不懂,那么 ruby 是比较方便,反正怎么弄都可以——我也可以很快就撸个网站出来;如果代码是要给人看的,大家一起合作,就得统一规范,那 ruby 只能人为的约定很多规范,全靠大家自觉(噩梦一般)——“约定优于配置”这样的口号也就不难理解了。
msg7086
2015-01-25 12:50:02 +08:00
@williamx 只要不产生歧义的都可以省略啊
比如 a = f(b) -> a = f b
a = f(g(b)) -> a = f g b #当然这个加上一个括号会比较好

if 语句很少会像你这样写。我们一般是这样:
if foo?
stmt1
...
stmt5
end
单句就是
var1 = 0 if var1.nil?
return if var2.empty?

do和end相当于{},也相当于C/C++里的{},用来引出一个块 <block>,比如

data.each do |item|
do_something item
p item
end

或者单行版本
data.map { |item| item.reverse }
(可以写成更简单的 data.map &:reverse <函数式风格>)

ruby本来就是这样一个风格。给予用户最大的自由度,让编写代码的人可以跟着「自己的规范」来写程序,而不是跟着「编译器的心情」来写。团队开发当然会有自己的代码风格 <code style>,就算不是团队,也可以根据大众的代码风格[1]来写。而且代码风格问题不光只有ruby有吧,哪种语言没有?Haskell 还有换行不换行风格之分呢。

[1]: https://github.com/JuanitoFatas/ruby-style-guide/blob/master/README-zhCN.md

话说,靠大家自觉难道不好吗?一定要用法律 <syntax> 一般的东西来束缚程序员吗?

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

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

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

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

© 2021 V2EX