Ruby 代码的理解其实基本上没大问题,写也是可以正常写的,架构应该也可以,拿来给现有系统二改是够用的。主要是写船新的系统性价比太低了。
能,但是没必要了。同样的代码,我用 Ruby 写也是两三天,我用 C++ 写也是两三天,后者性能可以做到前者的十倍甚至百倍,写 C++ 的人更多更好找。谁还会费劲巴拉呢。
Ruby 的语言特性就是对人类写代码友好,但现在不怎么需要人类写代码了。
别说语言了,就连语言特性都要淘汰了。比如之前我优化一个 C 代码,里面用 sscanf 扫描文件,一个文件要扫描几十万几百万次。后来我让 AI 花了几分钟把 sscanf 那几行代码用 strncmp 和 strtol strtof 重写了一下,性能直接提升 20-40 倍(实测性能)。CPU 密集型代码里连 sscanf 这样的便民函数都要淘汰了,更别说 Ruby 这样的脚本类语言了。
实际业务确实没办法,不过这也是用 AI 的一个好处,可以先 architect,让他自己和自己博弈一圈,找出最合适的架构,然后再往里填。实际看起来通常要比我自己手写设计架构质量更好一些。我现在已经脱离自己动手的阶段了,要写东西也是把脑子里构思好的要求丢给 AI 让他帮我填内容,不符合要求就再鞭打 AI 让他重写,写到我满意为止。
这种能拆出来写的模块,当然是写上测试用例然后就不管了咯。
如果这个对象走起来像鸭子,叫起来像鸭子,他是不是 AI 造出来的又有什么关系呢。
一来 go 和 rust 我不会,二来现代化的 C++ 并没有太多内存问题需要用到 go 和 rust 来改进。平时直接用对象的值,然后函数调用可以直接用对象引用,基本不需要碰指针。实际上项目里只有很少数的地方为了减少向前引用而使用了共享指针,其他地方都是引用。剩下的就靠 CLion 帮我做进一步优化了。
如果我懂 go 或者 rust 的话,确实会考虑用这两个语言来写。
我比较吝啬,还用着 2.5 flash,毕竟便宜。舍得花钱的话 claude 和 2.5 pro 都挺好。
看了啊,问题是 Ruby 写什么应用都没有优势了,就算写 AI 应用又有什么优势呢。
倒是 AI 出现以前,用 Ruby 写东西那是多快好省,对一些别的语言和环境可以降维打击。现在 AI 出来了,你把写 Ruby 的时间拿去做规划然后写点 prompt,一个香喷喷的 C++ 程序就出炉了。比如我上面说的重写的那个程序,其实是编译 DSL 到二进制的一个工具,本来 PHP 或者 Ruby 去处理 DSL 可以很方便地做字符串处理啊正则表达式啊之类。现在我让 AI 帮我从头到尾生成一套基于 std::string 手动解析的工具链也就是 1 美元的事。
Ruby的string#strip是不是很方便?
C++ 里要怎么 strip 呢?你得
std::string trimmedText = text;
trimmedText.erase(trimmedText.begin(), std::ranges::find_if(trimmedText, [](const unsigned char ch) { return !std::isspace(ch); }));
trimmedText.erase(std::find_if(trimmedText.rbegin(), trimmedText.rend(), [](const unsigned char ch) { return !std::isspace(ch); }).base(), trimmedText.end());
看着是不是很蛋疼?但现在有 AI 了,AI 帮我写,我只要告诉 AI 帮我写一个 strip 就行了。这段 C++ 我一个字都看不懂,但我只需要封装进方法里写完测试我就不用管了
你都有 LLM 了,为什么还纠结 Ruby 擅不擅长。
我前两天刚让 LLM 把一个 PHP 项目用 C++ 重写了一遍,性能提升百倍,只花了几块钱。
在这个 AI 编程工具普及的时代,编写代码已经不再是程序员的专属技能。
指非程序员可以从零开始写出这些需求分析
1. 以 Vite 作为构建工具,搭建一个 TypeScript + React 的项目框架。
2. 集成 Three.js 库,完成基本渲染器、场景、相机的配置。
系统能否稳定运行、团队能否快速交接
最终,我回归了最原始的方式——直接写 SQL。
一会儿要稳定运行快速交接,一会儿要放弃 ORM 回去直接写 SQL 吗……
2000 completion 50 claude,重度开发的时候根本不够用的。
贪便宜的时候我用 Gemini 2.0 flash,走 openrouter 可以用到 free model。 付费的话 claude 挺好。但贵也挺贵。
do...end 是一个 block。提早结束 block 就是用 next。 https://stackoverflow.com/a/71075077/29384264
是的,AWS 就是这么黑,如果你一个月只付 10 个小时的钱,他竟然只让你用 10 个小时。
要省钱为什么要用 AWS?如果你月支出预算少于 500 美刀那我觉得你根本就不应该去考虑 AWS/GCP/Azure。
Unobtrusive JavaScript 就是 HTML 里不内嵌 JavaScript。同理 CSS 也可以不内嵌,而是写在 CSS 文件里。
And if you’d shown people Ruby in 1975 and described it as a dialect of Lisp with syntax, no one would have argued with you.
《Hackers and Painters: Big Ideas from the Computer Age》 Paul Graham
如果大家只是夸夸你,那可能你能力并不强……
操作系统本来就会自动缓存文件。你在读取的时候,文件的内容会自动存在内存里,不需要扩展也不需要任何额外的措施。
你可以直接用 Ruby 代码顺序读取一次整个文件然后关掉。操作系统一般会在后台把文件留在内存里。
ermmm 我总不能说我是搜索搜出来的吧……
rvm 也是可以的,也算是一种软件包管理软件。最怕的是裸复制文件的那种。
我想说的是,就算要编译,也应该用包管理支持的方式进行编译。比如我维护 Debian 上的 nginx 的时候,是用 dpkg 打包成 deb,虽然过程也是要编译,但最终是由包管理来解决版本追踪问题。
我不想显得自己粗暴无礼,但是这帖子整个说得都是什么东西啊。
CentOS 6 根本就不支持 PHP 7,换句话说如果你要用 Redhat 官方的源,就去装 CentOS 8,如果要用 CentOS 6,就得用第三方源。
那么第三方源很麻烦吗?不。Remi 源早就有全套 PHP 7.3.12 了(之前版本的也都有),要安装只需要按照教程加上源然后 yum 就完成了。
同理,Nginx 官方源也早就有最新的稳定版 1.14.2 了。
全部装一遍,我觉得,半小时足够了吧?
Linux 上永远也不要 make install 编译安装(除非是用完就扔的)。总是使用 Linux 自带的包管理工具来安装软件。你从源代码编译,就只是得到了一个没有经过测试、没有技术支持、没有任何安全团队保护的软件。如果是为了节省时间而牺牲一些性能,那也就算了。可你这也没节省时间啊……
二维码本身有一定的鲁棒性,用高性能的扫描仪扫描然后调节二值化阈值再拿手机多扫扫吧。
把 Ruby 替换成 Lisp 会不会让人更容易理解问题在哪?
内存不足说明你内存不足。和后面的内存空间剩余充足是矛盾的。
我觉得我们 Rails 1.2 的才是凉透了……
语言的表达能力。
换句话说,同样的代码我已经不想用其他语言来写/实现了。
浮点数不精确。精确值严禁用浮点。这样的基础知识还是要有的,和 round 还是 next 没关系。
在浮点数里,200.48000000000002 与 200.48 是应该被程序员视作相等的值。
即判断两者相等的操作 is_equal = (200.48000000000002 - 200.48).abs < 1e-6
返回的是 true
。
是什么让你不去用大名鼎鼎的acme.sh的呢……