Ruby 感觉 Ruby 很强!(不讲速度),问一下,大家不用 Ruby 来写其它程序(ROR 除外)的原因是什么?

yxmmrwx · 2025年01月16日 · 最后由 sevk 回复于 2025年02月06日 · 1363 次阅读

走走停停的学习和用 Ruby 有些年头,感觉 Ruby 很强!(不讲速度),大家都聊一下,说说大家不用 Ruby 来写其它程序(ROR 除外)的原因是什么?在具备什么条件的情况下才愿意把 Ruby 当成常用(或者首选)开发语言?

。怕速度慢? 。文档,指南不够? 。标准库不够? 。从 RubyGems 上安装的 gem 怕有 Bug,原作者跟进不及时?怕自己没能力修改有 Bug 的第三方 gem? 。没有趁手的框架?(类似 Qt 什么的) 。。。

我的能力甚至不会觉得 ruby 慢

我用 Ruby 来写几乎所有程序,除了页面 😆

我觉得其他语言不好用。Ruby 的内部一致性最好很符合直觉。

Ruby 很慢么?我甚至不觉得。

  • 如果你是计算密集,就用 多进程、Ractor
  • 如果你是 I/O 密集,就用 Async、Thread

90% 的问题都可以解决。如果你真的遇到了性能问题,可以 C 拓展、FFI 到 C 还可以 直接 加入 Crystal 解决你觉得计算慢的地方。

整体上来说,开发速度很快。

Mark24 回复

Ruby 确实好,碰上 Ruby,有点不想用其它的样子

我最近了解了一些 Python,感觉对其他语言的语法的很不习惯。

G.K 回复

😆 当你发现 缩进是一个很差的设计,随便一个空格就能让程序崩溃,就会发现 ruby 是个宝藏。

Mark24 回复

TrueFalse,以及 len(array) 是个函数,就不太习惯了。😅

G.K 回复

python 里 True False 都是 bool class

ruby true 是 TrueClass,false 是 FalseClass , nil 是 NilClass

你是不是搞错了?

G.K 回复

Ruby 我觉得最大的优点就是 跟直觉一致。最小惊讶设计

VirtumartOz 回复

我是说 Python 的大小写我不太习惯,它的 len() 是个函数,那肯定还会有别的这种形式的函数,不像 Ruby 的一切都是对象方法那样纯粹。

G.K 回复

这让我想起 coders at work 里 knuth 对编程的评价

编程语言简直跟宗教一样 one want to convert another

python 对我来说目前最不爽的是编辑器 notepad++ 主动死板缩进 while 循环里一个 for in 循环 再后面的代码保持在原来的缩进位 导致一个 bug 没及时发现 浪费时间

OOP 机制太过复杂,运行环境要求过高

haohaodehao 回复

这点我的感觉正好相反,ruby 的 oop 更直观,更强大,至少跟 C++ 比起来,ruby 的 oop 更顺手

yxmmrwx 回复

你们两个说的都对,没矛盾。

Windows 上感觉比较慢,YJIT 又不支持 Windows; Windows 打包分发麻烦; C extension 有些不能直接编译需要自己 patch。

Ruby 没有类型系统,用起来不太安全放心的感觉。鸭子类型感觉用处没那么大。导致经常要用 .to_s 或者跳转到函数定义那里去看类型。有时候常常幻想,如果 Crystal 能和 Ruby 一样流行就好了,估计会撼动 Java 地位。

很多人其实是喜欢 Ruby 的语法而非其灵活性。Ruby 的灵活性不好掌握,写出来太灵活的代码自己和别人都难以读懂。这种灵活性让 Ruby 适合元编程,但元编程是一个小众需求。

你这样想,一个东西兴起和一个东西覆灭一定是有原因的。然后你再这个覆灭的圈子里,问这个东西有多好,那他们当然说好。 当然,你再别的圈子里问,别的圈子里说的话,你也不会认同的。

mfb777 回复

😅 代码好坏和写代码的人关系更大,和语言关系不大

yxmmrwx 回复

对于 OOP 来说,是遇到 JS,喜新厌旧了

The boss doesn't allow using Ruby.

mfb777 回复

Ruby 不用写类型,更接近自然语言,自己写还是很爽的,至于太灵活或者不灵活,还是看你怎么用吧,一个表达力更强的语言当然更能写出不知所云的东西,令人舒适的东西,或者令人拍案叫绝的东西。

AI 这边已经出现了中英文混杂的推理过程,如果有一种语言,适合推理的话,除了数学符号语言(这同样没有显式类型),恐怕只有 ruby 了。

因为懒,学习 Python 开发 AI 程序比自己在 ruby 这边造轮子容易。。

写 gui 程序不方便. 写 android 程序不方便。

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