现在看到各类文章,因为人工智能的原因,Python 好像越来越火了。相反的,现在 Rails 的优势好像越来越不明显了,从而导致了 Ruby 好像热度也渐渐的下降。
但是我没有接触过别的 web 框架,比较好奇哪个有现在 Rails 那么方便的水平了。
所以大家有空来讨论一下,你下一门会选择的 Web 框架,他们优势是什么?
我说说目前使用 Rails 的优势:
amber 吧,虽然还是很起步阶段。但语法亲近,性能高,开发也活跃。配套的 micrate
解决了 migration,webpack 解决 assets pipline。就是要等到 crystal 和 amber 能在生产环境使用可能还需要挺长一段时间。
哈哈,我还挺喜欢 clojure 的,不过社区不活跃,看 https://github.com/clojure/clojure 最近的 commit 还是 5 月份的
同感,但是回头一看,web 的其实还是 php 占大头,别的没有什么特别感觉有什么区别。Python 的 web 方向还是挺不好的吧。想起以前 2.x 和 3.x 版本的段子。
看 https://github.com/clojure/clojure 最近的commit还是5月份的
:
Clojure 已经非常成熟了,那你可以看看 ClojureScript: https://github.com/clojure/clojurescript 22 小时前就更新过。
clojure 写web太蛋疼吧?没有什么像样的框架。
: 多如牛毛的框架可以用,我们公司全都是用 Clojure, 前端单页面用 ClojureScript, 还有数据分析也用 Clojure. API 有 https://github.com/weavejester/compojure, ring 等插件 和 ruby 的 rack 插件 一样好用,前端框架有 https://github.com/omcljs/om, reagent 等,全栈有 www.luminusweb.net 等,大数据领域有 Storm, Cascalog 等 ( 还有很多公司 Clojure 调用 Spark 做机器学习,数据分析), 所有 Java 能做的事情 Clojure 都能做,甚至是前端,还有安卓开发,而且做得很棒。
如果你觉得资源还不够,还有像大海一样多的 Java 资源可以随意使用,几行代码就封装好了一个 Java 库了,如 讯飞语音 SDK 封装 , 等等
当初觉得 Ruby 太限制个人能力了,才放弃 Ruby 的,只能做 Web 相关的东西还有运维... 而且连前端单页面也写不了,ClojureScript 就可以两百行写一个单页面游戏, 数据分析和机器学习更干不了...
kemal 和 amber 比优势不大。性能上没有多大差距,而 amber 有自己的 cli,有 orm,console 和 router。虽然说是这么说,但如果现在要用的话也只能用 kemal 了。
我也觉得 clojure 不活跃,第三方库也少,仅个人看法,无实际依据。
clojure 据我所知,现在还不支持 debugger,但社区认为函数式语言不需要这个,个人表示无法理解,可能是我姿势不对,或者智商有限吧。。。
函数式编程根本不用 debugger, 只要用 repl 就完全足够了,足够好了,纯函数根本不用 debugger, 不像面向对象。我们老大写 Clojure 或者是 Haskell, 连 repl 都不用,直接默写纯函数,我运行他写的代码几乎 没有错误。 第三方库多如牛毛,除了纯 Clojure 库很多之外 , Java 的库非常轻易使用,你知道 Java 库就像银河星球那么多吗?
LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境
你没反对,我就当你同意了。
我还知道有人写 php 不换行,也没 bug 的呢。 clojure 需不需要 debugger,是要看使用者的看法,而不是某个人,当然也可以说,clojure 只给那些不需要 debugger 的人用的,我也表示没意见。
需要 debugger 的人应该不仅我一个,比如这个 https://github.com/cgrand/poucet ,应该就可以证明。
我说了我没有数据支持。你可以说我,没数据,在扯淡。但你说 第三方库多,也没给出数据。那这成了来回扯淡。 我只能说,clojure 第三方库就是少,反正都是在扯淡。
要是仅仅就是想调用 java 方法,大可不用搞一门语言吧?Ruby 就很少拿能用 C 代码说事,也很少拿 JRuby、mruby 说事。
一个语言,调用另一个语言,会有很多不舒服的地方。只有在万不得已才这么做。也就是说,是用来弥补缺陷的方法。。。就算不是缺陷,也是备选方案吧?
而且很多语言都能有这种功能吧?ruby, python, rust, julia。。。
Rails 基本上没有什么用处了,除了接手 legacy 的项目外。对于新人,我真心不推荐学 Rails。我看过的绝大部分的 Rails 项目的质量都不高,原因就是 Ruby 和架构都没学好就等不及开始学用 Rails 了…… 架构第一,Ruby 第二,Rails 第三 —— 这个顺序学。
不喜欢“Rails 基本上没有什么用处了,除了接手 legacy 的项目外。”这句话。Rails 还没有那么不堪。希望看到这个帖子的新人们能继续坚持住自己最初的决定还有想法,能好好的坚持下去,而不是被无聊的问题/评论所打乱。不要看别的语言框架做东西甚至比你用 Rails 还要快,看别的语言有前途高大上,就觉得 Rails 不好了,想换了。那你也要先看看人家是什么水平,解决的是什么样的问题。那些说 Rails 很烂的人类是不是觉的从 Rails 转到了其他编程的语言是一件特别正确的决定,是不是觉得那些继续坚持 Ruby/Rails 的人特别傻叉。说 Rails 不好的,你还是不会用!
楼上的几位推荐小众语言的牛人,我完全相信你们在新的编程环境如鱼得水,解决了在 Rails 没有解决的问题。并且我也深有体会:现存 Rails 项目良莠不齐,在遗留项目的代码看得要吐的时候,真的会产生换个语言重写一遍的冲动——实际上不是 Rails 造成这种问题,而是用 Rails 的人有问题,换一个更小众的语言就可以大大提高门槛,把不称职的工程师挡在外面。
但是和你们不同,我最终没有选择这条路,因为 Rails 本身没有成为我的瓶颈。经过几年锻炼,我终于把 Rails 用至炉火纯青,我可以用它满足大部分 Web 开发,为什么要这个时候扔掉趁手工具,重新打造轮子?既然是用的人不对,那么我来解决人的问题——对其再教育。我维护的不是一个几个月就能交付脱身的项目,而是关乎公司命运的核心服务,转用更小众的语言把别人挡在外面会造成人才脱节,导致更大的风险。
当然,我闲暇时候也会学些新语言,取长补短。但我发现一个问题,这些新语言新框架老想从 Rails 挖人,但是却挖不对重点。我引用一篇文章 Why Hanami will never unseat Rails,把转换 Rails 程序员作为第一宣传手段是没有前途的。
Rails 的崛起是因为它创造了一个生态、一门理念,理念是跨越语言的,Rails 当年不仅是转化了 Java、.Net、PHP 的程序员,而是转化了整个 Web 开发领域,在 Rails 之后几乎所有 Web 框架都长得像 Rails。那么向 Ruby on Rails 发起挑战的语言/框架的理念是什么呢?我很少看到相关的介绍,更多的是“Rails 哪里 blabla 不好,X 框架解决了这个问题”,这只能忽悠到一些学 Rails 未精的人。我多希望你们多分享一些新的理念,让我们互相促进。
最后,对初学者说,Rails 没有问题,核心的人没有离开。如果你身边没有这样的环境,放眼到开源社区中去,全球 Ruby 社区比你看到的大得多。
语言只是工具,与其换一种更小众的语言,还不如将 Rails 练到如火纯情的地步的。 目前在学 Python,之后可能会写 GO。再也不想回去写 JAVA,Java 毕竟老手太多,新手太菜,偏执太多,有活力的太少。
2gua 老师,学了 Rails 之后,我基本不太愿意用其他的语言和框架做 WEB 开发了。
各种 gem 提供的成熟解决各种问题的方案,灵活的 routes 和 active record
Rails 真的有股特殊的魔力,能把写代码变成一种享受,提供源源不绝的快感
当然跟我接触不太久,水平不高也有些关系
喵的,居然有人说 java 有海量的库 ruby 没有办法集成,我们公司内部是 hadoop 全家桶,内外部系统全是 Rails(jruby),可以和 hadoop 生态无缝集成(包括 spark 啥的)。
我对 Rails 的理解是一个非常不错的 Web 工具,能解决基本国内大部分 Web 相关的问题,好多号称百万用户的公司同时的并发也不过百。web 系统真正的核心在后端的支撑系统:缓存、数据库、消息队列、搜索、分布式对象存储等。Rails 包含了 web 开发里面的最佳实践,web 页面可以后端渲染、可以前端渲染还可以混合渲染页面,你换一个语言换一个框架不也还是这样玩。
Rails 本身并没有哪里不好,如同 @Rei 所言,是用的人的问题。所以我才强烈建议新手不要茫然的去学 Rails。而是应该先把基础打好。
这个只是随便一说,不用太上心啦。相比 Ruby 和 Elixir 而言,Node.js 缺乏了优雅感和流畅感,所以往往有时候会走一些冤枉路,导致开发周期相对偏长…… 但这完全是我个人的经历。我相信有很多 JS 牛人用 Node 用到玲离尽致。
就目前我的需求和个人情况来说,还没有到 Rails 不能解决我的问题的地步,而且 Rails 还有很多值得我学习的地方,我还没有玩够,所以暂时不会选择下一门。
已经经历 Clojure(含 Common Lisp),Elixir Phoenix(创业失败),现在主打 Haskell 和 Rails。
不要盲目“赶时髦”。专注于眼前的业务实现,才是更重要的。如果 Ruby & Rails 能满足你,那么还换什么呢?不折腾省下来的时间可以去找女朋友啊...
一起共勉吧~
我觉得去 go 社区拼命吹 rust 有多好,go 一无是处也是被喷的下场。个别信徒一个劲地吹新语言新框架有多好顺便贬低 rails,看着都烦。要不开个贴写点干货对比对比,别留一句话然后转身就跑。
东西好不好,还得让市场说话。有志气的,在国内用 Rails 搞出几家有名气的大公司嘛,别都是业务稳定了,就让搞 Java 的人空降替代了,捡了革命成功的胜利果实嘛
其实现在很多社区老人都有意无意地在回避一个事实:闭口不谈中高端 Rails 程序员的去处问题、生存问题
当然了,可以自己创业嘛。但创业不是那么好创的,于是乎又多了一家家用 Rails 的小作坊。万幸小作坊变成了大染坊,可是守不住啊,像 Java 栈这样的“袁世凯”太多了不是
随口一说,呵呵,见谅
招聘中 https://ruby-china.org/topics/33711
DJI 电商就是 @saberma 一手撑起的,现在 Ruby 团队在公司整个互联网事业部都占了重要地位,我已经在做非电商的关键服务。不过招聘速度拖慢了接业务的能力,觉得小公司无法满足的可以来试试,待遇不用担心。
其实觉得 web 作为一个开发领域已经没落了,后端工程师要开发的将更多是 api 与三端对接,而非 web 而已。
这时语言的生产力差异相对会不那么明显一些,差异将更多 concern 在不同技术栈的成熟度和扩展能力上,其中扩展能力除了耳熟能详的性能、可用性方面的考虑,也包括团队的扩展空间。这两者都与社区的力量也深深关联着,比如公司快速成长时,能否通过社区内成熟的方案解决难题、或者引进社区内有经验的工程师顶住局面。
工业界呼声最高的语言,都是实用优先,不给你胡思乱想的机会,Java 是大卡车,Python 是拖拉机,PHP 是宇宙最好的大客车,用的都是“橡胶”轮胎。 都说 Ruby 喜欢发明轮子,轮子的材质各种各样,遇到好用的就被模仿,不好用的也不应该成文被批判的理由。
Ruby 当年凭借一堆理念,吸引了有思想的各种大牛,而且现在仍然没有冷却的趋势。从活跃度创新思想方面来看,其它社区并没有可比性。
关键还是承载思想的人。 去某些语言最火的论坛去看,很大比例是问“某句报错什么原因?”之类的问题,关于方法技巧很难形成讨论,这个社区乃至这种语言是没有生命力的。
@Rei Ruby 社区不要只是满足于 Web 开发,Matz 都说了 Ruby 的数据科学领域太空白了 与 Python 相比。
Ruby 是曾经非常优秀,但是它的优点 都 被 其他语言 抄走了,自己 却 还在原来的地方。
在大数据,机器学习,深度学习,并行计算,分布式 横行的 时代,难道 还 指望 做个 网站就能 人生 成功吗?
你们做 Web 早,当然享受了 Web 好处和回报,但是新一代的程序员呢 ? 不要因为语言限制了个人的能力。
不是说一个语言能调某个库就是擅长某个领域,如果这也算是的话那么 Ruby 也能(机器学习 tensorflow.rb,前端 opal.rb)。Python 在数据领域的优势是常年累月在高校研究积累出来的,不说 Ruby,别的语言也很难赶上。
软件开发没有银弹,现实中的项目就是由多语言多模块开发完成的,大部分企业在招某个岗位的时候就是找这个领域成熟的技术,而不是想着一门语言、一个工具解决所有问题。像你们公司从前到后全部用 Clojure 在市场上是个异类,异类也有可能发展很好(对创业公司尤其是),但以此作为向新人推荐的依据我觉得不充分,我很怀疑一个程序员第一份工作能使用 Clojure 的机会有多大。
别误会,我觉得 Clojure 也是个有意思的语言,我读《七周七并发模型》的时候就看过一点 Clojure。一个优秀的程序员就应该学习不同语言不同范式,同时向广度和深度扩张。不过这有个过程,总要先有份工作解决生活问题,然后再研究更深层次的领域。我觉得 Ruby on Rails 是一个很好的切入点,一方面它的工作机会不少(也不多),另一方面它是个多范式框架,可以扩展自己的视野。
PS:开个玩笑,我不认为 Ruby 的优点都被其它语言抄走了,例如括号可选这个优点就是 Clojure 抄不走的。
小众语言,国外情况是另一回事,在国内的情况,Ruby 也依然是归在小众语言行列,市场就业机会多少也远排在 Python 之后。 当初,我们提出 php 转 ruby 时,后端人员立马走掉一半,最直接的理由就是搞 ruby 之后出去工作不好找。
我一直在所在的公司推行 Ruby(Rails),在享受高生产率,高回报的同时,缺无可避免的需要面对,在市场上招不到更多的 Ruby 人员。
但我依然喜欢用 Ruby,并认为喜欢用 Ruby Python 这类语言的人员,比其他 (如 php。。。。) 人员更有技术追求,更贴近工程师文化。
然而,这并不影响我喜欢 Elixir Phoenix,而从运维成本的角度考虑,我个人认为 Elixir Phoenix 会更优于 RubyOnRails. 其并行处理能力也明显占优势。
大疆不也因为这样那样的原因,在尝试 Elixir Phoenix 吗?能说说为何考虑 Elixir 这个更小众语言的理由吗?
正常的技术储备啦,Phoenix 作为新生事物还是有很多可取之处的,有个非关键的服务组件尝试 Phoenix 了,没有了解那边的细节,闲聊感觉那边对于 Elixir 应用的部署运维还是不太熟悉,所以运维成本未必低。
Ruby 这边部署运维这一套很熟悉了,专门的运维团队(不懂开发的)和 Rails 开发这边也有了一定的默契。
Erlang Haskell Lisp 这些小众语言确实让我增长了知识面 也耗费了不少的时间 上面的大神也说了吧 应该寻找自己感兴趣的某个领域的库来研究,那个库用啥语言就用啥