跳到主要内容

后记

写作过程

我刚踏上工作岗位不久,父母就鼓励我把日常工作中的经验教训和心得随时记录成文。一来可以总结经验教训,二来可以与人分享。当时我总觉得自己经验有限、文思笨拙,又加之比较懒惰,所以迟迟没有行动。

2006 年,公司几个同事鼓动我一起写书,赚点外快。我们对当时市面上的 LabVIEW 书籍以及它们的销售情况都进行了分析。结论是,撰写 LabVIEW 方面的书籍,并不会取得很好的经济收益。所以几个同事渐渐对写书失去了兴趣。不过,对于我来说,最大的吸引力在于写书带来的成就感。因此我并没有马上放弃这个念头,开始认真研究写书的可能性。

真正动笔尝试写书的时候,我才发现自己写作的进度太慢。我需要一边构思内容,一边编程调试,一边写作。每星期也只能写一千字左右,照这样进行下去,不知猴年马月才可拼凑成册。

通过这次尝试,我清楚地意识到了自己的不足。于是改为从短篇文章写起,先锻炼自己的写作能力,同时积累素材。我开始不断地把自己平时的一些想法记录下来,并发表在个人博客上。这之后,又有几次同事或者出版商和我联系讨论写书的事项,而我都觉得自己准备还不充分,没有参与。

2008 年夏,北航出版社的胡晓柏老师,给我展示了他们的一个出版计划。我觉得他们的计划和设计非常好,如果能参与其中也不错。而我太太此时也积极鼓励我,于是我又动了出书的念头。虽说当时写博客只有两年多,积累的文章还不算丰富,但我觉得第一次写书也不必过分追求完美,不需要一下子就写部大著作出来,先把一部分经验总结出版,也是个不错的开端。

写博客时,可以随兴而写,想到什么话题,就写什么话题。写书虽然不要求面面俱到,但至少也应该前后连贯。所以,需要补充大量原来在博客上没有提及的知识点。这次写书的难度和工作量大大超过了以往写博客。由于只能利用个人的业余时间进行写作,我不得不放弃了大量看电视、打游戏、上网吹牛聊天的时间。跟出版社签订了合同后的头三个月,我干劲十足,一口气写完了全书近一半的内容。但是随后,由于赴国外出差,比较忙碌,加上工作任务繁重,渐渐感到心力疲惫,写作进程一度十分缓慢。在接下来的两个月,我只写完了一章,眼看就赶不上交稿日期了。但想到我出书的心愿终于可以达成,于是我重新打起精神,再接再厉,又用了三个月时间,完成了书中其余章节。又反复检查和修改了两个月,最终定稿。

本书在 2009 年首版发行之后,几年内又多次增印和改版。但是 2012 年秋天开始,由于工作变动,我失去了使用 LabVIEW 的授权。之后多年我都无法再更新本书中的内容,本书在 2014 年最后一次增印后就没再印刷了。直到 2020 年,NI 发布了 LabVIEW 的社区免费版,我才有机会作为业余爱好者再次使用 LabVIEW。2021 年,在得到北航出版社的支持后,我把本书的全部原稿公布在 GitHub 平台上,并且进行了更新维护,希望这样可以帮助到更多的人。

2023 年,大型语言模型(LLM)的崛起令人瞩目。在对其强大功能感到震撼之余,我也开始在工作和生活中积极应用这一技术。鉴于我的英语水平有限,过去我很难想象能将十多万字的技术书籍翻译成外文。但自从接触大语言模型后,我都会借助它来对我的文稿进行校对和润色。它不仅能够敏锐地纠正语言错误,还能使文章的表达达到我自身难以企及的水准。在深度体验了它卓越的跨语言与文本处理能力后,我终于有了底气,决定借助它将这本书翻译成英语,希望最大程度地向更广阔的世界展现出这本书的内在价值。

制作电子书

当我开始考虑把这本书发布到网上的时候,我还没有任何制作网站的经验。只是考虑到,我的网站不需要任何花哨的功能,只用来分享文字图片等内容,应该不是太难做,可以边学边做。

首先要考虑的是网站放在哪里?当时有两个主要的选择方案:一是租一个云服务器来架设网站;二是直接利用 GitHub 的网页服务。二者我都研究了一下,都是基本可行的方案。租用云服务器的好处是可以租国内服务商的机器,不用担心网站被墙。而且有了服务器的控制权,任何复杂功能都可以实现,不用担心有限制。我最终放弃了这个方案的原因是,我不想自己维护网站,毕竟精力有限,我还是希望专注在内容制作上。GitHub 的网页服务,虽然只能放置静态网页,但也已经完全满足我的需求了,是理想的电子书网页平台。我唯一有些担心的是 GitHub 服务器是在墙外的,这就有被墙的风险。如果哪天真的不幸发生此事,我再寻找其它解决方案吧。

选好了网站服务,下面就开始制作网页了。最开始,我也不知道可以借助哪些工具,所以,就直接打开 Notepad 写 HTML 和 JavaScript,JavaScript 还是现学的。最直接的做法当然是把书的每一页写成一个 HTML 文件。但是 HTML 格式并不是设计来给人阅读的,文档一旦做成 HTML 格式就很难维护了,新写一个 HTML 文档也不简单。于是,我采用了时下比较流行的做法,把所有文本内容保存为 Markdown 格式(*.md)。 Markdown 格式是纯文本格式,使用了少量特殊字符来表示文本的排版样式。它不支持复杂的排版,但这些基础的格式已经足够用于展示技术文档,是我的理想选择。有现成的 JavaScript 库可以把 Markdown 格式的文档渲染成网页。就这样,我上线了这本电子书的最初版本。

之后,我很快发现,我再想给网站增加点什么功能,工作量都会变得十分巨大。比如,我想要一个站内搜索功能,可是自己已经没有能力做到了。好在这时,我对制作电子书有一定的了解了,尤其是发现了原来市面上是有很多工具可以帮助制作电子书的。我尝试的第一个电子书制作工具是 Docsify。 Docsify 是一组 JavaScript 库,这其中包含了很多第三方制作的插件。它的工作原理与我自己制作的网站极其类似:把服务器上的 Markdown 格式的文档传递到读者的浏览器,然后渲染成一个页面。只不过,它的各种强大功能都已制作好了,拿来就能用。比如要加个搜索框、状态条什么的,在配置文件里写上一条就有了。我对 Docsify 的功能非常满意。然而,它还是有一条让我无法忍受的缺陷:对搜索引擎的支持非常糟糕。使用 Docsify 建立的网站,网站上保存的都是 Markdown 文件,并没有 HTML 格式的网页。尽管这对于网页浏览器不是问题,网页浏览器总是会运行网站传过来的 JavaScript 程序,把这些 Markdown 文件渲染成网页(这一技术被称为客户端渲染)。然而,纯粹依赖客户端渲染的架构对搜索引擎优化(SEO)极度不友好。许多搜索引擎的爬虫(尤其是国内的爬虫)很难高效地执行复杂的 JavaScript 去动态抓取页面,它们通常只能或者更倾向于直接接收现成的 HTML 代码。这就造成了搜索引擎几乎无法从我的网站上有效收录任何有意义的内容。

没办法了,只能再找一个支持静态站点生成(SSG, Static Site Generation)的制作工具。这类工具的原理是在编译打包阶段(比如在本地电脑上),就提前把所有的 Markdown 文件全部转换并生成为静态的 HTML 网页文件,然后再上传部署。最终我选择了 Docusaurus。

Docusaurus 功能强大,技术先进(基于 React),审美也符合我的要求,采用默认布局生成的页面就很漂亮。缺点是 Docusaurus 使用起来比 Docsify 要麻烦一些,所需技术门槛也更高。这一是因为 Docsify 专用于电子书网页制作,而 Docusaurus 还可以用来制作个人主页或博客,功能复杂了不少,虽然都是我用不上的。二是因为 Docusaurus 制作的是服务端渲染的网站,它多了一个 build 也就是渲染的步骤。我看到过很多文史艺术专业人士使用 Docsify 制作的电子书,可见使用它并不需要多少互联网技术背景;但 Docusaurus 的使用者就几乎都是程序员了。这不巧了吗,我也是程序员…… 之后,终于可以 Google 到本书了。

致谢

首先要深深感谢我的父母,我是在他们坚持不懈的建议下,才开始写作的。没有他们的鼓励,我恐怕也不会想到把工作经验记录成文。我的父亲是本书的第一位读者,他仔细阅读了书中每个章节并实验了几乎全部的示例,帮助我修正了初稿中的大量错误。

感谢我的同事们,写书虽是个人行为,但他们还是给予我最大限度的帮助。NI 公司上海研发部的经理郭文哲先生,在百忙之中为本书撰写了序言;本人所在部门的经理李春沅女士,主动为我联系了公司市场、法律等部门的同事,帮助我从公司取得了出书的许可;还有张南雄、陈东、张若凡等同事,帮助我审阅了书稿,并提出了宝贵意见。

感谢吴玮、王瑶、叶永青、许健等好友,他们最初提议并参与了写书计划的讨论。他们对我开始尝试写作给予了巨大鼓励。

感谢所有通过论坛、博客、Email 等与我探讨 LabVIEW 的网友们。写书时,很多灵感都来源于和网友们的交流。本书出版发行之后,收到了不少热心读者的反馈,帮助指正了书中错误,让我得以不断完善本书的内容。在此谨向读者们表示诚挚的感谢!

最后,我要特别感谢我的太太。太太相夫有方,在生活上对我体贴照顾,对于写书之事又严加督促。在太太的陪伴下,我才得以克服自身惰性和各种困难,完成此书。