Rust 它凭啥这么难?学习路线这么陡峭。。。。
第一天用的时候各种报错,到第二天突然感觉豁然开朗,有种语言就该这么设计的感觉。昨天写 JavaScript 时顺手写了个 const x = if {} 一直报错,看了半天才发现问题
对我个人来说最大的缺点是还需要写分号
第一天用的时候各种报错,到第二天突然感觉豁然开朗,有种语言就该这么设计的感觉。昨天写 JavaScript 时顺手写了个 const x = if {} 一直报错,看了半天才发现问题
对我个人来说最大的缺点是还需要写分号
既想要没有性能损失,还想要高级的抽象能力,,那肯定要损失点儿什么,,总不能只有好处、没有代价吧,,天下哪有这么好的事儿
PS:个人想法,要是 Rust 能加上 C# 的表达式树那就完美了
我试过不管效率不管资源消耗,一切对象都复制复制,这样写 Rust 非常爽,不难学。但如果想尽量提高效率节省资源,就难写了。
然而,想尽可能提高效率节省资源,哪种语言不难呢?可见难的不是语言,是现实问题。
> 能做到对 C++语言的特性基本分类,然后根据分类正确使用它们我对 C++特性的四大分类为了兼容 C 语言,不得不继承下来的特性,比如#include,强制类型转换,直接内存操作,基础类型和函数系统,宏为了零开销实现 OOP 而设计的特性,比如 class 继承和派生,虚函数,函数重载为了开发效率而设计的特性,比如 template 以及一些列 stl,算符重载,auto 为了解决实际问题不得不向现实妥协而设计的特性,比如 explicit,mutable,xxxxx_cast,register,volatile,inline,asm,template 特化,friend 第一种特性在真正需要和 C 语言打交道是要小心使用,第二种特性才是主要使用的,第三种特性只在遇到开发效率问题时使用,第四种特性要尽量避免使用,尽量不要制造需要这些特性才能解决的问题
作者:姚冬
链接: https://www.zhihu.com/question/444555079/answer/1754123101
看看王垠怎么说
反正我觉得王垠这篇完全就只是看了下语法然后写出来的,return 那个简化我一开始也很不习惯,但没这个 lambda 表达式就没法简洁了
Rust 难,因为你计算机基础不够,你对操作系统内存变量这些东西理解不足。
可读性当然很重要,但是 wangyin 那些东西对 rust 的可读性完全没有意义,如果写过 rust 的人就知道反而会显著降低可读性,因为 rust 里匿名类型太多了。
老实说我不觉得这是未来语言发展方向
smol::block_on(Compat::new(async move {
//三种都兼容
}));
Rust 确实不是用来解决”互联网工程”相关的工业级问题的, 相比能快速开撸大工程 (CRUD, 笑) 的 PHP .Net Java, 缺少”工业级”轮子. 相比 Go Python 缺乏亲民性. 在简单用用的情况下相比 C/C++ 又太过复杂.
但是如果深度使用过 C/C++, 总有一个内存管理的坑等着你, 这时候再用 Rust, 会发现它简直是”世界之光”. 只要能编译,根本不怕跑飞.
前段时间的同类讨论 /t/757796
我隐约记得以前 v2 官方支持几个图床链接的自动加载了, 后来好像是把支持砍了???
这语言我是不喜欢,但是它的设计思路很有意义,把内存管理,变量生命期等痛点从运行时提前到编译时,但是带来的限制就是写起来束手束脚,并且额外的信息量得由程序员给出,这可太痛苦了。
我比较倾向于 dependent type,让语言和编译器本身支持更高级的类型识别,从而真正解放程序员。
编程语言朝着接近自然语言和超多辅助语法糖发展才是正道,但是偏扁现在的风气又有点反古,什么追求运行效率人人喊的朗朗上口……现在的计算机硬件算力早就过剩了好么,程序慢点又怎么了?换来的是易用啊。。。。
当然我相信绝大多数程序员的思维跟手动挡车爱好者一样的,自己亲手解决一个已经有现成解决方案的问题,会非常有快感的……
另外,Go 有 GC 也能编译成二进制。C#好像也可以或者有计划,这个我不太确定。
打错,得->非
https://github.com/datenlord/datenlord/pull/193
逃
这个世界是有竞争的,因此才有人愿意干脏活。有的人为啥凌晨四五点起来卖早餐,他不想睡觉吗,假如全世界一起等八九点的早餐,那大家都可以舒服。可惜有竞争啊。
而且也不环保。
可以去 benchmarksgame 看看 Rust 的压测表现,性能和 C/C++相当,到这种程度又要规避很多 C/C++常见的开发痛点,于是就设计出了一些复杂的开发模式,以至于让 Rust 的学习曲线变得陡峭。
可能习惯了就好了,特别是现在还带着很多其他语言的思维定式,比如 Rust 里的 Ownership 和 C 里的指针操作乍一看长得差不多,但实际上是完全不同的理念。
当然看代码看不懂也不一定是自己的问题,代码是有可读性好坏之分的。
作为一个大学英语四级都没过的人,原版 Book 已经看了一半了,打算看完后再看 Rust by Example,以及去 GitHub 上找找 coreutils_rs 之类的简单项目看看。
至于里大多数吐槽不写分号返回值的这点我倒是觉得还好,这一点明显是脱胎于函数式编程语言:以函数最后一个表达式作为函数的返回值,不过 Rust 还保留了 return 关键字。还有 async 生态问题,如果是 IO 敏感方面的需求我不会选择 Rust 的,Go 不香吗,Rust 就应该写底层、性能敏感型的程序。
✓没有头文件,直接就是 module 。
✓一个工具解决依赖,构建,测试,干翻 cmake
✓默认 const auto,以及把一大坨所谓 c++ best practice 直接做进语言 ,你不需要特别注意就会默认写成那样
✓trait 把 sfinae (的一部分)和 concept 以及多继承接口等 dynamic/static dispatch 手段统统干掉
✓把函数式编程以不那么恶心啰嗦的方式引入进来
✓宏比 c/c++ 的更安全和易用