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

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

现在看到各类文章,因为人工智能的原因,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

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

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