ZhangHanDong / tao-of-rust-codes

《Rust编程之道》随书源码
https://ruststudy.github.io/tao_of_rust_docs/tao_of_rust/
MIT License
1.18k stars 170 forks source link

尊敬的读者朋友们,您对《Rust编程之道》第二版有什么建议和意见?期待留言 #257

Closed ZhangHanDong closed 1 year ago

ZhangHanDong commented 4 years ago

尊敬的读者朋友们,

感谢这一年来大家对《Rust编程之道》的认可、支持,以及各种勘误反馈,你们也让我学到了很多东西,感谢有你们。

2020年马上要到了,《Rust编程之道》第二版计划也要提上日程了,为了让这本书可以更上一层楼,给大家更好的阅读体验,希望能收集一些反馈、建议或意见。 当然,在本书第一版出版的这一年内,我也收集了很多建议和意见,但希望可以在此issue下面能对这些建议和意见进行统一备注和交流。

真诚期待大家的反馈!

张汉东

--- 更新线

这一年过的,真是魔幻。

好在,第二版目录初步确定了。

image

注意:这不是最终目录。

第二版对内容进行了重新编排,也汲取了第一版读者的各种意见,希望可以在 2022 年面世。

大家可能对 「嵌入式篇」有点争议,我的目的是想覆盖「 no_std」部分,不过现在讨论为时尚早,后面会出来详细的目录,大家可以再讨论。

wangziling commented 4 years ago

到现在还没看完。作为一个纯前端er,相当吃力。 希望大佬再接再厉。写出更好的书。:)

lshoo commented 4 years ago

可以借鉴一下in action的做法,用一个项目部分章节串联起来,或者实战部分,示例几个项目

ZhangHanDong commented 4 years ago

读者群的一些建议汇总:

  1. 页码精简。
  2. 示例偏实战,提供最佳实践(来自于优秀开源项目)。
  3. 先介绍实际使用,再介绍设计理念和原理。(本书成书时定位就是在于介绍设计理念,因为考虑到已经有其他书介绍实际的使用了,否则书就太厚了。不过这点可以参考一下)
    1. 精华版和完整版? 完整版提供习题或讲解,这个只能考虑独立的开源电子版了。(这条可行性不高,精力有限)
ficapy commented 4 years ago

称为道,可以考虑偏向内部。这个东西为什么产生,产生过程中经历了哪些迭代,最终怎样解决了问题。Rust因为独有的所有权,生命周期设计引入了别的语言没有的一系列概念,这些可以深挖一下

本书不应该过多的编写基础内容,应该假设读者至少通读过官方编写的《Rust程序设计语言》 有一些不太相关的额外扩展可以考虑使用外链的方式存在 感觉这本书的写书方式可以借鉴 https://github.com/Vonng/ddia

ttkk1024 commented 4 years ago

期待此书继续加强理论知识的讲解,不建议在此书中讲解实例代码。但是可以给此书在github做一个实例,给理解理论知识配以代码解释

ZhangHanDong commented 4 years ago

@ficapy @ttkk1024 感谢反馈,两位的建议都将考虑。

zengql commented 4 years ago

建议每章结束后可以提供一些理论上的习题(主要涉及这一章的主要知识)以加深(再次记忆)对已读内容的理解

diluga commented 4 years ago

async/await 相关的原理剖析和实例讲解。

ZhangHanDong commented 4 years ago

整体来说,这部书想写的太多了,结果把rust最核心的borrow、trait、闭包等精华囫囵吞枣了。9-13章可以去掉另做一本高阶rust书。再如顺序上也建议调整下:第8章如果放在第3章后。

By 黄昶

xiaods commented 4 years ago

我觉得《Rust编程之道》肯定不适合作为Rust的第一本入门书。建议把入门的语法的内容去掉,专门讲一些中高级学习中普遍遇到的问题,这个才有的概念。让不能真像的大部分rust学习者啃这本书入门是很浪费时间的。学习坡度太陡,完全没有达到这本书应该达到的气质。

如何确实想让有经验的开发者学习Rust语言,应该写一本专门讲语法和浅一点的知识的书,但是这本书官方已经写了,感觉必要在写,翻译即可。

ZhangHanDong commented 4 years ago

@xiaods 入门的语法部分(第二章)其实不是再讲一遍语法,主要有俩目标:

  1. 帮助大家再梳理一遍语法(以表达式为重点)
  2. 承接后面的内容

所以,没有学过语法的同学,看这个可能会觉得困难或困惑。

不过第二版会考虑这个问题,感谢反馈。

xiaods commented 4 years ago

@ZhangHanDong 感谢,毕竟是原创,值得学习的一本书。

Bai-Jinlin commented 4 years ago

希望第二版错误能少点。 前几天买到了这本书2019年1月第1版的版本,现在看到了第五章,每每我感觉逻辑有问题我都得去Issues里搜是不是的确是书的问题,而且每看完一章还得在Issues里用label:第x章来把搜出来的所有issue看一遍来整理出来错误表。根据我整理的错误表第一章有4个错误,第二章20个错误,第三章13个错误,第四章7个错误,这让我的潜意识觉得假如一个知识点我没读懂那说不定不是我没理解,而是书写错了,十分影响阅读体验并且浪费时间。但是书本身还是非常不错的,希望第二版能快点出,让新的读者可以不被这些小错误困扰。

ZhangHanDong commented 4 years ago

@Bai-Jinlin 感谢反馈。因为第一版没有找到审校的人,书的内容又多,难免一些错误。第二版我会多找几个审校的朋友,进一步保证严谨和正确性。

xiaods commented 4 years ago

期待第二版。

songroom2016 commented 4 years ago

强烈建议增加异步async await这部分内容。异步是rust的精华之一,未来的生态可期。

ZhangHanDong commented 4 years ago

@songroom2016 这是必须的

pymongo commented 4 years ago

希望能加上std::lazy::OnceCell的介绍,以及std::lazy::SyncOnceCell是如何保证多线程安全的。

我看OnceCell文档上说lazy_static好像用的是spinlock去避免多线程的Data Race,那么OnceCell自己又是如何实现线程安全就值得去学习下

ZhangHanDong commented 4 years ago

@pymongo 这些属于新加的API 了,会加上的,感谢反馈

YunshuaiPeng commented 3 years ago

老师,很期待第二本,请问下大概几月份会出版?

ZhangHanDong commented 3 years ago

@qingfengbaili 大概得 明年了

pymongo commented 3 years ago

给第二版FFI部分Rust调用C++代码demo的建议

似乎由于cc/gcc第三方库跟10.15升级big sur造成的Xcode路径问题,导致cc可能找不到Xcode SDK的正确路径 第一版Rust调C++的代码在我macOS big sur系统上报错

我的个人建议是仿照官方building-a-native-library这个例子

https://doc.rust-lang.org/cargo/reference/build-script-examples.html#building-a-native-library

不用任何第三方库5-6行的build script解决

官方的例子是Rust引用C/C++的Static Linking Library,

我写了个Rust同时引入Static Linking Library(DLL)和Dynamic Linking Library(SLL)两个C/C++库的代码Demo,比官方的例子更详细,您可以参考下:

https://github.com/pymongo/learn_gcc/tree/main/rust_call_c_dll_sll

但是无论是Rust编译时导入DLL或SLL,都需要很多Linux特有的命令工具,例如ar打包SLL,例如ldd查看可执行文件的DLL

为了展示更准确不依赖第三方库的Rust调用C/C++库的Demo,第二版的Demo备注上

由于仅Linux自带ar命令,所以代码仅Linux平台下可以运行


还有一个FFI的Rust调用C/C++的示例是,可以演示下树莓派binding系统自带的wiringpi so动态库,我自己试了下难度不大,但是很实用,因为libc/cc之类的第三方库屏蔽掉了链接C语言库的过程,我当初读第一版的这部分内容时并不能完全理解Rust调用C语言库的过程,等我在Linux上写build.rs才能明白其中的过程

ZhangHanDong commented 3 years ago

@pymongo 感谢反馈,辛苦了

ZhangHanDong commented 3 years ago

@impys 初步大纲出来了,可以看看上面的更新

zw963 commented 3 years ago

我觉得主要把例子改成新的写法,例如,dyn impl并且修复例子和文档中的错误,删除过时的内容就可以了,例子要简单,尽量不要涉及当前阶段还未讲的内容。

咱们这本书很有料,但是个人认为组织上需要优化,否则,就我这个 senior 的 Ruby 工程师,读起来也是很多时候也是云里雾里,还得和另一本深入浅出对照着读才能搞懂。

chuyao commented 3 years ago

说个偏题的,tao-of-rust-codes,tao是什么?“道”吗?

ZhangHanDong commented 3 years ago

@zw963 第二版已经重新组织了。 @chuyao 对,「Tao」是指 「道」。

iphucc commented 2 years ago

读了一部分第一版,搜了一下,果然有准备新版了。首先非常感谢作者写了本有深度的讲解rust的书。希望新版可以保留‘深度’和‘广度’,然后优化一下内容编排,同时补充下新确定下来的特性和最佳实践,期待...

gatspy commented 2 years ago

什么时候出版呢

ZhangHanDong commented 2 years ago

什么时候出版呢

争取明年

kennydiff commented 2 years ago

支持,第二版一出就买,要签名版~~~ 哈哈哈

bachue commented 2 years ago

建议聊点更加深入的话题,比如

  1. WASM
  2. Linux 内核模块
  3. 用 FFI 接口对接各个编程语言,比如 C++/Go/各种脚本语言
ZhangHanDong commented 2 years ago

建议聊点更加深入的话题,比如

  1. WASM
  2. Linux 内核模块
  3. 用 FFI 接口对接各个编程语言,比如 C++/Go/各种脚本语言

感谢反馈。 第一版 wasm和ffi 内容也有,不过可以再深入一些。 Linux 内核模块是必须要加进去的。

zw963 commented 2 years ago

就等第二版出来,买回来读一下,不过感觉跳票好久了啊~

ZhangHanDong commented 2 years ago

@zw963 不算跳票。

好的内容需要花更多精力准备,第二版我基本是重写,内容组织和定位都会改变,不是简单的修订。而且 Rust 更新也非快,需要等待一些特性稳定更好。没必要为了出第二版而出第二版。

unlimitedcodeG commented 2 years ago

感谢翻译 还是希望能有多一些的实战项目可以用来练手 工程的项目最好 对增长rust项目经验也是一个帮助

ZhangHanDong commented 2 years ago

@unlimitedcodeG 翻译?

unlimitedcodeG commented 2 years ago

抱歉 还以为是张老师翻译的书23333333,书质量很高,@ZhangHanDong 希望后续能有多的实战项目 学以致用

wanghe-sudo commented 1 year ago

老师,2022年年底了,望眼欲穿。。。

ZhangHanDong commented 1 year ago

@wanghe-sudo 2023 年出

zw963 commented 1 year ago

@ZhangHanDong, 纸版什么时候发售?

remfath commented 6 months ago

@ZhangHanDong 老师,2024年了,第二版啥时候出来呀