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

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

前几天和深圳一家用 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 回复

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

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

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

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

qichunren 回复

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

qichunren 回复

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

nouse 回复

这没什么好争的吧。。

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

qichunren 回复

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

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

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

adamshen 回复

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

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

29 楼 已删除

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

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

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

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

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

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

qichunren 回复

Rake 重度用户路过。

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

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

youknowhu 回复

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

youknowhu 回复

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

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

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

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

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

adamshen 回复

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

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

yuanchang2018 回复

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

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

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

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

同意 @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 回复

用 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 回复

看似有解决方案,实际体验非常差,主要就是安装 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 回复

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

nouse 回复

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

ksec 回复

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

yfractal 回复

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

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

hiveer 回复

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

@kayakjiang 前辈!

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

谢谢!

liprais 回复

现在也有 pipenv

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