现在看到各类文章,因为人工智能的原因,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 页面可以后端渲染、可以前端渲染还可以混合渲染页面,你换一个语言换一个框架不也还是这样玩。
这个只是随便一说,不用太上心啦。相比 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 这个更小众语言的理由吗?
懂 Elixir 是加分项,Elixir 是一个研究方向,但我不知道有哪个线上系统已经用 Elixir 或是要改写的。
正常的技术储备啦,Phoenix 作为新生事物还是有很多可取之处的,有个非关键的服务组件尝试 Phoenix 了,没有了解那边的细节,闲聊感觉那边对于 Elixir 应用的部署运维还是不太熟悉,所以运维成本未必低。
Ruby 这边部署运维这一套很熟悉了,专门的运维团队(不懂开发的)和 Rails 开发这边也有了一定的默契。
Erlang Haskell Lisp 这些小众语言确实让我增长了知识面 也耗费了不少的时间 上面的大神也说了吧 应该寻找自己感兴趣的某个领域的库来研究,那个库用啥语言就用啥