tao-of-rust-codes icon indicating copy to clipboard operation
tao-of-rust-codes copied to clipboard

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

Open ZhangHanDong opened this issue 5 years ago • 38 comments

尊敬的读者朋友们,

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

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

真诚期待大家的反馈!

张汉东

--- 更新线

这一年过的,真是魔幻。

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

image

注意:这不是最终目录。

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

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

ZhangHanDong avatar Dec 02 '19 13:12 ZhangHanDong

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

wangziling avatar Dec 02 '19 13:12 wangziling

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

lshoo avatar Dec 02 '19 13:12 lshoo

读者群的一些建议汇总:

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

ZhangHanDong avatar Dec 02 '19 13:12 ZhangHanDong

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

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

ficapy avatar Dec 02 '19 14:12 ficapy

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

ttkk1024 avatar Dec 03 '19 01:12 ttkk1024

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

ZhangHanDong avatar Dec 03 '19 02:12 ZhangHanDong

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

zengql avatar Dec 03 '19 02:12 zengql

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

diluga avatar Dec 03 '19 07:12 diluga

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

By 黄昶

ZhangHanDong avatar Dec 17 '19 13:12 ZhangHanDong

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

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

xiaods avatar Feb 10 '20 18:02 xiaods

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

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

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

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

ZhangHanDong avatar Feb 11 '20 04:02 ZhangHanDong

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

xiaods avatar Feb 11 '20 14:02 xiaods

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

Bai-Jinlin avatar Jul 09 '20 05:07 Bai-Jinlin

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

ZhangHanDong avatar Jul 09 '20 06:07 ZhangHanDong

期待第二版。

xiaods avatar Jul 12 '20 12:07 xiaods

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

songroom2016 avatar Sep 02 '20 00:09 songroom2016

@songroom2016 这是必须的

ZhangHanDong avatar Sep 02 '20 01:09 ZhangHanDong

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

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

pymongo avatar Sep 15 '20 10:09 pymongo

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

ZhangHanDong avatar Sep 15 '20 14:09 ZhangHanDong

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

YunshuaiPeng avatar Sep 29 '20 15:09 YunshuaiPeng

@qingfengbaili 大概得 明年了

ZhangHanDong avatar Oct 07 '20 07:10 ZhangHanDong

给第二版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才能明白其中的过程

pymongo avatar Dec 11 '20 09:12 pymongo

@pymongo 感谢反馈,辛苦了

ZhangHanDong avatar Dec 11 '20 10:12 ZhangHanDong

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

ZhangHanDong avatar Dec 11 '20 10:12 ZhangHanDong

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

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

zw963 avatar Dec 11 '20 10:12 zw963

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

chuyao avatar Dec 11 '20 13:12 chuyao

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

ZhangHanDong avatar Dec 12 '20 08:12 ZhangHanDong

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

iphucc avatar Nov 30 '21 13:11 iphucc

什么时候出版呢

gatspy avatar Dec 08 '21 03:12 gatspy

什么时候出版呢

争取明年

ZhangHanDong avatar Dec 08 '21 03:12 ZhangHanDong