深夜读Rust有感
深夜还是看Rust比较好,思路清晰,并且看着不会心累也不会抑郁
宏一般被视为编译器扩展的其中一种,也就是编译器扩展可能有好几种
但我们今天所说的Rust卫生宏,指的是受到标准库macro rules管制的一类宏,称为macro 1.0
卫生宏在编译期工作,应用领域是检查、计算等,还可以通过自定义宏实现一些DSL
(这里的自定义宏,指的也是在macro rules管束下的自定义宏,macro 2.0作为实验室版本的宏我没有了解,这里不深入)
可以猜到的是,一定会有很多框架制作出一些(第三方语法糖)一样的东西,比如说,既然你有vec!,那么hashset!和hashmap!肯定会整一波嘛…然后一定会出这样一个问题,就是我们无法单纯从形式上判断出某条语法糖的确切语义,于是又回到C++式的无尽扯皮中去…
为什么我爱死了所有权转移,因为它就是定死了一种表达,你他妈一个堆上的东西,我怎么知道你多大?你要是大得没边,我把你吭哧吭哧复制一遍不知道费多大劲!(你可以说我都是短短的字面值参与构造的,但我他妈不是跟你一个人做生意,我这一套是要给全世界的人用的,我不能保证他们在和他们的coworkers讨论的时候会不会在这个地方踩坑!)
(你自己话中带着歧义,像什么{人家就是讨厌你嘛}这种话你对着npy可以尽情地说,对着别人你还能这么搞吗?)
所以呀,这个语义一定要确切,不能学C++一样搞一堆构造函数,然后表面上风平浪静的一个trivial赋值,谁知道你这个类型是实现了移动语义没有,你那时候再把lib扔给我看然后我们再瞎BB吵半天?
简单点,我们真的受够各种因为兼容性也好,因为各种各样的框架、killer app而拼命新建DSL的影响也好,我真的不希望我和我的孩子们,将来要怯生生地翻译着你们所谓专业的哑迷,然后遭到排挤与耻笑(连5个初始化方法都写不出来的菜鸡),我受够这一切了
希望你们自己一定要有所取舍,不要因为别人说(这功能没有你tm跟被阉割有什么区别),反正我tm没听说过因为写了rust导致自己硬不起来的,如果你想充当第一个受害者的先例,我们也不胜荣幸
打哈欠的感觉真舒畅,尤其是在脑力活动过后连打几个,眼泪鼻涕成股流下,太舒服了