瞎扯淡 给你接触下一门 Web 的编程语言,你会选择哪个?

QueXuQ · 2017年08月08日 · 最后由 dallon 回复于 2017年08月19日 · 10874 次阅读

现在看到各类文章,因为人工智能的原因,Python 好像越来越火了。相反的,现在 Rails 的优势好像越来越不明显了,从而导致了 Ruby 好像热度也渐渐的下降。

但是我没有接触过别的 web 框架,比较好奇哪个有现在 Rails 那么方便的水平了。

所以大家有空来讨论一下,你下一门会选择的 Web 框架,他们优势是什么?

我说说目前使用 Rails 的优势:

  1. 相关的 Gem 很丰富,生态好,很多功能即插即用。
  2. 集成的配套都很棒,例如 asset, puma, cap, test 等
  3. 约定大于配置的概念,不太喜欢创建一个项目后,需要手动加入大量东西的感觉,例如当年用 java 时写的 xml
  4. 目前拥抱的 yarn 都挺不错。

我会选择 Elixir PhoenixFramework

golang 或者再回去搞 java

当然是 Elixir 的 Phoenix 啊,Rails 完全没有可比性

amber 吧,虽然还是很起步阶段。但语法亲近,性能高,开发也活跃。配套的 micrate 解决了 migration,webpack 解决 assets pipline。就是要等到 crystal 和 amber 能在生产环境使用可能还需要挺长一段时间。

已转行 Clojure 啦 😝

clojure 写 web 太蛋疼吧?没有什么像样的框架。

对 nowherekai 回复

请去掉 像样 两字。

纯粹瞎说,不要介意。。。

对 yfractal 回复

哈哈,我还挺喜欢 clojure 的,不过社区不活跃,看 https://github.com/clojure/clojure 最近的 commit 还是 5 月份的

对 saiga 回复

和 Kemal 比呢?

Golang or Elixir

ruby 的工作岗位太少了 还是回去搞 python 吧 但不是大数据、人工智能啥的

@tony612 @edwardzhou Phoenix 现在真有那么牛了吗?生态都赶上 Rails 了?

对 helapu 回复

同感,但是回头一看,web 的其实还是 php 占大头,别的没有什么特别感觉有什么区别。Python 的 web 方向还是挺不好的吧。想起以前 2.x 和 3.x 版本的段子。

对 QueXuQ 回复

生态赶上倒不至于,但很多轮子已经够用了,实在不行自己造一个也不难。关键是语言和框架的优势在那里摆着,可以试试

对 nowherekai 回复

看 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 就可以两百行写一个单页面游戏, 数据分析和机器学习更干不了...

PHP 是世界上最好的,这点大家没有异议吧?

GO、 Python

可以玩玩 Laravel

对 aldrich 回复

PHP 是宇宙最好的语言

对 steve 回复

kemal 和 amber 比优势不大。性能上没有多大差距,而 amber 有自己的 cli,有 orm,console 和 router。虽然说是这么说,但如果现在要用的话也只能用 kemal 了。

我已经选择了 python 作为深入学习 因为对我中等水平来说 更容易找到工作

对 nowherekai 回复

我也觉得 clojure 不活跃,第三方库也少,仅个人看法,无实际依据。

clojure 据我所知,现在还不支持 debugger,但社区认为函数式语言不需要这个,个人表示无法理解,可能是我姿势不对,或者智商有限吧。。。

ruby openresty nginx c redis http postgresql...

我在等一门可视化编程语言出现,像画流程图一样来编程 出来了我就去学,学完就开培训班,然后一辈子数钱不用写代码了,哈哈哈哈~~~~

对 QueXuQ 回复

以前接触过 python 但是不够深入 稍微熟悉点 所以选择 python

对 yfractal 回复

函数式编程根本不用 debugger, 只要用 repl 就完全足够了,足够好了,纯函数根本不用 debugger, 不像面向对象。我们老大写 Clojure 或者是 Haskell, 连 repl 都不用,直接默写纯函数,我运行他写的代码几乎 没有错误。 第三方库多如牛毛,除了纯 Clojure 库很多之外 , Java 的库非常轻易使用,你知道 Java 库就像银河星球那么多吗?

对 yfractal 回复

来玩 Elixir 吧。debugger 也有官方支持了,虽然我没用过😁

对 IChou 回复

LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境

@tony612 还真看过一些简单的东西!

@steve-chan-clojure

我有几个观点,

  1. clojure 活跃度不高
  2. 没有 debugger
  3. 第三方库少

关于 活跃度

你没反对,我就当你同意了。

关于 debugger

我还知道有人写 php 不换行,也没 bug 的呢。 clojure 需不需要 debugger,是要看使用者的看法,而不是某个人,当然也可以说,clojure 只给那些不需要 debugger 的人用的,我也表示没意见。

需要 debugger 的人应该不仅我一个,比如这个 https://github.com/cgrand/poucet ,应该就可以证明。

关于 第三方库少

我说了我没有数据支持。你可以说我,没数据,在扯淡。但你说 第三方库多,也没给出数据。那这成了来回扯淡。 我只能说,clojure 第三方库就是少,反正都是在扯淡。

关于 Java

要是仅仅就是想调用 java 方法,大可不用搞一门语言吧?Ruby 就很少拿能用 C 代码说事,也很少拿 JRuby、mruby 说事。

一个语言,调用另一个语言,会有很多不舒服的地方。只有在万不得已才这么做。也就是说,是用来弥补缺陷的方法。。。就算不是缺陷,也是备选方案吧?

而且很多语言都能有这种功能吧?ruby, python, rust, julia。。。

开始有点语言之争的味道。已准备好板凳瓜子 😀

这...我在用 RoR 当口,一班人在给我浇凉水啊。

Ruby 新人,下一个就学习 Ruby

不喜欢“Rails 基本上没有什么用处了,除了接手 legacy 的项目外。”这句话。Rails 还没有那么不堪。希望看到这个帖子的新人们能继续坚持住自己最初的决定还有想法,能好好的坚持下去,而不是被无聊的问题/评论所打乱。不要看别的语言框架做东西甚至比你用 Rails 还要快,看别的语言有前途高大上,就觉得 Rails 不好了,想换了。那你也要先看看人家是什么水平,解决的是什么样的问题。那些说 Rails 很烂的人类是不是觉的从 Rails 转到了其他编程的语言是一件特别正确的决定,是不是觉得那些继续坚持 Ruby/Rails 的人特别傻叉。说 Rails 不好的,你还是不会用!

对 fredwu 回复

举例子说说 rails 哪里不好?

vert.x 啊,是,我知道,这不是语言,但是它支持 7 种语言,难道这不值得你去了解一下?

对 tony612 回复

rails 哪里完全没有可比性?

当然是 elixir phoenix

对 Rei 回复

说得好

对 Rei 回复

赞一个

对 Rei 回复

语言只是工具,与其换一种更小众的语言,还不如将 Rails 练到如火纯情的地步的。 目前在学 Python,之后可能会写 GO。再也不想回去写 JAVA,Java 毕竟老手太多,新手太菜,偏执太多,有活力的太少。

对 2gua 回复

2gua 老师,学了 Rails 之后,我基本不太愿意用其他的语言和框架做 WEB 开发了。
各种 gem 提供的成熟解决各种问题的方案,灵活的 routes 和 active record
Rails 真的有股特殊的魔力,能把写代码变成一种享受,提供源源不绝的快感 当然跟我接触不太久,水平不高也有些关系😂

喵的,居然有人说 java 有海量的库 ruby 没有办法集成,我们公司内部是 hadoop 全家桶,内外部系统全是 Rails(jruby),可以和 hadoop 生态无缝集成(包括 spark 啥的)。

我对 Rails 的理解是一个非常不错的 Web 工具,能解决基本国内大部分 Web 相关的问题,好多号称百万用户的公司同时的并发也不过百。web 系统真正的核心在后端的支撑系统:缓存、数据库、消息队列、搜索、分布式对象存储等。Rails 包含了 web 开发里面的最佳实践,web 页面可以后端渲染、可以前端渲染还可以混合渲染页面,你换一个语言换一个框架不也还是这样玩。

对 fredwu 回复

测试自己的耐心 —— Node.js

没有明白是哪个梗,可否多说一句?

对 zhihui 回复

Rails 本身并没有哪里不好,如同 @Rei 所言,是用的人的问题。所以我才强烈建议新手不要茫然的去学 Rails。而是应该先把基础打好。

对 lana 回复

这个只是随便一说,不用太上心啦。相比 Ruby 和 Elixir 而言,Node.js 缺乏了优雅感和流畅感,所以往往有时候会走一些冤枉路,导致开发周期相对偏长…… 但这完全是我个人的经历。我相信有很多 JS 牛人用 Node 用到玲离尽致。

就目前我的需求和个人情况来说,还没有到 Rails 不能解决我的问题的地步,而且 Rails 还有很多值得我学习的地方,我还没有玩够,所以暂时不会选择下一门。

已经经历 Clojure(含 Common Lisp),Elixir Phoenix(创业失败),现在主打 Haskell 和 Rails。

对 flowerains 回复

不要盲目“赶时髦”。专注于眼前的业务实现,才是更重要的。如果 Ruby & Rails 能满足你,那么还换什么呢?不折腾省下来的时间可以去找女朋友啊...

一起共勉吧~✊

各位还是用 Go 吧,社区不会有“用得不好是你的问题”这种态度。

补充:以前 Ruby 社区也很友好,我也不明白为何现在变成这样

当然是 c 然后看业务造轮子

对 Rei 回复

你写了这么长只能说明 Rails 适合你的业务,不能说明她适合大部分的 web 业务。

对 nouse 回复

我觉得去 go 社区拼命吹 rust 有多好,go 一无是处也是被喷的下场。个别信徒一个劲地吹新语言新框架有多好顺便贬低 rails,看着都烦。要不开个贴写点干货对比对比,别留一句话然后转身就跑。

社区有些人为啥对 mysql 这么宽容,明明这么烂 对 rails 这么严苛,明明这么好

对 nouse 回复

因为几年前 Ruby 处于鄙视链顶端,现在新欢胜旧人,你就想大家跟你一起鄙视 Ruby。

非风动,非幡动,仁者心动。

东西好不好,还得让市场说话。有志气的,在国内用 Rails 搞出几家有名气的大公司嘛,别都是业务稳定了,就让搞 Java 的人空降替代了,捡了革命成功的胜利果实嘛 😏

其实现在很多社区老人都有意无意地在回避一个事实:闭口不谈中高端 Rails 程序员的去处问题、生存问题

当然了,可以自己创业嘛。但创业不是那么好创的,于是乎又多了一家家用 Rails 的小作坊。万幸小作坊变成了大染坊,可是守不住啊,像 Java 栈这样的“袁世凯”太多了不是

随口一说,呵呵,见谅 😝

对 ruchee 回复

招聘中 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 好处和回报,但是新一代的程序员呢 ? 不要因为语言限制了个人的能力。

对 Rei 回复

小众语言,国外情况是另一回事,在国内的情况,Ruby 也依然是归在小众语言行列,市场就业机会多少也远排在 Python 之后。 当初,我们提出 php 转 ruby 时,后端人员立马走掉一半,最直接的理由就是搞 ruby 之后出去工作不好找。

我一直在所在的公司推行 Ruby(Rails),在享受高生产率,高回报的同时,缺无可避免的需要面对,在市场上招不到更多的 Ruby 人员。

但我依然喜欢用 Ruby,并认为喜欢用 Ruby Python 这类语言的人员,比其他 (如 php。。。。) 人员更有技术追求,更贴近工程师文化。

然而,这并不影响我喜欢 Elixir Phoenix,而从运维成本的角度考虑,我个人认为 Elixir Phoenix 会更优于 RubyOnRails. 其并行处理能力也明显占优势。

大疆不也因为这样那样的原因,在尝试 Elixir Phoenix 吗?能说说为何考虑 Elixir 这个更小众语言的理由吗?

对 edwardzhou 回复

懂 Elixir 是加分项,Elixir 是一个研究方向,但我不知道有哪个线上系统已经用 Elixir 或是要改写的。

对 edwardzhou 回复

正常的技术储备啦,Phoenix 作为新生事物还是有很多可取之处的,有个非关键的服务组件尝试 Phoenix 了,没有了解那边的细节,闲聊感觉那边对于 Elixir 应用的部署运维还是不太熟悉,所以运维成本未必低。

Ruby 这边部署运维这一套很熟悉了,专门的运维团队(不懂开发的)和 Rails 开发这边也有了一定的默契。

Erlang Haskell Lisp 这些小众语言确实让我增长了知识面 也耗费了不少的时间 上面的大神也说了吧 应该寻找自己感兴趣的某个领域的库来研究,那个库用啥语言就用啥

对 nowherekai 回复

滴滴有个内部统计系统用 haskell 写的。

ruby 还有好多思想没接触呢,但还是会正常接触一下大触们涉猎的。目前来说还是以“精通 ruby”为目标

喜欢 ruby style 的 Crystal 不喜欢的 Go

一门语言一定有其所长,有其所短,未登堂入室,未敢评其优劣。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号