iovxw

学完了 Rust

算入门

实在受够了 Clojure 的内存占用, Go 又太丑, 决定该再找个语言用了

在用了一圈小众语言之后, 又被残酷的现实打击了, 没社区就得什么都自己来

自己造语言这个想法也很快放弃了, 至少现在还不行

而折中方案, 就是 Rust


先逐个吐槽一下中间接触的语言吧

首先是 Racket:

噢, 有着足够大的 (非工程向) 社区和足够优雅的设计 (毕竟 Scheme), 而且 IDE 还挺好玩的

嗯等等……这内存占用好像和 Clojure 没什么区别?

再见


再是 Chez Scheme:

名气相当大, 有各种传说加成

然后刚好赶上这货开源, 就顺便啃完了文档

虽然是 R6RS, 不过自带的 chezscheme 库把该加的都加上了

然而问题来了, 到底要不要在文件头加上 #!chezscheme 呢?

在移植了一个 json 库和写了不知道多少 FFI 后

我已经不想说什么了, 造轮子好累


Carp:

静态类型? 无 GC?

听起来相当不错, 不过到最后我就根本没用它

为什么呢? README 里已经写的很清楚了

一大堆东西都没完成, 而且自从我开始关注就没什么更新, 到目前为止已经两个月没动弹了

希望终有一日能达到可用状态吧


之后又回头瞅了瞅 Nim, 说好的 1.0 始终没有来

Crystal, 没什么吸引力

Elixir, 噢噢终于有 try catch 啦? 不过我想写客户端啊

Dart, 这货竟然还活着? 之前好像还回光返照了?

总之目光就回到了 Rust 上 (咦我为什么要说 "回"?)


先花了三天啃完了 Rust Book, 单纯看书真是相当无聊, 不过至少得过一遍才靠谱

中间还发现自己竟然是 中文版 的贡献者? 而且还是 #2?

啊不过好像就改了个错别字的样子……

然后就是写项目练手了, 我个人喜欢先造个轮子或者其他什么简单的东西 (Hello World 可不算)

毕竟对于自己熟悉的东西换个语言换个思维来写还是相当有意思的, 踩到的坑也不会是项目本身的问题

不过需要注意的就是不要按照以前语言的思维来写, 完整看一遍教程也是为了这个, 把一种语言当作另一种语言来写这事有多糗也不用我说了(某人, 说的就是你)……

而这次的项目, 是 这个, 一个煎蛋首页无聊图的爬虫

功能就是抓取首页推荐的无聊图和其热门评论, 并推送到 Telegram 频道中

Telegram 的话可以直接加入 @jandan_pic 频道查看

写的时候也没遇到什么大问题, 就是第一天被 Rust 的编译器折腾的半死半活的

生命期这个真是麻烦, 不过第二天熟悉了就没问题了, 希望以后的项目不要遇到什么坑吧……


吐槽时间:

首先是用的那个 telegram-bot 库, 真的是玩具级别, 要啥啥没有, 最后为了支持频道字符串 ID 还曲线救国了一下

要不是对 Rust 不熟, 就像 Clojure 一样自己造一个了 (已加入 To-Do List)

然后这次项目里没有用上 mioco, 比较可惜, 因为的确没什么必要用, 不然还是挺想试试的

再是 Rust 的错误处理, 啊这个真的挺合胃口, 除了传递下层错误时封装麻烦了点, 在我用过的值传递错误的语言里是相当舒服的

还有编译, 真的太慢了, 不知何时会有优化