2018-01-10
我一直在兴奋地关注一些#Rust2018博客帖子。这有点有趣我们如何在过去的成功基础上再接再厉,达到新的高度。在离家更近的地方,文档团队开始尝试制定自己的年度目标,这场讨论结合了一些社区博客的帖子引起了我的注意:
有几个人已经意识到“你如何使用语言”之间有一点差距初学者教程和“分钟秘传”/“累积设计规划”先进的讨论。每个人都喊出缺少中间的医生,但是……我真的不知道那是怎么回事间隙。>_>
所以我做了一件自然而然的事我在推特上问/漫无边际地问.
我最初的想法是这样的文档不会关于特别是生锈,但更多关于其他一些主题,只是增加了使用Rust库和代码的装饰样品。换句话说,“中间”文档根本不会被框为“文档”,而是深挖博客帖子这主要是关于其他东西,而不是具体的铁锈。作为某人谁还没有真正接触过计算机的任何特定领域,也没有尝试写一个其中,我自己感到相当可怕。
推特帖子得到了一些很好的回应。以下是对具体想法的一些回应那些被认为是“中级”文档的人,或者那些通常缺乏的东西比TRPL本身更先进:
- 一种被认为是“习惯用法”的感觉。一旦你掌握了旋钮的功能语言,你如何学习什么是“合适的”,或者人们发现了什么结构使未来的维护更容易?现在,clippy部分解决了这个问题,但缺少运行浏览整个过梁列表,在不知道的情况下很难看到这些观点首先是关于clippy,(2)把它放在自己的板条箱里“弄错”,这样clippy就可以纠正你。此外,短绒仍然是一些小细节。它不会帮助你掌握在您的项目中构造数据的最佳方法,或其他主要由解决的较大问题经验,或根据…
- 了解经典设计模式如何映射(或不映射)到Rust。我会更加关注这个更进一步,但初学者级文档的一个问题(它不打算在其own)是如何构建更大的程序。虽然一些基本图案有一些民间图案如果你从标准库和其他库中的实现方式推断出知识,有一个明确编纂的地方可以帮助更多的人写作好的软件,在Rust和更远的地方。
- 与此相关,它有助于用从Rust的一系列限制和特性。如何维护此数据的正确所有权?怎么我来管理这些借款?如何确保此库不会不必要地到处复制数据?怎么我可以正确使用做出此声明的库吗?
- 不适合初学者教程的语言功能,但不需要太多背景知识知识是(比如)更高等级的寿命界限。FFI甚至宏等功能都很有用,但它们在作为用户第一次介绍的同一文档中没有合适的位置生锈。
- 深入挖掘大型图书馆,讨论如何将某些东西完全集成到更大的图书馆中应用程序。在以下情况下,板条箱文档中的微小示例通常太小而无法使用你不是在自己制作一个小程序。如果板条箱在其存储库中有较大的示例,这可能会有帮助,但如果它们缺乏上下文,它们也可能变得过于繁琐而无法阅读,或者只是更多小例子的集合。
从那里开始,我想出了一些具体的建议,似乎可以解决这些问题:
- 一种关于Rust习语的“短语手册”(可以从编译器lints和clippy中获得),还有一本更大的关于设计模式的“指南”。(我喜欢这里的“旅游指南”比喻,帮助人们认识到这是在帮助那些不熟悉景观。)
- 管理并发性的指南。有人提到了Rust做的一些小事(特别是,发送/同步以及它如何与所有权相匹配),但没有“我拥有所有这些数据并且想要并行工作,我应该用什么?”或“我想同时管理这些请求,如何我能应付吗?”,因此,关于这些和其他并发性的一组具体建议有人特别要求提出问题。
- 主要/流行库的调查,以及如何在“大型应用程序”环境中使用它们。坦白地说,这是作为生锈食谱,所以突出这一点主要是一个扩大和推广的问题。
- 用Rust编写的大型应用程序的一系列案例研究,或生产用户重新叙述他们遇到的问题以及如何解决这些问题。有一本书叫这个开源应用程序的体系结构看看主要的开源应用程序通过架构的角度,注意在他们的发展。我在想象这样的事情,但具体来说是着眼于Rust是否/如何帮助(甚至伤害,或至少指导)发展。
在看了这些建议和想法之后,我注意到了它们之间的区别提案和作为Rust的现有官方和非官方文献文档。我有一种初学者和高级文档的感觉,都专注于小细节。对于初学者文档,他们关注的“小细节”是基本语法、,特定的语言特征,或某些事物在特定情况下如何相互作用。使用高级文档,您仍然可以获得“小细节”,但现在它们是关于需要大量上下文,或某个特性的含义,或某些库的实现细节或功能等。
关键区别在于上下文。初学者文档只需要编程意识主题,一些使用另一种语言的经验(如果你专注于介绍首先是编程人员),但没有具体介绍Rust。先进的另一方面,文档建立在对语言其余部分的广泛知识的基础上,或者某个系统的实现,或某个领域的背景知识,等等。
另一方面,“中级”文档似乎更侧重于“大画面”。在其他单词,初学者文档向您展示一组工具,高级文档向您显示其逻辑基础,但是中间文档会告诉你它们是如何协同工作的,如何用它们构建东西。因此早些时候,所有的焦点都集中在“大型项目”上。
(然后我做了一个剑的比喻来强调这一区别。)
如果没有这种语料库,我们会觉得Rust是一种用于玩具程序或已经从不同领域了解程序设计的人。没有办法学习如何用Rust编写大型程序,而不是自己编写,这可能是一种风险不愿接受。更糟糕的是,来自其他语言的几种设计(尤其是那些严重依赖面向对象设计)在Rust中非常痛苦,并且没有书面的游戏计划对于学习Rust的人来说,如何适应它可能是一个巨大的绊脚石。
如果这一切让人觉得过于简单化,那很可能是这样昨天的推特帖子是为了我自己的目的,所以我可以得到这些想法的列表如果您对文档有更具体的想法,可以填充此空间,请告诉我!我会的很高兴看到今年有这样的活动。