7

写作笔记之一:写作手法的重要性 — blog.huangz.me

 3 years ago
source link: https://blog.huangz.me/diary/2016/notes-about-writing-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

写作笔记之一:写作手法的重要性

对于大多数人来说, 写作首先考虑的是内容的质量, 但除了质量之外, 还有一点也非常重要, 那就是写作手法的选择。

正确的写作手法能够帮助作者将自己想要描述的内容更好地传递给读者, 而不正确或者不好的写作手法则会阻碍这个信息传递的过程。 更值得注意的是, 就像同样的面粉可以通过培烘、蒸、煮、汤滚、油炸等不同的烹饪方式来获得不同的食物一样, 随着写作手法的不同, 即使作者想要描述的内容是完全一样的, 最终产生的结果也会大为不同。

举个例子, 在我刚开始写《Redis使用教程》的时候, 有一个问题就特别地困扰我 —— 因为 Redis 给用户提供了多种数据结构, 并且每种数据结构都提供了功能强大的命令集, 所以即使是同一个程序, 在 Redis 里面通常也会有多种写法:

  • 比如说, 在 Redis 里面, 你既可以使用 LPOP 命令和 RPUSH 命令实现一个先进先出队列, 也可以使用 RPOP 命令和 LPUSH 命令实现一个功能完全相同的先进先出队列;

  • 又比如说, 你即可以使用 Redis 的集合结构去计算网站的唯一用户 IP 数量, 也可以使用位图去做相同的事情, 甚至使用 HyperLogLog 也可以实现类似的效果;

诸如此类。

因为解决同一个问题的方法有很多种, 所以这就给作为作者的我带来了一个问题, 对于一个问题 P , 如果它在 Redis 里面有多种解决方案, 比如 A、A+、A++ 等等, 那么我是否应该在书里面都介绍这些解决方案呢? 关于这个问题, 我们可以从两个角度来看:

  • 从好的角度来说, 通过展示同一个问题的不同解法, 可以给读者更好地展示 Redis 的强大和实用性, 帮助他们更好地了解 Redis 。

  • 但是从坏的角度来说, 一直研究同一个问题可能会让读者感到厌烦, 并且从现实来看, 介绍同一个问题的多个解法需要占用大量的篇幅, 这可能会挤压其他内容的篇幅, 导致另外一些有用的内容无法容纳在书本里面。

这个问题初看上去似乎是一个鱼和熊掌的问题, 但值得庆幸的是, 我还是想到了一种办法去解决它:

  • 我重新审视了书中的所有同类解决方案, 移除了一些不太重要的解决方案, 只保留同类解决方案中最有代表性也最有学习价值的方案。 比如说, 只保留最优解法 A 和次优解法 A+ , 而不再保留第三位解法 A++ 以及之后的其他解法。

  • 然后, 我仍然会在书本的正文中介绍问题 P 及其最优解法 A , 但是却不会再在正文中介绍问题的次优解法 A+ 。 与此相反, 我将解法 A+ 的内容移花接木到了每章末尾的《编程练习》栏目里面 —— 在这个栏目中, 我不再直接给出解法 A+ 的实现, 而是仅仅描述出解法 A+ 的核心概念, 然后要求用户根据自己对问题 P 、解法 A 以及解法 A+ 概念的理解, 写出解法 A+ 的实现, 并且每章的最末尾也会给出《编程练习》的参考答案, 方便读者进行对照和参考。

这种做法有几个好处:

  1. 我可以在书本中介绍问题的次优解 A+ , 帮助读者扩展他们对于 Redis 的了解, 而不必将这些内容完全割舍掉。

  2. 在原来的计划中, 书本的正文总是先介绍问题 P , 然后介绍最优解法 A , 然后介绍次优解法 A+ , 然后再介绍其他解法 A++ 甚至 A+++ , 这种做法会导致正文内容冗长, 并给读者带来不好的体验。 通过在正文中介绍问题 P 及其最优解法 A , 然后再在《编程练习》中介绍次优解法 A+ 的做法有效地避免了原来的阅读疲劳问题, 并且还可以在介绍解法 A+ 的同时, 引导读者去复习问题 P 和解法 A 。

  3. 在进行修改之前, 书本原来的计划是只有正文而没有编程练习的, 但是通过增加《编程练习》这个栏目, 我丰富了书本和读者之间的互动, 使得读者不再仅仅是被动地接受知识, 而是在获得了一定知识之后, 通过《编程练习》进行举一反三和思维发散, 在帮助读者更好地掌握正文内容的基础上, 将这些知识真正地应用到实践中, 并以代码的方式将这些知识实际地编写出来。 我相信当一个读者完成编程练习并自行将书中描述的解法实现出来的时候, 他一定会非常有成就感, 这也是我所希望的。

虽然引入《编程练习》部分有那么多好处, 但说到底, 我所做的只不过是将原本放在书本正文中的解法 A+ 的描述进行了一下转换, 将它变成了一个编程练习而已 —— 在书中介绍解法 A+ 这一目的并没有发生变化, 只是现在对解法 A+ 的介绍变得更为生动有趣并且更容易为读者所接受了, 而这就是正确地选择写作手法带来的好处。

好的, 那今天关于写作手法的介绍到此就结束了。 本文是《写作笔记》系列的第一篇文章, 跟之前的《翻译笔记》类似, 我将在这个系列的文章中向大家介绍我在写作时思考的一些问题、遇到的困难以及最终解决的方法, 希望这些文章会给各位带来一点启发, 也请大家在接下来的日子里面多多关注《写作笔记》这个系列的文章, 非常感谢大家!

2016.10.24

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK