跳到主要内容

原稿中的前言

· 阅读需 15 分钟

交稿之后,出版社的编辑又帮我检查修改了数遍,改正了不少原稿中的错误,语言风格也比原来严谨些。比如前言部分,原稿中我是使用第一人称来记录自己的一些经历和感想的,在正式出版的书中则改为了第三人称。我觉得这也不是很重要的部分,不过前几天有人问起,所以我就把我的原稿也贴上来吧:

0.1 我和LabVIEW

一转眼工作已经十年了。自从成为NI公司的一名软件工程师,LabVIEW就一直是我日常工作中最主要的编程语言。所以当我考虑以哪种方式来纪念我参加工作十周年时,把我积累的LabVIEW编程经验总结成书,应当是最有意义的一种方式了。

还是在大学的时候,有一次老师要求编写一个程序,用来模拟一个控制系统:给它一个激励信号,然后显示出它的输出信号。那时,我的脑海里就闪烁过这样的想法——是否可以把每一个简单的传递函数都做成一个个小方块模样,编程时可以根据需要选择相应的函数模块,用线把它们连起来,这样就可以方便地搭建出各种复杂系统。

后来,当我第一次看到别人给我演示的LabVIEW编程时,发现它就是把一些小方块用线连起来,完成了一段程序。这和我曾经有过的那种想法多么相似啊!一种亲切感油然而生。从此,我对LabVIEW的喜爱就一直胜过其它的编程语言。

这些年里,我对LabVIEW编程的认识经历了不少转变。刚开始接触LabVIEW的时候,第一印象就是觉得用这东西编程序比C语言简单多了,尤其在设计界面的时候。LabVIEW是一种真正意义上的图形化编程语言。与C、Basic等文本编程语言相比,它在编程过程中有更详细的提示信息,如函数的功能、参数类型等等,程序员再不需要去记忆那些枯燥的函数信息了。而且,一段编写风格良好的图形程序代码,要比文本代码更加清晰直观,便于阅读。

刚开始用LabVIEW编程时,我连一本相关的书籍都没读过,可以说完全是靠自己摸索。当时,市面上几乎没有有关LabVIEW的中文书籍,而阅读英文资料又感觉太慢太累。但是,靠自己摸索的方法也有好处,最明显的就是有成就感。自己琢磨着解决了一个问题,要比模仿别人的方法更令人兴奋。再者,他人的方案并不一定是最佳的,自己独自思索就不至于被他人的方案局限住思路。

当然,我不可能满足于只用LabVIEW编写一些简单程序,当然还希望能够用它来编写大型的软件,并且提高自己的开发效率。这时,自己对编程的要求有了一个质的提高,不阅读相关的书籍资料就不行了。有些问题,不读书,自己可能永远都得不到最佳的答案。同样,有些LabVIEW的功能,如果不阅读原始资料,自己也许永远都掌握不了。于是,我把能得到的LabVIEW的中高级教程都阅读了一遍。因为已经有了一定的基础,我就可以在读书的过程中反思自己以前的编程方法是否合理、高效。在我参考过的所有资料中,最好的教程还是NI自己编写的LabVIEW中高级教程。但书本中一般原理讲得多,具体的编程技巧涉及得少,所以还必须大量阅读他人的代码,才能学习到更多更好的编程方法。

作为一名忠实的LabVIEW语言使用者,我衷心地期望着LabVIEW也可以成为一种被广泛使用的通用编程语言,能够在更多的领域中与C、Java等语言一争高下。LabVIEW虽然有它独特的优势,但不足之处也很明显,我在编程过程中就曾感觉到它的很多不便之处。这也就成了我进一步的追求目标:尽自己所能,对LabVIEW作一些改进和完善,使它更加强大和易用;同时,为LabVIEW在中国的普及和推广尽自己的一点绵薄之力。

0.2 本书的内容和特点

本人是美国国家仪器有限公司(全名:National Instruments Co. Ld. 简称:NI)的研发工程师,但是本书的写作完全属于个人行为,书中的某些见解可能与NI的官方意见并不完全一致,仅供读者参考。

0.2.1 本书特点

近几年,随着LabVIEW在中国的普及,市面上与之相关的书籍也越来越多。不过它们多以介绍LabVIEW的函数、VI的功能为主。比如,列举一个VI的功能为何,它的参数有哪些,表示什么含义等。而本书则更加侧重于介绍如何解决问题,比如针对一个具体的编程问题,本书会介绍LabVIEW中有哪些可以实现的方法,各自优缺点是什么。

本书的内容都是我在学习和使用LabVIEW过程中积累的经验。受写作时间和个人能力的限制,本书并没有覆盖LabVIEW所有细节内容和功能,也没有详细解释书中所使用到的LabVIEW自带VI或函数的参数设置及用法。不过这些内容在LabVIEW的帮助文档中均有详细介绍,所以在阅读本书时,若对某些具体的函数有疑问,可以打开LabVIEW,查阅相关的帮助文档。

0.2.2 内容选取

在写作本书前,我陆续在博客上发表了多篇关于LabVIEW编程的文章。本书大约有三分之一的内容直接选取了博客上的内容。在把它们编辑成书的过程中,我又对它们进行了重新编辑和扩充。博客文章在介绍某些知识点时,面向的是是有经验的LabVIEW程序员,所以讲解并不详细。在本书的写作过程中,考虑到LabVIEW初学者也可能参考本书,所以对知识点的介绍更加细致。书中其余三分之二的内容则是完全新写的。

在具体选择书中内容时,主要偏重如下几部分:

LabVIEW中最常用的功能。本书所介绍的内容都是LabVIEW编程者最经常使用到的功能。随着LabVIEW版本的更新,其功能也越来越多,有一些功能是极少被使用到的。这些偏僻的功能对于大多数读者帮助不大,所以本书也未做讲解。况且,目前市场上已经有过多本比较详细介绍LabVIEW控件、函数使用的中文书籍,本书就没有一一详细介绍这方面的内容。

LabVIEW学习过程中的常见问题及易犯的错误。我曾经作为LabVIEW高级课程的讲师,给客户讲授过LabVIEW的课程,也经常在博客、论坛或通过Email解答过LabVIEW使用者们的一些疑问,在公司内部,也经常检查和指导新员工改进他们编写的LabVIEW程序。在这一过程中,我发现有些问题在LabVIEW初学者中出现的频率相当高。指正这些通病可能会使更多读者收益,所以本书有相当部分篇幅用来讲解这方面的内容。

我个人所擅长的领域。为了保证本书的质量,本书所介绍的内容都属于我比较了解的范畴。而我平时接触不多、没有太多实际经验的部分,则不是本书涉及的范围。

尽量不重复LabVIEW帮助文档中的内容。LabVIEW的帮助文档应当是最全面、最权威的LabVIEW工具书,它记载了LabVIEW中每一个函数、VI的使用方法,每一个对话框上的内容……对于这些可以在LabVIEW帮助文档中直接查阅到的内容,本书就不再重复描述了。那些LabVIEW帮助文档中没有涉及到的内容,如LabVIEW程序设计的原理、原则,如何选取最适合当前情景的编程方法,编程时的注意事项,LabVIEW的学习方法等等,才是本书着重介绍的内容。

列举实际案例。在介绍LabVIEW的功能和用法时,书中会配合编程实例进行讲解。

0.2.3 LabVIEW版本

书中介绍的LabVIEW功能和编程方法,是以LabVIEW 8.6专业版为范本的。这是在本书写作时LabVIEW的最新版本,也将是今后一段时间内,使用最为广泛的LabVIEW版本。本书侧重介绍的是那些最为常用的功能,所以书中绝大部分内容同样适用于更早版本的LabVIEW。

当本书出版时,也许更新版的LabVIEW已经面世了。但是,LabVIEW的编程思想不会有任何改变,并且新版本的普及也需要较长一段时间。所以即便读者使用的是新版本的LabVIEW,同样可以使用本书作为学习LabVIEW的参考书。

如果新版本的LabVIEW有较大改进,导致本书介绍的内容不再适用时,我将会在个人博客(ruanqizhen.spaces.live.com)中,及时更新,进行详细的解说。

0.2.4 插图和示例

为本书编写的示例和以及在书中截取的大部分插图是在LabVIEW 8.6中文版下编写和截取的。但受条件限制,有小部分示例和插图是在旧版本的LabVIEW,或英文版的LabVIEW中制作的。书中部分插图在Windows XP系统下截取,部分在Windows Vista系统下截取。因此,书中不同截图窗口风格可能略有不同。

受篇幅的限制,本书一般只收录一些关键设置和程序关键部分的截图。没有收录的程序框图,读者在学习本书时可以自己尝试编写,也可以直接下载本书的示例辅助学习。本书所用到的全部示例,包含插图中出现的VI,都可以从网上下载到,具体下载地址可参考我博客中的链接。

0.2.5 更正和注解

受本人水平所限,在编写此书的过程中难免会有疏忽和差错。在此,诚挚希望各位读者及时批评指正书中纰漏,也欢迎读者就书中内容进行讨论。对本书的任何意见和建议都可以直接发表在我的博客中(ruanqizhen.spaces.live.com)。

本书出版之后,我会继续对其进行维护,包括修订错误、补充相关内容、回答读者疑问等。所有相关的更新也都会及时发布在我的博客中。

返回《我和LabVIEW》文章摘录