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

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

慢,实在是太慢了,导致很多 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 上浪费时间折腾。

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

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