年轻时候写C++,觉得能直接摸内存才是真男人,指针乱飞也没在怕的。后来年纪上来了,半夜被一个use-after-free搞醒的次数多了,才慢慢服气——有些仗不该在运行时打,应该在编译期就打完。
Rust最让我服气的是ownership。它不跟你商量,编译期就逼你把内存归属和生命周期讲清楚。一开始跟borrow checker吵得凶,觉得自己明明没错它偏不让过。吵久了发现,它拦下来的那些,确实都是迟早要炸的雷。把一类bug挡在运行之前,这事本身就值回票价。
语言其实是一副眼镜。写过Lisp的人看问题会本能地往下拆成递归和组合,换种语言像换副镜片。Rust这副镜片逼你直视并发和内存的真相,戴习惯以后,回头看别的语言反而觉得雾蒙蒙的。
其实
选语言说白了也是选协作方式。类型系统就是团队之间最老实的接口文档,比口头约定靠谱多了。