Rust 真香,Python 再见

欢迎入坑,Rust 重写一切,哈哈!:joy:

Rust 的参数太难传了 也许我还不会搞那个所谓的 所有权 Go 在这方面就不用考虑这个了

我不会 Python 只会 Ruby 和 Go。

不过我准备用 Rust 重写我之前 Ruby 写一半的 upstream-notifier。

1赞

好比汇编里面名(不)副其实的 MOV(说是移动,实则赋值。执行指令后原来的值还在那里一动不动,当时学得时候吐槽半天为什么不叫 COPY):rofl:

个人觉得还好(而且感觉这种传递形式更形象?)。按照 IBM 的那篇文章,只要注意赋值对象、传值对象的所有权和作用范围就好。

实在不行全部写 &mut var 也行啊

2赞

这种小众学院派语言如果没有一个流行的成功案例,永远只能在边缘徘徊,沦为玩具。现在的纯语言发展停滞不前,
无非是一些语法糖的变化,没有质的突破,真正影响性能的是架构和算法,代码级别的影响微乎其微,
连 c++ 这种号称高性能图灵完备的语言,也被各大公司抛弃,成本高,招人难,没个 5,6年 的经验,没人敢说熟练,
5年 时间要花多少成本去培养一个人,C 语言成为无可替代的系统语言,就是因为简洁。C 语言的 DBUS 消息机制解决一切架构问题,
直接导致 c++ 语言级别的大型架构流行不起来

C++ 太复杂了。

我觉得 rust 跟你说的学院派语言还是有区别的,rust 有明确的目标以及非常活跃的社区,如果你用 Rust 写过项目,肯定不会再想碰 C 了。而且目前 Rust 也得到各大公司的支持,微软正在用 Rust 或其变种重写 windows 底层组件,亚马逊、google、阿里、头条也都有应用。

2赞

哈哈,居然苏姐也会 go,用 go 写不行吗???:joy:

这几个语言各不一样。。

c 相当于高级汇编,每行语句都简明地对应翻译后的汇编结果。用于直接控制硬件。编写繁琐。大杀器,一般不用。

rust 相当于高级 c 语言,专注编写高性能代码。不适合控制硬件——当然也有人这么干,但其实是误用。小杀器,一般不用。

java 只用于编写简单的业务代码,但是不适合复制的业务需求。容易协作第一、可靠第二位,性能第三。写起来麻烦。因为表达能力太弱,不适合非常复杂的业务。最适合互联网工业使用。

python 相当于写伪代码,尽量接近自然语言,可以优雅表达各种业务。性能不重要。用于各种快速原型。不适合后期使用。小型 (两三人参与) 项目和各种随写随弃脚本的最佳选择。

go 跟 java 类似,但性能第一重要。不容易协作,也不如 java 可靠。也适合工业使用。

c++ 试图做得比上面所有的语言好。然而语法非常复杂。屠龙之技,用了就是错。但是在桌面编程领域,再考虑性能限制,在某些极端少见情况下是唯一可用的语言。

JavaScript 是 web 浏览器专用语言。虽然也能用于后端,但基本是玩票性质。

在某些领域,由于惯性,需要使用特定语言。

比如 unity 开发语言用 c#

区块链有很多 JS 矿池

有些网游公司用 go 和 lua 写服务器之类的。

不代表这些语言适合这些领域。每种语言都有大量相似的轮子。

go 有一点不好,不能动态加载插件。好比我一个 URL,通过 regexp pattern 发现它是 github.com 就 load github.so 去处理…要是 suse.org.cn 就尝试 load suse.so。没有再 fallback 到一般处理或者干脆 warning 退出。

Ruby 这是很简单的一个 Meta programming 的问题。Go 就实现不了,但是 Ruby 的 concurrency 做的又不好。想看看 Rust 有没有这类的方式。

因为我做 upstream notifier,好比跑在一台树莓派上给所有人提供通知服务,主服务肯定不能没事老停机加个插件什么的,肯定是根据 URL 去尝试加载同名插件,然后单独开发插件就行了。

rust 有两种方式

一种是 c dylib, 可用但功能 受限于 c 的 abi
库: libloading, dynamic_reload

据说还有一种是编译器插件(unstable)

@marguerite

对,小众学院派的语言难以流行,所以 Haskell 再见,Rust 真香啊。

Rust 的动态加载就是 C 那个,因为 Rust 没有 stable ABI 所以只能用 C ABI。所以加载插件要搞 ffi 有些麻烦、有限制,在边界上也会失去 Rust 的安全性。不过好歹是可行的,而且这个样子你还可以用别的语言(比如 C、C++)去写插件。

其实啊,Rust + Python 才是最香的:资源受限、需要性能、对正确性要求高的部分用 Rust 写,变化多端的部分拿 Python 糊一下,多方便。反正 Rust 和其它语言的互操作性很好。

搞热更新吗

不过你说的挺有道理:wink:。我把 Rust 本体搞转了之后来好好研究下跨语言集成。

顺带发现了一个 CPython 的 Rust 重写实现

说得好,虽然我用的是 Elixir
Rust 的优点我挺喜欢的,就是现在好用的库并不多,得看过几年的发展

讨论语言在工业界的运用就是另一回事了吧,看各公司的轮子积累情况的

Rust 支持率是真的高,Gnome 社区这边很多 APP 的 maintainer 都在考虑要不要用 Rust 重写,不过语气略调侃,哈哈

前两天看新闻苹果也在招 Rust 来重写底层了。