如果 ruby 有'高质量'的类似 numpy、pandas 的工具库,这个帖子有可能就不会出现了
这里补充下关于 ruby 社区的看法,因为跑题,所以分开来写。
和 python 相比,ruby 社区是很缺本地化支持的。这种缺乏不只是汉化文档缺失,在推广倾向上 ruby 做得也不够接地气(或者说有点太 international)。给人推荐 macbook 是好心,但大部分人买不起;教人用 git 是好意,但这类工具对部分新手来说又过于复杂、分散精力;more importantly,虽然 py 和 rb 社区都有很多人喜欢让人 rtfm,但 python 传入早,汉化资料和教学视频还是有点(早期你甚至能在贴吧跟人正常讨论 python),ruby 就不同了,一是中文资料真的少,二是部分视频教程需要泛墙。
诚然,在 v2ex 这类社区里,持 'google 都用不了 (不会用) 还写个屁代码' 观点者大有人在,但实际上很多人可能真的不需要这么 standard 的流程。有时候觉得,如今互联网烂成现在这个样子,也不能全怪懒人。csdn 这样的平台能冥土追魂,如果没有平台给发东西的人蝇头小利,复制粘贴也未必有人乐意。而最后,垂危的成了博客园,不是 csdn;简书早早叛变,知乎专栏改版如市政修路。在这样的背景下,思否至今没死,堪称'奇迹'。这里就免不了想吐槽 segmentfault,一开始好好起个名,2~3 个汉字,或许都会比现在像个样子。至于 csdn,虽然自己老瞧不起 csdn,人除了'公务'好歹也做了点'实事',虽然在 AI 这块没什么直接贡献,不过间接方便了不少生环化材专业的跨考转码及跨学科打公仔,四舍五入当腾讯做公益来看待了(方便指 打理起来比微信公众号省事,搜起一些基础的奇葩问题来有时候比 google 管用(在没有 chatgpt 之前))。
然后对比 go 和 rust,这两个在国内起步相对晚,go 的情况没什么参考价值,有 Google 光环加成,有 docker,本身性能优势,和 py 一样门槛低,还有 CNCF 上一堆参考。rust 之于 go 的情况反而有点类似 ruby 之于 python,不过本地化这块 rust 比 ruby 做得好一些,ruby 的文档本地化给我感觉实在一言难尽,标准库没有可以接受,其他的 ruby koan 什么的也没有,ja ruby 给的非英语链接也没几个(不过底下有旧版本的文档打包)。所以如果说松本太佛系,那社区的大多数人在这方面也是旗鼓相当了。
回到社区建设,我支持进一步深化 ruby 本地化的工作。虽然这块可以理解为脏活,但就文档来说,机翻比以前方便了,起码会省事点。这时候就不需要纠结必要性了,确实有需要的人自学看不懂也可以自己手动机翻,但最开始的搜索也会成问题,不过这种本地化工作最好能跟官方文档对上,docs.python.org 的标准库直接切换中文,虽然完成度不到 100%,但也能方便不少人。总之像翻译这种内容生成的活,与其让贴满广告的 content farm 继续污染环境,不如先把剩余位置占了(比如实在不行可以发 csdn)。
PS:翻译不一定要翻译成简体中文(还可以是其他亚洲语言),现在国内仇日的人比以前多太多了,比较蛋疼。
以上,来自一个多年没碰 ruby 的云玩家
松本的因素感觉次要一点,主要还是工具本身的使用门槛、本地社区的定位以及整体的社区活跃度。
工具方面,时间回到 2013 年,那时候在 Windows 上跑 ruby 也不是不行,不过有一种常见情况,github 上翻到一个貌似不错的库,结果往下翻 readme 发现暂不支持 Windows。以及当时 Windows 上的 irb 启动比 py27 的 repl 还要慢一点点,这里可以参考为什么有的人选择了 lua 而不是 python。torch 最初也是 lua 写的,lua 跟 c 结合很容易,runtime 小,后面还有了 jit,所以讨论科学计算的时候没办法忽略性能问题。python 虽然性能也很拉,但官方实现跟 c 结合很紧密(个人感觉),numpy 的诞生应该可以说明这一点。至于科学计算本身,我记得有本 2012 年出版的中文书叫《python 科学计算》,这个比较能说明社区方面的问题。
正文的疑问,概括回答就是,回到 2012 年的时间点,哪个开源工具占领了 Windows 这个基本盘,就相当于抢占了 AI 的近未来。当然,加入老黄的显卡对 Linux 支持足够友好,Windows 可能也不那么重要,但还不够。除非说高校教学里能把 Windows 排除在外(连带 Windows 破解版 MATLAB 等等),才可以把这个因素挤掉。而除此之外另一个重要的因素就是,谁愿意先把脏活干完。
至于社区问题,整体上太跟潮流有时候不一定是好事,容易短视、或顾此失彼,我只能这么说。现在应该看到的另一个问题是,虽然 rust 起步相对晚,却已经在部分新兴领域占了一席之地。而 python 的问题,一方面类似 Windows,另一方面生态丰富也是门槛低的表现,这不是坏事。而 ruby 的门槛相对还是高了点,不过国内可能没什么代表性,这里可以放一边不谈。