总结的原文大概 2w 字,在这里分享一下:
1
duke807 2022-02-27 00:56:01 +08:00 5
人生苦短,我還是用 C 和 Python 吧
感覺用 unsafe rust 還不如用 C 感覺 95% 以上的人是無法精通 C 的,因爲要對底層硬件很熟悉,譬如中斷上下文、cache 、dma 、虛擬內存等等 爲了防止大多數不適合編程的人搞事情,所以才引入 rust 這樣諸多限制的語言,目的是降低編程門檻 否則用 C 把內存搞出問題,一般人根本就沒有能力排查問題 所以,做爲 C 程序員,如果你也跟風追捧 rust ,其實是爲了方便小白而給自己找麻煩 |
2
secondwtq 2022-02-27 01:23:34 +08:00
只要我够聪明我就可以手写机器码
|
3
leimao 2022-02-27 01:28:29 +08:00 via iPhone
我精通数十种语言的 hello world
|
4
ihciah 2022-02-27 01:33:33 +08:00 via iPhone 10
@duke807 再厉害的大佬也会犯错,并且很多是不注意导致的低级错误。所以用一定的机制来收敛可能导致内存错误的代码段是有用的,无论是对小白还是老手。
c 写出问题之后查错成本高,但对于生产环境来说错误本身导致的代价更大。所以能形式化证明代码没问题很重要,这样会降低很大的潜在成本。 |
5
thedrwu 2022-02-27 02:14:15 +08:00 via Android
@duke807 #1
再大牛写 C 也有疏忽的时候,不如编译器保障一些正确性。 况且和 C 比自带内存管理、自带 string 库和 test 库、自带 lsp 和 linter ,和 C++比又没有历史包袱,真香 |
6
thedrwu 2022-02-27 02:15:53 +08:00 via Android 1
每个 rust 程序员都会写链表的文章,就像每个 haskell 程序员都会写一篇 monad 的文章
|
7
duke807 2022-02-27 02:19:43 +08:00
@ihciah
沒錯,所以我說的是用 *unsafe* rust 還不如用 C 正如操作系統用宏內核還是微內核之爭 微內核派說要隔離錯誤,每個模塊都要隔離起來,反而增加了開銷和複雜度 而宏內核的 linux 系統,很多內核任務也是以內核線程來執行,某個線程出錯系統不一定會死掉 我的態度是,不要追求極端,linux 內核就是比較理想的折中選擇 生產環境,對於大多數人,即便用 c 也是在用戶空間,用戶空間本來就有保護,不同進程隔離開,問題可以縮小排查 爲了降低成本,用 python 、go 這樣更高階的語言開發更快,代價更小 綜上,我覺得 rust 就是一種極端的存在,不是我的菜 |
8
duke807 2022-02-27 02:23:36 +08:00
|
10
hbdh5 2022-02-27 03:56:57 +08:00 2
文章写的还好,只是写了太多太初级的东西。都用 unsafe 了一般都会假设读者有一定的知识背景,写太多有点水文章的嫌疑。关于 subtyping 的部分用了太多像是"收缩,扩张,至少"之类的感觉不太合适的词汇,整个概念没有说清楚。从左右值的概念入手可能会比较好一些
|
11
yzbythesea 2022-02-27 07:35:43 +08:00 1
虽说是奇技淫巧,但是我还挺喜欢的。博文就应该有深度,比很多直接抄下 user manual ,贴个 example 的好太多了。
|
12
yannxia 2022-02-27 08:52:44 +08:00
@duke807 很多人是 high level 的程序员···搞硬件不是他们所擅长和期望的,Rust 也很方便做系统编程(和硬件不相关的),
|
13
jasonkayzk OP @hbdh5 #10 的确是加了很多基础性的东西,因为考虑到还是有些人对 rust 不太了解(比如我自己也是懵懵懂懂吧);更多的是对自己学过的一些基础知识的理解和回顾!谢谢大佬给的建议啊!
|
14
jasonkayzk OP @duke807 #1 不是每一个人都是 C 语言领域的专家,对于有些编程能力不强的人来说,rust 编译器提供的能力是非常有必要的!
|
15
jasonkayzk OP @yzbythesea #11 谢谢夸奖!
|
16
yangbin9317 2022-02-27 10:18:39 +08:00 via iPhone
谢谢楼主,看完之后收获很大
|
17
jasonkayzk OP @yangbin9317 #16 多谢夸奖,这也是我自己在学习 rust 时的一些总结,希望能对大家有帮助;❤️
|
18
yangbin9317 2022-02-27 12:17:30 +08:00
@jasonkayzk 你讲 Rust 实现链表,他非要说 C 有多么自由,是真能杠啊
|
20
hbdh5 2022-02-27 14:36:29 +08:00
@duke807 但凡你深入接触过 rust 社区你就会知道用 unsafe rust 的群体大多都是 library 的开发者,水平就算不说很高,对你说的那些所谓的底层有的是人比你懂得多。unsafe rust 的目的从来不是和 c 比,甚至也不是和 c++比,而是为上层的,高阶的 rust 提供一个可靠的,安全的抽象。
|
21
duke807 2022-02-27 16:02:52 +08:00 via Android 1
|
22
luckyrayyy 2022-02-27 16:13:05 +08:00 1
rust 不太懂,但是楼主的博客好棒!应该还很年轻,技术就挺厉害了
|
23
sagaxu 2022-02-27 16:17:03 +08:00 via Android
C Is Not a Low-level Language
Your computer is not a fast PDP-11. |
24
jasonkayzk OP @luckyrayyy #22 谢谢夸奖,博客都是一些学习的笔记总结而已,没什么创新…
|
25
chuanqirenwu 2022-02-27 20:04:55 +08:00
感谢分享,等看完 the rust pl 好好研究一下这个例子。
|
26
jasonkayzk OP @chuanqirenwu #25 hhh 、不客气
|
27
Yain 2022-02-28 00:37:47 +08:00
楼主也太强了吧,如何才做到博客更新频率那么高
|
28
jasonkayzk OP @Yain #27 最近一个多月也就写了三篇…,这个频率不高吧;
|
29
kxuanobj 2022-03-03 10:31:27 +08:00
@duke807 这个双向链表是为 safe Rust 提供一个链表实现,使 safe Rust 可以在 safe 的上下文上使用链表。
这种情况下,显然不能用 C 实现链表,然后通过 ffi 给 safe Rust 来用。 没有 unsafe Rust ,哪来的 safe Rust ? |
30
fpure 2022-03-07 16:42:47 +08:00
不错,收藏起来慢慢看
|
31
jasonkayzk OP @fpure #30 感谢支持❤️
|
32
ecloud 2022-06-13 22:51:14 +08:00
@duke807 微内核最开始的出发点是跨硬件。那个时代可不像现在,光 RISC 就有 6-7 种,CISC 有 2 种常见的,另外还有一大堆 S/390,AS400 和 PDP 在活跃。微内核的想法就是靠一个 core 通吃,然后稍微修改一点外围就能杀全场。哪像现在就一个 X86 和 ARM 还算活跃,mips 和 ppc 基本就是半死,其余的几乎都躺尸了
|