Ruby Ruby 生态对 Windows 不友好的根本原因

gaicitadie · 2021年01月02日 · 最后由 adamshen 回复于 2021年01月04日 · 1736 次阅读

慢,实在是太慢了,导致很多 gem 不得不调用 C/C++ 的库来提高速度,而 C 语言虽然跨平台,但不同平台的编译器是不一样的,很多只有 linux 版没有 windows 版,在很多 ruby 的 gem 中,ruby 只是一层皮,预期说是 ruby 的库不如说是 C 语言的库,需要大量的调用 C 语言的库,自然就很难跨平台了。

java、php 甚至 python,他们的跨平台性都比 ruby 好,因为他们本身足够快,第三方库用他们本来的语言写就足够满足需求了。而这些语言的解析器和虚拟机本身是跨平台的,语法没有差异,自然就很好移植到 windows 了。

ruby3 的 jit 虽然比不上 java 的 jit,但这是一个好的苗头,预示着 ruby 后面会越来越 i 快,不用超过 php,只要超过 python 快的时候,ruby 的 gem 用原生 ruby 写的就会越来越多,而 ruby 解释器本身是跨平台的,到时候 ruby 会变得像其他语言一样跨平台轻而易举。

屁,JIT 不支持目前暂时不支持 windows 平台吧。。。

最大的问题是带 c 扩展的二进制 gem 假定 posix 编译套件,而且没人有动力搞 MSBuild(Python 和 PHP 是微软亲自搞的,所以前阵子微软宣布不再出力支持 PHP 8 还是个新闻),现在 Ruby for Win 和 git for windows 一样是建立在 mingw 上的,但 git 不需要再安装扩展了,Ruby 只有少量 gem 带了预编译的 C 扩展,为了能安装更多的 带 C 扩展的 Gem,你需要安装体积超过 1G 的 Posix 的编译套件,这对一般用户来说就不能忍受了,对于国内用户,mingw 的软件源被墙了很难获取

一个冷知识是,大半在日本的 MRI 的开发者(包括 ko1)是用 Windows 开发 Ruby 的,但 Ruby for win 搞得不好,也可以说是讽刺

当然了,现在有 WSL 2,在 Win 上几乎和在 Linux 上体验一致了,没必要再折腾 mingw 那套方案

jasl 回复

WSL2 还是虚拟机那一套,跟 vagrant 没多大区别,用共享文件夹 IO 卡的天昏地暗。WSL1 速度不错,很轻量,只是运行 rails 比 mingw 还难搞。

支持 windows 对生态的发展很重要很重要,linux 的中文输入法 20 年了还是搞的一塌糊涂,mac 也不符合大部分人的操作习惯。

不是 windows 对软件开发者不友好么🤔

Ian 回复

对,楼上比尔盖茨已经在着手解决了。

试过 WSL2 和 Sublime Text,我选择放弃。

别说假定 posix 了,windows 上提供了的 posix 操作也和 posix 不完全兼容。select 以及全套 WaitFor...() 函数的 API 都只能针对 socket 使用,具名和匿名管道都会直接堵塞。就算上了 IOCP 也只能解决具名管道堵塞的问题,还必须把本身的 Reactor 代码写成 Preactor,要大改一大堆逻辑。

虽然开发者上道后,大部分都会将开发环境切到 Mac 或 Linux,但的确 Win 上的使用门槛决定了吸纳新人的效率。

也许有初学者兴致冲冲想学习下 Ruby,结果折腾半天,这个 Gem 装不了,那个 Gem 用不了,他马上就没兴趣再玩下去了,也许就换别的语言了。这种种子用户对社区的长远发展很重要,但就因为门槛导致就这么流失掉了。

社区很多老人一说到这种问题,就让换 Linux,这本质是一种逃避和不作为的心态,新人如果 Linux 玩的很溜,他就不是新人了。

不过现在好像都无所谓的态度了,好东西自己玩得 High 就好,新人进不来就进不来吧,一切随缘了。

ruchee 回复

我用了 6 年 macbook,最近又买了个 windows 游戏本,回到 windows 的怀抱。实在忍受不了天天敲着兰花指操纵触摸板,受够了各种组合键,home、end、pageup、pagedown 直接按单个键真香。开发十几年了,我还是离不开复制粘贴代码,才不信那些“高手从来不用复制粘贴”的传言,而复制粘贴,选中文本的时候,鼠标比触摸板好用十几个档次。

使用 Windows 心智负担真的很低,一点都不累的感觉。难怪几十年来 pc 一直是 windows 的天下。mac 的 dock 栏让人眼前一亮,但是论实用,windows 的任务栏是迄今为止世界上最合理最实用的设计。

当然用 mac 的这 6 年我也收获了很多,mac 和 linux 确实比 windows 更有沉浸感,就是使用的收整个人都沉浸到操作系统中去了,这种沉浸感是把双刃剑,让我打开 mac 或 linux 的时候不由自主的就陷入到技术的海洋,用 mac 的那几年开始逐渐习惯喜欢上了命令行操作。在技术上也有了不一样的感悟。

上面我说到用 windows 的心智负担很低,最直接的表现就是用 windows 划水的时候,划一天都不累。用 mac 或 linux,哪怕就是划水,时间长了也很累。用 mac 或 linux 的时候,精力是高度集中的,这样有利于深入研究技术,但对人的消耗也很厉害,特别是人到中年身体各项机能都退化的时候,windows 是更优的选择。

继续谈谈“沉浸感”,上班集中精力写代码的时候很讨厌同事来打断是不是?那就是因为你写代码整个人都沉浸到代码里面去了。用 mac 和 linux 的时候这种沉浸感尤为明显。而用 windows,这种沉浸感不明显,整个人的注意力大部分还是在现实世界的,其实,这是 windows 的优点,而不是缺点。

为啥你用 Windows 就是用鼠标复制粘贴,用 Mac 就用触摸板了......

社区很多老人一说到这种问题,就让换 Linux,这本质是一种逃避和不作为的心态,新人如果 Linux 玩的很溜,他就不是新人了。

这是换个思路解决问题,要不然就是在 windows 上浪费时间折腾。

赶紧去给你儿子说道说道啊,让他优化一下,不然他都快忘记你是他爹了

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