Menu:

2010.1.30(初稿——已删去)
2010年2月7日第2稿(正在发布)


      如果我作为一名读者看到《LabVIEW编程思想(Thinking in LabvIEW)》这样的书,肯定会眼前一亮、心生萌动,认为又是什么软件大师的作品出现了,很想一探究竟。因为许多冠名为《xxxx编程思想》的书籍都是出自那些著名的软件大师之手[1]。它们的作品往往是风格典雅、 语言流畅、条理清晰、耐人寻味。
      可是现在我要告诉你的是:你所看到的这本书并不是出自那些大师之手,而是由包括我在内的Web上几个非常喜欢LabVIEW的爱好者(草根级人物)通过Web共同携手创作完成的。

      为什么会用《LabVIEW编程思想》这样的书名?挑战大师?或者是自以为是?

      随便你怎么想都成!我们只是想通过这样的说法来表示出对某种事物的认识程度,尽管可能在认识程度上与大师相比会存在着很大差别。
      其实最适合本书的名字应该是《我(们)看LabVIEW》,这样即可与阮先生[2]的书相配学习,同时又可满足北航出版社胡先生丛书系列的出版计划。
      用《LabVIEW编程思想》是想强迫我们自己尽可能从编程思想这个层面来思考问题、解释问题。

      和许多曾使用过LabVIEW的人一样我们都认为:LabVIEW是一种计算机编程语言,并且与其它的计算机编程语言相比几乎没有任何内在的局限性[3]。LabVIEW真的很强大,很适合我们,很适合我们的工作领域。

      可是也有很多人确不这么看,特别是那些初次接触到LabVIEW或者是刚刚涉足这个应用领域的人,当然也包括已经学习、使用了LabVIEW有一段时间的人。

      什么是LabVIEW?
      LabVIEW可以做什么?
      LabVIEW更适合谁?
      LabVIEW和组态软件一样吗?

      类似这样的问题,如果仅仅告诉他们:LabVIEW是一种图形化的编程语言;可以用于工业自动化控制和自动化测试的程序设计;特别适合工程师和科学家使用;组态软件所包含的功能仅是LabVIEW功能中的很小、很小的一部分;学生也可以通过LabVIEW编程控制乐高机器人等。他们没有理由会不相信,特别是在看了LabVIEW编程演示后(通常使用快速vi来编程演示),更会觉得用LabVIEW编程真的很简单、很方便。
      可是当他们独自做项目时,就会发现问题多多、错误不断、困难重重。或者说,尽管做过了一些项目,但对LabVIEW的掌控能力并没有真正实质性的增强。
      于是他们开始不停的抱怨,图形化编程如何抽象,数据流模式如何难以理解等等。甚至开始期待能够为他们提供现成的例程。

      为什么会这样?

      这样的问题不仅仅这些初学者会碰到,我们在学习过程也曾遇到过类似的问题。如果仅仅把LabVIEW当成一种实现快速程序设计的工具或方法,遇到这样的问题将是迟早的事。

      LabVIEW是一种图形化编程语言,掌握编程语言开发环境的操作、工具的使用方法和编程技巧固然很重要,但是理解和掌握编程语言的软件特性,比如抽象机制、设计模式、运行机制、架构等等,则显得更为重要。可以说没有一种编程语言学起来是简单的,学习必须是扎扎实实的根本没有任何捷经可寻。

      同时我们还要提醒大家的是:LabVIEW不仅仅是一种图形化编程语言,它包含了许多许多方面的内容,既有硬件知识也包含了软件知识,还有数据采集中所涉及到的传感器和信号调理方面的知识,包括LabVIEW开发环境的使用等。而这些知识通常是不属于编程语言范畴之内的。
      由此可见,如果学习LabVIEW是为了用于项目开发,它的学习过程将是一个相当艰巨、漫长的过程。在学习上切记,决不可以掉以轻心。

      在这里我们先放下其它问题不谈,先谈谈下面几个问题。首要的问题就是:为什么要学习编程?

为什么要学习编程?

      如果时间倒退回二十年前,作为一个工程师能够使用计算机进行CAD设计或文字处理等工作就应该算是十分优秀的了。可是如果把这样的工作能力放到现在就显得远远不够了,因为随着科技的发展和技术的进步,数字化时代的到来,相应的对工程师的技能要求也就提高了许多。

      什么道理?

      其实道理很简单,工程师事实上是担负着技术的载体作用。工程师要面对两个方面,一个是技术能力,一个是工作任务。当技术发生进步时,相应对任务要求也就必然提高,否则满足不了市场竞争的需要。那么起着载体作用的工程师也就必须提高自身的技术能力,不然你就承担不了这样的工作任务。

      助理工程师、工程师、高级工程师、享受研究员待遇的高级工程师他们所承担的技术能力应该是不同的。当你从一个能级跃迁到另一个能级时(进职称),必须显现出在新能级所处的态势,也就是相应的技术能力。

      在工程领域,特别是那些自动化控制和自动化测量、机械制造领域,工作性质就会要求工程师必须具备一定的编程能力,这无须细说。

      工程师大多都需要在实际工作中完成再教育人物,唯有这样才能跟上技术的发展步伐。计算机的应用和普及,所带来的最大挑战可能就是要求工程师也可以实现计算机的程序设计。

      综上所述,工程师在许多方面都面临着学习编程的要求,这是技术进步和不断地工作需求所要求的。随之而来的问题就是学习那种计算机编程语言更好?

学习那种编程语言最好?

      如果你问我,我想学习编程,可是到底学习那种语言最好?
      我无法回答你,只能反问你,你要干什么?想在那方面或哪个领域进行程序设计?


Picture
      当今世界上的可以学习使用的计算机编程语言多达数百种。据TIOBE网站对编程语言作的最新统计(2010年1月)前三名依次为Java、C、PHP。

      根据统计结果,我们可以清楚的看到,前三名的使用者之和占所有使用者的百分比也仅为43.768%。并且没有任何一种语言的使用者超过17.5%。
      这样的结果说明目前没有任何一种计算机语言可以处于绝对的统治地位。
      那么到底选择学习那一种会更好呢?
      根据你的工作性质和针对你想要计算机解决的问题来决定需要学习什么语言。

      既然会有几百种编程语言同时存在,那就意味着,它们一定各自具备某些与众不同的特点和功能。


      尽管针对某个特定的项目选择一种最好的编程语言这个方法是可行的,但是绝大多数计算机专家不会认同某一种编程语言在所有情况下都是最好的,这也是为什么会有几百种编程语言同时存在的原因。选择适合你的任务要求无疑是最正确的选择。

      如果你置身于自动化工程领域,那么本书所介绍的LabVIEW(尽管LabVIEW目前排名较低)无疑会是你最好的选择之一(书中会告诉你为什么)。

      解决了为什么要学习编程和选择什么样的编程语言的问题。最后来谈谈LabVIEW编程思想。

LabVIEW编程思想

      既然LabVIEW是一种编程语言并存在了二十多年,那它就一定具有某些吸引人的特点或特性,或者说是具有它独到的过人之处。否者就无法解释它为能够存在那么长的时间,并深受工程师和科学家们的喜爱。
      
      LabVIEW编程思想就是想通过对LabVIEW编程语言的特点及特性进行充分的分析和探讨,理解它的结构内涵、运行机制和设计模式,并通过这些分析和探讨的结果来指导人们如何使用这种语言实现程序设计。

      有关计算机语言等基础知识请参见附录A、附录B、附录C。

      如果上述的问题都得到确认,认为选择LabVIEW是可行的,那就开始LabVIEW之旅吧!
      
      我期望能够做好这项工作!
      我期盼大家一起共同努力做好这项工作!
      我信奉心诚则灵!
                                                                          高巍
                                                               2010年2月(第2稿)

Picture
Picture
Google Analytics