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

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

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

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

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

还是有其他原因?

共收到 86 条回复

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,太大。

个人感觉,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,就这么简单一个道理

貌似现在比较火的就是自动化测试和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. 找工作这个角度 特别好。

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