新手问题 ruby 没有 python 流行是不是因为 ruby 太难了?

tablecell · 2019年10月01日 · 最后由 jhyc 回复于 2019年11月04日 · 9709 次阅读

ruby 没有 python 流行是不是因为 ruby 太难了?

因为早期 Ruby 资料都是日文,不便于传播。

Rei 回复

Matz 说令人痛心的是,Ruby 也是因为在国外先流行起来,才开始在发源地日本流行的 😂

知乎赞 ruby 的人少,踩 ruby 的人多。ruby 培训机构为 0 家,python 的培训机构数量为 100 家以上,ruby 就业机会少,python 的就业机会多。

ruby 只有 web dev 这一波

而 python 起码有 web + data/AI这2波

因为 ruby、rails 在 windows 上运行不了

Python 有干爹 Google。你看 Go。

再一个 Python 语法简单,比较适合教学。

ruby 一直都可以在 windows 上运行的,核心库里面都还有 win32api 那么个东东。而其依赖的使用了 C 的那些 gem 因为需要编译所以就变得对 windows 不太友好了(替换成纯 ruby 写的 gem 的话我觉得就没这个问题

马太效应的牺牲品

上面几位都在避重就轻。避而不谈 ruby 的真正缺点:设计比 python 混乱

gaicitadie 回复

你指 python2 还是 python3?

gaicitadie 回复

为什么这么说呢?没明白你的意思。

赞同马太效应

生态。。。

Guido 过去学术圈子的,在学校流行学生不得不学习了。Ruby 爱好者学习居多,学校是不会教的(我发小在美国读博,前阵子讲面向对象课用 Ruby 教学)

gaicitadie 回复

Ruby 不是没有混乱的地方,看你能不能说出来了

16 楼 已删除

Ruby 太喜欢元编程了

看你名字就想踩一下,但论坛没有这个按钮。

sharpx 回复

元编程是特有的?

cqcn1991 回复

正解吧

Lisp 没有 C 流行是不是因为 Lisp 太难了?

stephen 回复

最逗的是日本那边 Ruby 核心开发至少一半用 Win 的

其实 Ruby 2.0 后换了新的打包方案,Win 原生 build 都没坑的,问题对于内地这边,安装 Ruby for Win 中间需要的依赖在 AWS 上,全被墙了

我作为初学者说一下吧 本身会 Python

我只说一下 Web 框架对比

  1. rails 学习曲线明显抖很多 不好上手 把官方的教程走一遍还是迷迷糊糊的 要反复的看文档才能搞清楚之间的关系 反观 Python 的 Web 框架 跟着走一遍基本上就能依葫芦画瓢了「直接拦住了很大部分想要学的人 本来想学的人就少 直接变更少」
  2. 中文资料少的可怜
  3. 用的人数少导致有些问题去谷歌搜 搜不到,讨论的也不多,而 python 的 web 框架基本上遇到问题都能找到答案
  4. 敲代码的自动提示 都是大 JB 家的东西 RubyMine 感觉基本就是废物。。。

这个确实是原因之一,难挺多的。

但是主要原因可能还是应用场景的问题,生态。

Ruby 设计太烂,文档简直是对软件工程的侮辱,如果想搞清楚,就去看源码吧😓

可以这样认为,Ruby 代码本身的撕扯比功能要多

  1. 你写了双引号,会有人让你改成单引号
  2. 你写了字符串作为键值的哈希表,会有人让你改成 Symbol
  3. 你写了 trailing comma,会有人让你去掉

其他的比如写了三个以上类似的方法/类就会有人让你改成元编程就不一一而论了。

另外 Rubocop 本身的 taste 很有问题,配置起来也很讨厌。

29 楼 已删除
www 回复

针对这位兄弟的观点聊一下自己粗鄙的看法:

rails 学习曲线明显抖很多 不好上手 把官方的教程走一遍还是迷迷糊糊的 要反复的看文档才能搞清楚之间的关系 反观 Python 的 Web 框架 跟着走一遍基本上就能依葫芦画瓢了「直接拦住了很大部分想要学的人 本来想学的人就少 直接变更少」

我的感觉是 Rails 其实并不适合对 web 开发一点基础没有的人来学,从前端到后端,乃至数据库及运维的知识都要有一个宏观性的了解,在这基础上再学 Rails 感觉会好不少,我是先接触的 flask,简单清晰,然后又接触的 django,回想当初学 django 的时候感觉也迷糊,本质原因还是当时对该了解的理论知识没有了解透彻。所以武断地讲,无论哪种语言的全栈框架都不是为一点基础没有的初学者准备的。

用的人数少导致有些问题去谷歌搜 搜不到,讨论的也不多,而 python 的 web 框架基本上遇到问题都能找到答案

个人的体会是,在使用 Rails 过程中碰到的比较棘手的问题都是靠看源码解决,对自己来说这到是个好事情。

bysxiang 回复

哈哈哈~ 看源码 +1

把 Ruby 替换成 Lisp 会不会让人更容易理解问题在哪?

nouse 回复

太真实了,每次 code review 都是在争论这些东西。。

misakamikoto 回复

code review 不是 code style review

因为网络不好,经常打不开相关的网站。 比如下载这个: https://rubyinstaller.org/downloads/ ,200MB 要花 4 小时。

虽然工作一直没离开 ruby,但这几年的感觉下来,ruby 进化得比较慢。但是楼主说是否 ruby 太难,本人感觉不是。

oatw 回复

个人的体会是,在使用 Rails 过程中碰到的比较棘手的问题都是靠看源码解决,对自己来说这到是个好事情。

不错是好事,但是对于初学者不是说不想去看源码,而是自身的水平还不够,这就比较尴尬

Rails 文档算非常好的了,Ruby 的源码我至今也没看过也不影响开发。

web 开发,尤其是全栈开发本身知识点比较杂才是劝退新手的主要原因。python 还能干别的,ruby 不做 web 没得做

国内也有一些公司,不声张的,但另一方面是,AWS 没有一个专门的 Ruby 开发,写 Java 的顺手就把 Ruby 项目写起来了

jasl 回复

说明 ruby 学起来容易,用起来容易!

https://news.ycombinator.com/item?id=21138422 在 Y Combinator 估值前 10 的公司裡面有 6 家使用 Ruby

主要是生态,特别是高校生态,一些高校老师和学生或多或少会接触了解到 python,进而促进了 python 在研究领域生态的积累,其实 python 写 web 比不上 ruby,python 主要是生态,什么都能搞一点,python 生态的人员背景很广泛,涉及科研、运维、安全、web 的各个方面,这也是 python 的库广泛的原因。

monika 回复

伯克利有门课用的是 RoR,cs169。

MIT 出了 Julia,但一直没火起来。

44 楼 已删除

Python 能做的 ruby 做不了,ruby 能做的 Pythpn 也可以。为什么我要学 ruby?

我们公司的新项目我一直想要用 rails 去做,省事太多了,但是后来考虑到后续人员的招聘问题,无奈放弃。不想给未来的自己和公司挖这么大坑。

个人项目或者创业项目那倒是可以。

ruby 鼓励一个问题有多种解法。。。。这个放到工程里简直是噩梦,尤其是你有坑队友的时候

48 楼 已删除

很显然大家都没有认识到 ruby 不如 python 流行的真正原因。

最真实的原因是早期 ruby 对 windows 的安装实在太不友好了 (现在 windows 有 wsl, 终于没这个问题了,不过也晚了), 至今本论坛的 wiki 上还写着不建议用 windows .

windows 系统占据的市场比例大概是 90%, 可以想象,python 爆发性发展的时候,效率是 100%, 而 ruby 爆发性发展的时候,效率是 python 的 10%. 几年下来,用户量的差距已经不可想象。

一个语言想要流行起来,一定要为新手考虑,尊重新入门的成员,而不是高傲的说,建议买 mac 或者重装成 linux 系统,这样必然会被大量的用户所抛弃。

我 Python 感觉很 dirty,但是就是让你那么用,你还没有办法,在定义类的实例方法中,居然要传入第一个方法参数 self 来占位,在方法的 context 中难道不能知道 this 吗?感觉 Python 中的面向对象是个假的

@Rei 发现疑似博彩网站灌水者@lesliehuang

qichunren 回复

估计因为 c 的面向对象就是把第一个参数作为对象的,guido 就偷懒了,对象能继承就不错啦。。。

从语法讲,Ruby 简单多了

还是看应用,Dart 不是快死了,弄出个 flutter 又复活了。

ruby 不管什么问题,我觉得有两点是其他语言比不了的,第一是友好,没有之一,第二是 rails 这个 web 框架,很多人说这个难,我觉得不是 rails 难,而是 rails 太成熟了,包含的东西就多,市面大部分流行的其他 web 框架都是学 rails 过来的,多少年了,可以说没有一个到达 rails 的成熟度,你拿 rails 开发 web 项目,快,而且安全

都不是。是 ruby 开发 web 太方便,不用加班,不用 996,码农没有成就感,老板觉得钱花的亏,所以用的人越来越少了😂 😂

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