前几天和深圳一家用 ruby 的公司电话聊了将近一个小时,快结束时这家公司的负责人问我:你觉得 ruby 慢吗?我:不慢,rails 目前还是最好的 web 开发框架,绝大部分的性能问题都是数据库那边造成的。他又继续问:那为什么感觉国内 ruby 的开发者越来越少,想用 ruby 的公司也越来越少?我有点答不上来,只好说不是 ruby 语言本身的问题,至少我工作这么多年,还没有遇到哪怕一家公司是因为 ruby 的慢导致公司关门的。他赞同我的观点,瞬间有了种惺惺相惜的感觉,我估计他也是混 ruby-china 的,可惜不知道他在 ruby-china 的 id. 这几天我在思考他提的问题,我觉得 ruby 主要的问题是新人太少了,也许很多想进入 IT 领域的人根本不知道有 ruby? 也许我们的社区对新人还是不够友好?
这个是含金量最高的推广了,虽然受众主要是业内人事,但是给了一个广阔明亮的场地,让大家相互了解下都在研究什么好玩的东西,一起搞搞事情,国内用 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 的意思,还有许多其它的变种,咱不和它们玩:
绝对不是,Ruby 的文档绝对不算烂。
你去看看 Python 的一些文档,更新不及时、引用外链失效等等,那文档根本没法看。
Ruby 的文档其实算是中等偏上的。
有将 Ruby 用到 非 web 开发方面的点个头。我一直认为 Ruby 就是比 Python 好用一点,为什么 Python 比 Ruby 更繁荣,就是因为有将 Python 用于各个方面的开发者。
这没什么好争的吧。。
Python 的 numpy、jupyter 等,也 Rails 一样,都是大名鼎鼎的领域之王。不过 Python 和 Ruby 在语言层面就是两种完全不同的风格了。
我不觉得 Ruby 比 Python 好用,大项目还是 Python 好用。
Ruby 的自由度是以牺牲部分项目的工程性为前提的,项目越复杂这个缺点就越明显。Ruby 好用的地方是可以使用 dsl 把项目里隐含的抽象更语义化地表达出来,这些东西用其他语言可能会更加啰嗦一点,节省掉这些啰嗦的部分会让人觉得很爽。不过当你去维护一个你不怎么熟悉的系统,或者把项目交给一个抽象水平不怎么高的程序员时,这个优点就不那么美好了,甚至可以说是一个缺点,构建时节约的复杂度迟早会在维护的时候还回来。
我想想我开始不用 ruby 改而用 go 的原因吧,从开发到部署
1.ruby 的轮子确实很棒,但是这两年随着版本的更新,轮子的可用性在下降,并且新轮子越来越少了
2.很多时候效率确实是问题,自己所在的领域 web 化的越来越少了
3.生态。在后 web 时期 ruby 现在的生态太差了
4.部署。这也是最致命的一点,部署起来太复杂了,docker 确实解决了一些问题,可是有些场景是不能用 docker 的。
5.处理逻辑在微服务化。ruby 在这方面没什么优势。
@kayakjiang 哈哈,看到你在我招聘贴的回复来到这里,你这有问必答这才霸气哈!
非常想认识聊一下,可以加我微信 huhongcn,我用 rails 用了 7 年了,即使不找工作也可以交个朋友
你们公司大气,一下子招 10 个人,壮我们 rails 社区士气,一扫就业阴霾,要多多支持你们公司
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供
最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的
Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量
避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构
大项目 ruby 和 python 半斤八两,主要看框架,rails 这种 all in 的其实还好,python 最流行的 web 框架因该是 flask 了,微框架,在大项目里的表现肯定比 rails 糟糕,我们公司现在用的就是 flask,人员一流动,代码一团糟。 比如 validate,rails 看一下文档,大家都一清二楚该用哪个就哪个,flask 呢?validator 都是自己写的,想用的时候先在项目里找一下,然后再仔细看怎么实现的,才敢用上去。真的很痛苦。
大项目还是用静态语言的好!
越来越少的的原因只有一个,而且跟技术一点关系都没有。是一个经济学问题。答案就是没有大公司在使用,缺乏资源,在任何决策及决定有商业角度的前提上,能否长久使用,容易请人,平价的请人,等 才是最重要... ( 而且根据一些小道消息,Google, Amazon 这些 Python 公司有一些员工一直非常讨厌 Ruby. 早几年可以看到很多看 Support Ruby 根本不是重点。) 什么会买 Intel? 因为其他大公司在使用。为什么会用 Exchange, 因为来自 Microsoft. 老土的一句说话,You don't get fired for buying IBM.
Top 10 语言里面,有哪一种没有一间或数间庞大公司在使用作为资源后盾?又或者是来自 GAFA ( Google, Amazon, Facebook, Apple ) ? C, C++, Java, PHP, Swift, Objective-C, Python, C#, Javascript, GO, 随便选一个你也能够数出 数千亿美元的公司在倚赖及使用。唯一只有 Ruby...
不过已经越来越多公司站出来捍卫 Ruby, Github 也是最近一年才开始 UpStream PR 给 Rails. Stripe 已经有团队为 Ruby 进行改善,而且未来还会投资资源在 Ruby VM. 见两间公司完全比不上上面的庞然巨物。但 Ruby 最利害的地方是她的社区。Ruby 能够凝聚力量,RubyConf 以及 RailsConf 就是一个例子。
从这个角度来看我觉得 Rubyist 应该觉得骄傲。Ruby 就是因为你们的爱,才能继续在市场上站一席位。
Edit: 顺带提及一个 Ruby 3.0 的 PPT [1] , Write a Ruby interpreter in Ruby for Ruby 3
[1] http://www.atdot.net/~ko1/activities/2019_rubykaigi2019.pdf
ruby 我觉得推广难的两个原因:
Ruby 新人的一点看法:
接触 Ruby 大概一年不到,主要也是用来做 web,跟着 Rails 官网的教程已经自己做了个博客还做了个小型电商站。感觉上手的难度其实还好,之前也在 node 技术栈自 high 过很久,但是开发的体验并没有 Rails 爽。
Ruby 对我而言最具吸引力的地方在于编码上给了我很大自由发挥的空间,而不是统一标准只用一种方式做事的教条主义(但也许这也是为什么很多大型公司不愿意用 Ruby 的原因之一)。我觉得选择 Ruby 的人多少都会有些喜欢在编码中自由表达的个性吧。
既然如此,我想,越少的教条主义越容易使新人融入。楼主这种正能量满满的发声,对于一个像我这样的新人来说感觉特别的温馨、美好,扫除了那种对陌生领域好奇却又羞于接触的忐忑。
至于 Ruby 的行情,我确实不抱着太积极的态度,但这并不影响我愉快的使用 Ruby,还是那句话,选择 Ruby 是因为自由又不是因为行情。
PS: 顺便安利一下自己写的 UI 框架 https://oatw.github.io/luda, 特别为 Ruby 社区写了个 gem https://rubygems.org/gems/luda.
同意 @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 ) .
用 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 下包管理知识之类的。
看似有解决方案,实际体验非常差,主要就是安装 msys2,对于国外的开发者而言还是可以,国内安装首先面临一个问题就是慢,需要自己把包单独下载下来安装,安装完了有一定机率无法检测到 msys2,具体原因不明,重新卸载安装就可以了,然后还有运行效率极低,跑一下 rails s 就要等好久,各种 gem 在 windows 下经常会遇到些诡异的问题,总之就是表面很美好,核心点还是用户量不够,好多问题没修复,又进一步限制了用户量,这样的一个负反馈是致命的。
像 go,js 这样语言有大公司支撑 windows 的开发,好奇 python 和 php 这样的社区语言是如何解决 windows 下的问题的,难道这两种语言主要开发者是用的 windows?
既然跑题变成了讨论 Ruby 和 Python 孰优孰劣,我索性建议大家多花时间体会一下现在的 Java 和 Python 特性。毕竟我自己是一个活生生的例子,前一段时间找工作,准备了 Java 和 Python,结果最后只找到了 Go 的工作,Ruby 的机会太少了。
Java:
Python:
昨天翻了一下相关话题:阻碍 Ruby 普及的因素有哪些?
然后结合了一下,又有一点新体会
前几年个人站流行的时候,dedecms,discuz 这些 php 开源 web 软件大行其道
1,APM 这些套件极其方便,随便安安,一个网站就可以跑起来 2,插件容易找,好安装,下载了放到文件夹里就可以了 3,模板引擎好用
这样个人站长只需要专注内容就可以了,一般来说,有想法的人多,这些开源软件可以满足想法到快速实践。
虽然 ruby-china 的 homeland 这些都开源,但是满足不了这一部分人,1,不易安装,2,插件不能无鏠引进,3,界面模板不好改,没有一些自定义的。最后弄出来的站都长得差不多?还要雇个懂 ruby 的来改界面?
有没有办法从这方面出发,做一些改动?
现在 Windows10 已经可以装 Ubuntu 的 server 等终端了,结合这个,可以不用虚拟机,这样应该也能带来合适的开发体验,不过我没这样试过,没用 Windows10
我想知道 sping boot 怎么用 sqlite,schema 在哪,migration 怎么用,console 怎么用。。
有一点不是很同意啊,Amazon 内部 Ruby 用得相当多,相当一部分的内部网站都是用 Rails 写的。内部用来生成 deployment pipeline 的工具,code review 的工具以及 build tool 也是用 Ruby 写的。
spring boot 对 sqlite 支持不好,要 copy past 一堆代码,很麻烦。RoR 直接引入。
schema 和 migration 可以没有(我不知道有没有,有你可以说),RoR 默认有。
console 似乎是有,这个我不确定,但用起来似乎是很麻烦。当然,如果你有更好的办法,我也愿意学习。
我只是委婉的告诉你,这几点,我认为 spring boot 做的不怎么样。当然,如果你觉得做的好,也请说出你的理由。因为看你之前的回复,你对 Spring Boot 和 RoR 都很了解(因为你说他们一样,所以我认为,你很了解两者),希望可以向你学习。
难道 Java 流行只是因为功能太少?
这种句式一点意义都没有,几十年前还流行打鸡血呢,现在还流行注射中草药呢。
你说 SB 和 RoR 一样,就举出例子来。你知道 java 为什么流行,就说出来。
流行本身就没有什么意义,然后抛出了一个疑问句,没有任何依据,就更没意义。
兄弟你怒了,明显,你怒了。不过,你的愤怒转化方式,我还是挺佩服的。努力把社区搞起来,其实大家都想,只是想的程度不一样。加油!不要让 RoR 成为一个人的 RoR。