学完了 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 的错误处理, 啊这个真的挺合胃口, 除了传递下层错误时封装麻烦了点, 在我用过的值传递错误的语言里是相当舒服的
还有编译, 真的太慢了, 不知何时会有优化