Rails 去他的 RTFM, 只要 @kayakjiang 我有问必答,绝不敷衍

kayakjiang · 2019年04月29日 · 最后由 ForrestDouble 回复于 2019年06月13日 · 4938 次阅读

前几天和深圳一家用 ruby 的公司电话聊了将近一个小时,快结束时这家公司的负责人问我:你觉得 ruby 慢吗?我:不慢,rails 目前还是最好的 web 开发框架,绝大部分的性能问题都是数据库那边造成的。他又继续问:那为什么感觉国内 ruby 的开发者越来越少,想用 ruby 的公司也越来越少?我有点答不上来,只好说不是 ruby 语言本身的问题,至少我工作这么多年,还没有遇到哪怕一家公司是因为 ruby 的慢导致公司关门的。他赞同我的观点,瞬间有了种惺惺相惜的感觉,我估计他也是混 ruby-china 的,可惜不知道他在 ruby-china 的 id. 这几天我在思考他提的问题,我觉得 ruby 主要的问题是新人太少了,也许很多想进入 IT 领域的人根本不知道有 ruby? 也许我们的社区对新人还是不够友好?

RubyConf China

这个是含金量最高的推广了,虽然受众主要是业内人事,但是给了一个广阔明亮的场地,让大家相互了解下都在研究什么好玩的东西,一起搞搞事情,国内用 ruby 的公司也可以出来宣传下,但是非常可惜没有继续办下去。

李笑来的全栈营

这个全栈营对 rails 的推广效果其实很猛,就连我那位在长郡中学教书的大嫂当时都在转全栈营的学习课程,完全两个世界的人啊,要不是她的课比较紧张,估计都会打算学习下 rails 了。5 万块的价格可能有点贵,但我觉得是市场定价没有强买强卖,遗憾的是这个全栈营没有继续做下去。

我的有问必答

只要你 @kayakjiang 无论什么技术问题,我有问必答,我的回答会迟到,但是不会缺席,也绝不会用 RTFM 或者 google 来回应你,你不用考虑任何提问题的方法,步骤,也不用担心自己提的问题是不是太简单或者初级,just do it 只要把你的问题和疑惑贴上来并 @kayakjiang 就行了,唯一的要求是不要像这个人 https://ruby-china.org/EricWJP, 别骂人就行了,回答错了,讨论下指正下就好了。

RTFM[https://en.wikipedia.org/wiki/RTFM] 是 read the fucking manual 的意思,还有许多其它的变种,咱不和它们玩:

  • RTBM ("read the bloody manual") (In some countries, e.g., the UK and Australia, this is a fractionally more polite alternative with identical meaning[5])
  • RTFA ("read the fucking/featured article"—common on news forums such as Fark.com[6] and Slashdot, where using "TFA" instead of "the article" has become a meme)
  • RTDA ("read the damn article")
  • RTDM ("read the damn menu")
  • RTDM ("read the damn manual")
  • WABM ("write a better manual" – an answer complaining that the manual is not written well)[7]
  • RTFE ("read the fucking error")
  • RTFM41 ("read the fucking manual for once")
  • RTFW ("read the fucking wiki")
  • RTFC ("read the fucking chart" – a response that Physicians give to coders who submit inappropriate queries)
  • RTFS ("read the fucking source" or "read the fucking standard")[8]
  • RTFB ("read the fucking binary")[9]
  • RTFQ ("read the fucking question")

牛逼!

牛逼!

牛逼!

有的时候,人们在谈性能的时候,都忘了说是 IO 密集型,还是 CPU 密集型。

牛逼!

虽然不好意思说,但其实 RTFM 也是 Ruby 越来越少的重要原因之一。

牛逼!

50 ~ 80 万年薪,Java 领域常见,再看看我们招聘板块,35 万顶天啦~(≧▽≦)/~啦啦啦

ruby 人少,就是文档太烂了,说 ruby 有文档,简直是侮辱了文档。绝大多数时候,都要看源码,心累。

牛逼!

bysxiang #17 回复

绝对不是,Ruby 的文档绝对不算烂。

你去看看 Python 的一些文档,更新不及时、引用外链失效等等,那文档根本没法看。

Ruby 的文档其实算是中等偏上的。

有将 Ruby 用到 非 web 开发方面的点个头。我一直认为 Ruby 就是比 Python 好用一点,为什么 Python 比 Ruby 更繁荣,就是因为有将 Python 用于各个方面的开发者。

qichunren #20 回复

其实 Ruby 在工具链上是很有建树的。。。CocoaPods Fastlane 等等。。。但是这些不值得拿出来说事情

qichunren #20 回复

关于好用,能不能展开说说,python 还有 jupyter 呢

nouse #22 回复

这没什么好争的吧。。

Python 的 numpy、jupyter 等,也 Rails 一样,都是大名鼎鼎的领域之王。不过 Python 和 Ruby 在语言层面就是两种完全不同的风格了。

qichunren #20 回复

我不觉得 Ruby 比 Python 好用,大项目还是 Python 好用。

Ruby 的自由度是以牺牲部分项目的工程性为前提的,项目越复杂这个缺点就越明显。Ruby 好用的地方是可以使用 dsl 把项目里隐含的抽象更语义化地表达出来,这些东西用其他语言可能会更加啰嗦一点,节省掉这些啰嗦的部分会让人觉得很爽。不过当你去维护一个你不怎么熟悉的系统,或者把项目交给一个抽象水平不怎么高的程序员时,这个优点就不那么美好了,甚至可以说是一个缺点,构建时节约的复杂度迟早会在维护的时候还回来。

对比 bundler,gem 和 pip ,easy_install 那一套就知道 ruby 比 python 强在哪了

adamshen #24 回复

抽象水平才能体现一个程序员的水平吧。还是抽象水平高的开发语言好。

👍 👍 👍 最近也是这种感觉,ruby 越来越窄,公司也开始招 python 的人,人是很多,但是中级以上,会建模啥的,真的不多~

28 楼 已删除

我想想我开始不用 ruby 改而用 go 的原因吧,从开发到部署

1.ruby 的轮子确实很棒,但是这两年随着版本的更新,轮子的可用性在下降,并且新轮子越来越少了

2.很多时候效率确实是问题,自己所在的领域 web 化的越来越少了

3.生态。在后 web 时期 ruby 现在的生态太差了

4.部署。这也是最致命的一点,部署起来太复杂了,docker 确实解决了一些问题,可是有些场景是不能用 docker 的。

5.处理逻辑在微服务化。ruby 在这方面没什么优势。

qichunren #20 回复

Rake 重度用户路过。

@kayakjiang 哈哈,看到你在我招聘贴的回复来到这里,你这有问必答这才霸气哈!

非常想认识聊一下,可以加我微信 huhongcn,我用 rails 用了 7 年了,即使不找工作也可以交个朋友

youknowhu #31 回复

@kayakjiang 哈哈不好意思,刚看到你发的邮件,邮件联系 :D

youknowhu #31 回复

你们公司大气,一下子招 10 个人,壮我们 rails 社区士气,一扫就业阴霾,要多多支持你们公司👏 👏 👏

推荐👉 https://ruby-china.org/topics/38469

netuser #29 回复
  1. rails 6 已经出,这说明 rails 仍然很年轻,生命力很强,仍然在不断引入新的技术和理念修炼开发方面的功力,rails 目前仍然是 web 开发领域的王者
  2. web 并不单单指网页,还有各种 API,移动端的数据渲染都可以归纳为 web, web 仍然是最好,最广泛的开放式服务场景,即使是纯粹的手机客户端或者其它内部应用,也需要各种 web api 支持或者开放出去。
  3. 关于生态这块,话题太大了,不好讨论
  4. 关于 rails 部署这块,把 cap 配置起来,rails 的部署很容易方便的
  5. 关于处理逻辑在微服务化,这不就是解耦合吗?硬生生的搞一个新名词出来,解耦合和语言没有关系,难道 ruby 写的东西就不能解耦合,解耦合不是基本素养吗?
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供
 最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的
Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量 
避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构
netuser #29 回复

希望不要认为我在杠哈哈,我也在学习 Go, Go 这门语言很好,学习不难,速度也很快,又有大腿支持

你讲的李笑来的全栈营与 xdite 的全栈营是一个?

adamshen #24 回复

大项目 ruby 和 python 半斤八两,主要看框架,rails 这种 all in 的其实还好,python 最流行的 web 框架因该是 flask 了,微框架,在大项目里的表现肯定比 rails 糟糕,我们公司现在用的就是 flask,人员一流动,代码一团糟。 比如 validate,rails 看一下文档,大家都一清二楚该用哪个就哪个,flask 呢?validator 都是自己写的,想用的时候先在项目里找一下,然后再仔细看怎么实现的,才敢用上去。真的很痛苦。

大项目还是用静态语言的好!

他们倆没闹翻之前应该是同一个😂

ruby 我觉得推广难的两个原因:

  1. 没有简单好用的 ruby for windows。
  2. 过分强调 ruby on rails。Ror 对于新手真的是太不友好了,大量的 dsl 让人摸不着头脑。 但是但就 ruby 本身而言,ruby 的语法是很适合做新手推广和教学的(如果能解决 ruby for windows 就更好了)
ksec #41 回复

写的太棒了,努力一把,国内出一个杀手应用

同意 @jzlikewei 的说法,ruby 在 windows 上的体验太糟糕了,早期 ruby 风靡大江南北的时候,论坛里面的人都是很骄傲的,对任何使用 windows 的人都是直接建议放弃 windows。

直到现在,论坛 wiki https://ruby-china.org/wiki/install_ruby_guide 里面还是还是不建议在 windows 上搞,这一点阻拦了 90% 想要学习 ruby 的用户,不管是 python,php,javascript 还是 go,在 windows 下面体验都是很优秀的,唯有 ruby 一直没有认真对待 windows。

windows 支持的解决也不是以个人力量能解决的,实施上 ruby china 几乎是我见过最友善的社区的,但靠对新手的热情解决不了这个问题,不如呼吁大家一起来解决 windows 的支持问题。

不如呼吁大家一起来解决 windows 的支持问题

这个也是问题之一,亦都是资源问题。Ruby VM Core Team 里没有任何一个是使用 Windows (^^"). 而且没有一个对 Windows 有丰富知识,如果要出钱请 / 赞助 一个人来做,却没有任何公司觉得这个问题有迫切性。( 因为对他们本身利益没有任何关系 ) 最近 Ruby 外国社区也再一次讨论过这个问题,最后也只能期望 / 观望 Windows 10 的 WSL ( Windows Subsystem for Linux ) .

[1] https://samsaffron.com/archive/2019/03/31/why-i-stuck-with-windows-for-6-years-while-developing-discourse

ksec #46 回复

用 WSL + vim 写 ruby 的来报个到😆

以前买的电脑是 windows,嫌虚拟机麻烦,就用 WSL 开发 ruby 了,感觉还行。终端不太习惯,用了 cmder,各种快捷键跟 mac 的 Iterm2 也不一样,vim 的块操作 ctrl + v 跟 windows 粘贴快捷键冲突等,还是得折腾...不过用 rubymine 开发可能会好一些

我很好奇说 Ruby 在 windows 上体验差的说法。现在在 windows 上使用 Ruby 不都是用 https://rubyinstaller.org/ 这个吗?这个是复用利用 msys2 这个集成环境的,用起来很顺手的啊,用下来能满足各种需求,安装带有 c/c++ 扩展的 gem 包也没有什么问题。当然同时需要了解一些基本的 linux 下包管理知识之类的。

qichunren #48 回复

看似有解决方案,实际体验非常差,主要就是安装 msys2,对于国外的开发者而言还是可以,国内安装首先面临一个问题就是慢,需要自己把包单独下载下来安装,安装完了有一定机率无法检测到 msys2,具体原因不明,重新卸载安装就可以了,然后还有运行效率极低,跑一下 rails s 就要等好久,各种 gem 在 windows 下经常会遇到些诡异的问题,总之就是表面很美好,核心点还是用户量不够,好多问题没修复,又进一步限制了用户量,这样的一个负反馈是致命的。

像 go,js 这样语言有大公司支撑 windows 的开发,好奇 python 和 php 这样的社区语言是如何解决 windows 下的问题的,难道这两种语言主要开发者是用的 windows?

大公司为啥不用 ruby?因为大佬

既然跑题变成了讨论 Ruby 和 Python 孰优孰劣,我索性建议大家多花时间体会一下现在的 Java 和 Python 特性。毕竟我自己是一个活生生的例子,前一段时间找工作,准备了 Java 和 Python,结果最后只找到了 Go 的工作,Ruby 的机会太少了。

Java:

  • 现在没那么啰嗦了,不过好多地方还在用 Java8
  • Sprint Boot 用起来和 Rails 差不多
  • 虚拟机

Python:

  • 虽然 CPython 速度慢,但是有 PyPy,Cython 和 Numba,Numba 有些数值操作比 Go 还快
  • Python3 增加了 type hint,现在有 mypy 可以 static type check
  • 生态丰富,Jupiter,numpy,pytorch 等等值得尝试

昨天翻了一下相关话题:阻碍 Ruby 普及的因素有哪些?

然后结合了一下,又有一点新体会

前几年个人站流行的时候,dedecms,discuz 这些 php 开源 web 软件大行其道

1,APM 这些套件极其方便,随便安安,一个网站就可以跑起来 2,插件容易找,好安装,下载了放到文件夹里就可以了 3,模板引擎好用

这样个人站长只需要专注内容就可以了,一般来说,有想法的人多,这些开源软件可以满足想法到快速实践。

虽然 ruby-china 的 homeland 这些都开源,但是满足不了这一部分人,1,不易安装,2,插件不能无鏠引进,3,界面模板不好改,没有一些自定义的。最后弄出来的站都长得差不多?还要雇个懂 ruby 的来改界面?

有没有办法从这方面出发,做一些改动?

luoyou #45 回复

现在 Windows10 已经可以装 Ubuntu 的 server 等终端了,结合这个,可以不用虚拟机,这样应该也能带来合适的开发体验,不过我没这样试过,没用 Windows10

nouse #51 回复

我想知道 sping boot 怎么用 sqlite,schema 在哪,migration 怎么用,console 怎么用。。

ksec #41 回复

有一点不是很同意啊,Amazon 内部 Ruby 用得相当多,相当一部分的内部网站都是用 Rails 写的。内部用来生成 deployment pipeline 的工具,code review 的工具以及 build tool 也是用 Ruby 写的。

yfractal #54 回复

你以为 spring 没有你说的这些功能吗?难道 Java 流行只是因为功能太少?

兄弟你怒了,明显,你怒了。不过,你的愤怒转化方式,我还是挺佩服的。努力把社区搞起来,其实大家都想,只是想的程度不一样。加油!不要让 RoR 成为一个人的 RoR。

hiveer #58 回复

没有愤怒,就是觉得做 IT 本来就不容易,对新人多宽容点

@kayakjiang 前辈!

我来求助了。关于服务器的选择上的一点小困惑,这个是我的问题 https://ruby-china.org/topics/38637

谢谢!

liprais #25 回复

现在也有 pipenv

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