其他 阻碍 Ruby 普及的因素有哪些?

daqing · 2012年07月12日 · 最后由 shaoyang 回复于 2017年11月03日 · 13006 次阅读
本帖已被设为精华帖!

我相信很多人都同意,Ruby/Rails 是非常棒的技术,这么好的技术,却没有普及,大家认为障碍都有哪些?

是 Ruby 语言的入门门槛太高?那怎么降低学习门槛呢?或者说,怎么帮助初学者更好的入门 Ruby ?

是 Rails 部署太困难?国内的托管环境,支持 Rails 的太少?那么,要做 Rails 主机的话,技术难点在哪里?

还是有其他原因?

1 是 rails 部署比较麻烦 2 是相比 php 和 python 的 web 框架不太好上手 3 是现在 ruby 除了 ralis 就是 ralis 就又重复了上面的问题 相比 python ruby 的库太少了 而且 python 各个领域都活跃 所以大家都去学 python 了

技术方面,国内一般都要 lag 两三年。如此推算的话,2014-2015 年时,国内会有不少 startup 开始用 ruby。

门槛很低,但熟练运用很难,坡度较高。性能,win 平台,部署主机

能用好 ruby 的应该都是程序员(当然好程序员也可能不喜欢 ruby 的风格),不过国内很多培训和教育机构输出的是程序匠

没有大量的企业使用,那么学会了怎么产生价值?语言,框架只是工具,这个工具要能产生价值才会有很多人用。显然,目前不具备这个环境。我本人喜欢 ruby,是因为从团队成本考虑,一个 ruby 工程师就可以扛起来 web 的开发工作,不需要几个人做。

穷矬矮表示用不起特别能吃内存的 Rails...

对 Windows 支持不友好,已经足以挡走很多人了

#6 楼 @bhuztez rails 4 默认线程安全, 会好非常多.

虽然还有很多线程不安全的库.

#8 楼 @Saito 吃内存和线程安全有关系?

#9 楼 @bhuztez 内存不是问题,java 刚出来时,也有人说内存问题。

#9 楼 @bhuztez 现在多进程部署, 部署三个进程就 3x 内存.

如果都线程安全了, 内存就少了三倍.

本身 rails 占的内存其实还好.

#9 楼 @bhuztez 线程不安全就只能用多进程方式部署啊,没有了共享内存,部署的进程越多浪费的内存越大。 所以现在还有那么多人用 REE 就是因为 CoW。

现在真心觉得得学个主流点的语言了。 最近,刚写了个服务。 结果,由于我要换项目组。 那东西就要重写-。- 囧

#11 楼 @Saito fork 三个进程当然不是 3x 内存了,操作系统当然知道你三个 ruby 解释器是相同的,这部分显然无论多进程还是多线程,都是只占一份内存。

换成线程安全未必能省下多少内存。线程安全无非就是加锁或者搞 thread-local。而且,往往就是 thread-local 了,所以内存还是一样占的。(补充:因为很多东西是依赖当前状态的,真要改成线程安全,不用 thread-local,差不多就是得重写了,而且重写其实也没用,重写无非就是把 thread-local 变成 request-local,状态还是多份)。

这么多 Web 框架,为啥就 Rails 特别能吃内存,很多框架也都不是线程安全的...

#14 楼 @bhuztez 现状是这样的.

Fork 三份, 时间稍微跑的久一点就是 3x 内存. ( 参考 unicorn 就好了

三线程跑的久了, 就是只比一个多一点点. ( puma 是这样的.

#15 楼 @bhuztez 你说的是理想情况。但是目前 CRuby 的 GC 不是 copy on write friendly 的。目前只有 REE 是。

It is observed that a lot of memory in Ruby on Rails applications is taken by AST nodes (of both the Rails framework and the application source). People generally run multiple Rails application instances (application servers) to serve a Rails website. If the different Rails application instances can share the memory of the AST nodes with each other, much like how C/C++ programs/libraries share program code with each other, then it will result in significant reduction of memory usage.

The POSIX API allows one to implement this, by using the fork() system call. On modern Unix implementations (Linux, FreeBSD, MacOS X, whatever), a child process created by fork() shares most of its memory with its parent process. If one forks a 500 MB process, it will not result in 1 GB memory usage, but probably like 500.1 MB. When the child process (or the parent process) writes to a piece of memory, then that memory is copied, preventing the parent and child process from writing to each others' memory. This process is called "copy-on-write".

However, Ruby's garbage collector is not copy-on-write friendly. Its mark-and-sweep algorithm implementation stores the mark bit directly inside objects. A garbage collection cycle will thus result in all objects being written to (or in operating systems jargon: the memory pages of the objects are made dirty). The OS will copy all that memory, thus negating the effect of copy-on-write.

http://ruby-china.org/topics/755

在国内的话,还是环境没有起来 慢慢会好起来的

如果没有淘宝镜像的话,装个 rails 环境都得翻墙(不会翻墙,没有条件翻墙的还没入门就挡住了),知道淘宝镜像的也没多少人

我觉得是这么几个原因: 1、国内大量码农对前沿技术比较迟钝,同意@fredwu 说的,过两年应该会好 2、技术圈里缺乏推崇 ruby 的领军人物,目前比较有影响的也就 CSDN 肉饼一位,而且最近几年也谈的不多 3、缺乏有影响力的产品,如果不是因为豆瓣,国内恐怕也不会这么多人谈 python

咱们大家可以解决的是第 3 点,所以,努力开发 nb 的酷产品吧

国内公司选择技术,喜欢有大公司支持的,比如 java 后面有 Oracle,dot net 后面是 MS。

知足吧。。。根据我的体会,招 ruby 比招 python 容易多了。。。

#20 楼 @suupic 影响力,看来是一个关键因素。

第一代人,出国了 第二代人,都进了国内大公司关键部门 第三代人,Ruby China 这一波

中文资料太少,或者深入的书籍太少。ruby 或者 rails 的发展和变化太快。中文的资料更加跟不上。比如说你拿个 1 年前的 rails 3.0 的文档在 rails 3.2 上做时就会出现很多问题,初学者都不会解决。

对于那些 PHPer 来说,没有 STEP BY STEP 的东西他们是不会干的,而拿到一个到处出错的教材他们是会疯掉的,而 ruby 中文基本很少这种资料,或者基本过时。

#2 楼 @fredwu 这个预测比较赞成,往后 3 年应该会是一个井喷期。

最新的中文教程太少,书店的书太少,全是 php,很多新手根本就不知道有 Ruby.

Ruby2 解释器没有什么飞跃的话 过几年也火不起来了 ror 刚出的时候不也红极一时 现在其实用的人更少了 根本谈不上国内技术慢的问题 1.9 出来以后 用的人又开始慢慢多了

#30 楼 @hawkflying 你可以用顶楼右下角的「收藏」图标,不要回复 mark。

ruby 虽然可以做很多事情,但最主要的应用还是 web(rails),web 已经被瓜分的差不多了

#17 楼 @hooopo 其实啦,Python 的实现也是这么坑爹的。但 Rails 也太夸张了,想想以前折腾 redmine 的时候,发现一个进程刚起来啥都没干就吃掉了 80+M 的内存啊,直接就傻掉了...

#32 楼 @gaicitadie 也不是啦,至少所有我听说的一站式的框架都缺个给力的 ORM,所以变化还是会有的啦...

我认为是 门槛有点高, Rails 要求 初学者 擅长 Linux 和 英语, 这两点是,国内主流 大学生 和 程序员 都不具备的条件。 而且国内的主机部署环境也不成熟,也提高了门槛。

我认为是 自学能力

@Levan 如果说中文书太少是个瓶颈,那么你觉得哪些书是最有必要翻译的呢?我们可以列个清单,或许会产生这次讨论比较有价值的东西。

#37 楼 @xranthoar << Rails 官方文档 >> 不过,我知道坛子里面,有人正在翻译。

我个人认为,主要是 浮躁 二字,很多人因为 浮躁 的原因来学习 Rails 以求速成,快速离开也是因为 浮躁。入门门槛,文档,性能,统统抵不过这两个字。

#39 楼 @lgn21st 哈哈哈 浮躁 我想这是生理问题吧, 我们还是谈谈技术问题吧,👅

记得很久以前 @shiningray 发过一条饭否印象挺深的: 在传播新东西时,我们 80 后 90 后要有耐心。

国内 rails 大部分是小型创业公司采用,然后绝大部分都倒闭了,搞技术的散了,转行的转行,入职其他大公司技术路线也跟着换了,人没了。

如果 ruby 的排名能紧跟在 php 后面,那国内的 ruby 的时代可能就到了。还是需要 ruby 足够成熟足够有影响力,至少性能方面不能比 php 差太多吧,感觉 ruby vm 发展的太慢。

其实挺普及了,Ruby 做同样的事情,本来需要的人就少,这里 2000 会员,能做的事情至少抵 20 万码农。话说 20 万算普及了吧。

#44 楼 @kgen 算,哈哈。

#31 楼 @Rei 是不是以后打 mark 的可以自动加入收藏了……

#46 楼 @santochancf 不能做这个功能,那样会满屏无意义回复。

对 windows 不支持 就阻挡了太多人了

一个问题,要普及干什么?嫌 php 不够臭 = =

一个问题,要普及干什么?嫌 php 不够臭 = =

Bad:

  • windows 支持不好
  • 库太少
  • 太大,内存占用高,无法进入嵌入式 (我目前在尝试)
  • 设计上欠缺, linux 上用的单进程.(忘记了)
  • 太专注 web 设计了
  • 小日本制造的

Good:

  • ruby 语言好使, 好的设计可以省去很多代码
  • ruby 语言可以给你重构的理由 (or bad)
  • 社区不错,更新快
  • 社区里的牛人很多
  • web 框架流行

IMHO

@TingRyan 我感觉用 python 的也不多啊,尤其是国内还没有统一的社区论坛。

#4 楼 @fsword 我觉得至少愿意花时间对自己的作品精雕细琢的才能算得上上 “匠人” 吧。

#55 楼 @yuan 你说的也有道理,看来国内很多培训机构连程序匠也没法制造了

exerb 只支持 1.8, 郁闷。 编译嵌入式 arm 版本的 ruby,生成的 ruby 环境有 30MB,太大。

匿名 #58 · 2012年07月13日

个人感觉,ROR 门槛略高,但不是真正的高。主要表现有 3 点 1、没有太多成品的产品,满足某些特定需求的应用,比如 redmine,做项目管理。新人大部分都喜欢这样的东西。这也是 php 为什么比较受新人欢迎,写不出强壮的代码,能部署好一个应用,也可以敲开一些公司的门了吧。 2、gem,ROR 的快体现在具体功能会封装抽象成插件,要用这个功能,你要稍微去了解下具体的 gem 的使用。对新手来说,特别是还没入门或者刚入门,不太想深入学习就能快速弄出一个应用就比较困难。当然,听了很多人说,ROR 本来就不是为那些不学就想用的人用的。 3、思想变化比较大,从 rails2 到 rails3,各种提取、删除和改变。已经没刚学 rails2 的那种可以把握它的感觉了。

第 3 点是我个人看法,可能很多人都不认同,但是我个人感受比较深。。。

我问过我们学校的同学,他们觉得 ruby 不好找工作,不像 pHP,java

@fahchen 我觉得你说的理由才是最重要的理由,Ruby 的工作机会少,而且集中在上海和北京,一些刚毕业的孩子会担心找不到工作,光是这点就吓退不少想尝鲜的,如果在普通公司呆过几年,PHP 或者 JAVA 用熟了,工资待遇也不差,工作稳定,这时就更加不想转 Ruby 了,为什么要放弃安稳的工作去学一门连工作都不知道能不能找得着的语言?

最后能撑下来大概都是这样的人: 0.短期内没有就业压力。不是富二代,就是技术特别好,或者已经掌握了 Java 等保本技能,不愁找不到工作的,才能静下心来研究 Ruby。当然也不排除有人眼界特广,心特坚定,砸锅卖铁也要学 Ruby 的。 1.对.Net 或者 Java 没兴趣。免疫培训机构的 “企业级解决方案” 洗脑营销。 2.乐于折腾。买不起 Mac 也得会折腾个 Linux,不是看不起 Windows,试过在 Windows 上部署 Rails 开发环境的都懂的。熟悉命令行。当年跟大学的基友介绍 Ruby,对方回答 “这玩意还不成熟吧,还要用命令行,不能用”,我囧……(感谢 RubyInstaller 和 RailsInstaller 项目,现在在 Windows 上部署 Rails 开发环境简单很多了,虽然命令行还是少不了)3.知道 GFW,会翻墙。否则 gem install rails 那步就死翘翘了。 4.接受 Ruby 那种非 C 系,看起来有点古怪的语法。 接受不了的都倒去 PHP 了 5.没有去 Python 阵营。 Python 也是优秀的语言,Ruby 的强力竞争对手,而且还有豆瓣这样的榜样,加上有较多新创公司试水,Python 在小众中显得比较大众。

这么一条条下来,剩下做 Ruby 开发的就真没多少了。 最后,我在等着你们吐槽为什么我是从 0 开始数的。

#61 楼 @PrideChung 还有我们在海外的~ 其实是遇到一个用 Rails 的公司老板。。。他说给我工作,但是要学 Rails

#61 楼 @PrideChung +1 说的不错

其实一个不可忽视的原因是:

大量的程序员, 在之前的很长时间, 花费了很大的功夫, 经受了长期的洗礼 (虽然, 很多洗礼都是地狱一般的洗礼), 他们才拥有了现在的地位, Ruby 是个破坏者. 如果从 Ruby 开始, 他们的很多理论, 很多实践方法, 换句话说: 他们已经付出了太多努力, 不希望重新回到起点. 因此从里心里拒绝接受 Ruby.

#38 楼 @ery 有些人想翻译,但是都是半途而费,没有往下翻译,而且多人翻译的话,会有各种不同的理解。

#37 楼 @xranthoar 从我这个初学者的角度,缺乏那种一步一步实现某种案例的书籍,基础的语法了解以后就不知道该如何做了。毕竟这个时候最需要鼓捣出一点成果来激励自己一下。

看了 LS 的讨论 发现最重要的原因还是在于 大家把 ruby 弄的都太局限了

ruby 是门艺术 并不仅仅是在 rails 上 但是在国内和国外用的最多的还是 ror 看看 python 几乎什么地方都能看到用处 数据库 服务器脚本 自制软件

为什么 php java 能好找工作?就是因为应用范围广。如果 ruby 还是只抱着 rails 不放,后果很可怕。

看看网上卖书的情况也能了解到,ruby 完全可以用在服务器管理、程序开发等等方面,可是关于除 rails 以外的书几乎都没有市场。WHY?

ruby-china 算是大陆最大的 ruby 论坛了,但是 10 个帖子 ,5 个帖子是 rails 的,3 个帖子是闲话讨论,2 个帖子是招聘。这难道还不能反映出问题吗?

一门语言想要发展必须多样化,这就是为什么出了 jruby ironruby 等等,可是我们不珍惜,看看 ironruby 多少时间没更新了,ironpython 却依然更新着,这 2 个都是同一组人去管理的,为什么他们选择了 python 而暂时放弃了 ruby?

ruby python lua 完全可以同时称霸游戏脚本语言的,可是现在只有 python 和 lua 还在被人使用,ruby 只能默默的在 rpgmaker 上发臭(这句说的有点难听 请见谅 但是是事实,RPGmaker 虽然还在更新,但是框架是死框架,脚本修改后虽然也可以做除 RPG 以外的游戏,但是很别扭,就好像你用鸡蛋非要烧出豆腐的味道一样)

造成这一切的不是别人是我们自己。受众度不是看你的网页效果做的有多少好,而是你的实用度,如果在各方面都有使用的人了,官方就能向更多领域推广自己。

工作并不是阻碍喜欢 ruby 的东西。我可以工作不用 ruby,但是闲暇之余我可以用其他方面来填补对 ruby 的爱。

此贴已经置顶了

69楼 已删除
70楼 已删除

Ruby != Rails. 是我们把 Ruby 困在了 Rails 的结界内。同意#67 楼 @daddy2000 的观点。

初学者发发牢骚: 1.易学难用(主要是被 java 静态思维限制住了,学校的时候都宣传 Java 了。)2.说 ruby 很多都和 rails 相关,不知道是 ruby 库太少,还是 ruby 只能做 rails。我想学 ruby,天天却听到 rails,觉得有点畸形了,老停留在 rails 的荣耀之上。

简单来说因为 Rails 好找工作吧

因为大学里面没教 Ruby,就这么简单一个道理

匿名 #75 · 2012年07月17日

貌似现在比较火的就是自动化测试和 web 应用,对 ruby 的应用上,不知道其他还有哪些,求指教。。。

@daddy2000 的确,现在说到 Ruby 就是 Rails,本来通过 Rails 来吸人气是很不错的,但是搞得 Ruby 跟 PHP 一样只适合做 Web 开发实在不好。不过也很高兴有 Ruby Motion 这样的项目出现,希望 Ruby 能够得到全面的发展吧。

同意@PrideChung

ruby 目前最大的问题是跟 web 开发绑定得太紧 总不能想做点什么非 web 的事情都要自己造轮子或者写接口吧 非 web 的第三方库严重不成熟

另外就是 ruby 本身的性能 虽然说现在机器已经是硬件资源过剩的时代了 但别的语言十几 M 搞定 用 ruby 要几十 M 而且还慢 我知道肯定有人会说 1.9 的性能有提升了 但是有多少发行版默认升级到 1.9 了 从这一点就能看出在主流企业应用中 ruby 的用户非常少

个人认为有 3 个: 1.Ruby on Rails 的部署比较困难,特别是 Rails2 的版本以及在 Windows 平台; 2.Ruby 没有一个类似于其他语言的高级 IDE,调试的时候比较困难,Refactoring 的时候更加麻烦; 3.开发框架成熟的只有 Rails,只能应用与 B/S 架构。

硬件也很依赖。

环境问题非常麻烦。

老贴又被翻出来了?现在我的想法有点变化,ruby 的流行过于依赖 rails 应该算是事实。不过原因可能是多样的,比如系统维护我还是倾向于使用 bash+python,因为所有的 linux dist 都支持,而 ruby 就不好说了,由于主要使用 rvm,我不确定在没有 rvm 的情况下是否能够正常的执行我写的脚本,so......

#81 楼 @fsword python 的这种 (某个版本的) 广泛支持也是阻止它新版本推广的一个沉重负担了,长远来看对一门语言的发展也并不好

#82 楼 @fleuria 是的,我并不评价好坏,这件事应该说是有得有失

呵呵,回复过这篇帖子以后我也反思了一下,也许 ruby 的移植性没那么可怕,最近写了点脚本,没用到 1.9 的特性,所以还是很安全的

第一,设个目标。如三个月独立开发个博客系统。第二,要坚持下去。别人一说就动摇,无事可成。

还是 好不好找工作的问题 如果应届 不好找的话 很少有同学会去学习

我现在说一个,,搞不懂为啥出版社的很多 ruby 的中文版的书不卖了。。。各种难求!!

pridechung 回复

+1. 找工作这个角度 特别好。

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