• 技术交流
  • 首页 > 技术交流 > 知乎原创
 我为什么选择使用Labview来做软件?
2021-09-30

点击 阅读原文,查看知乎原文。

首先声明,本文无意为Labview做广告,因为我不大认为NI会为此会给我钱。

1992年,我有了第一台电脑,它的配置我还依稀的记得,CPU是386,没有协处理器(我猜好多人看到这里会去查询啥叫“协处理器”),1M内存,5.25吋软驱,显卡记不住了,但是屏幕是黑白的。印象里,电脑可以滋滋嘎嘎的从软驱启动,DOS启动后,再启动BASIC,编写几行代码,诸如"Hello, World!"一类的,也没写过什么正经代码。

上大学的时候,学了一点点汇编和C。但是自己那个时候把更多的精力放在如何与女孩子相处。时间很快就滑过去了,对于编程的知识,仅限于应付考试,并且,不知道为什么,对C产生了深深的抗拒。 参加工作后,工作内容并不需要用到编程,所以编程能力继续荒废。甚至,说不上是荒废,因为原来也没什么积累,既然没有,也就无所谓失去。 直到2014年(对,就是我人生写出第一个"Hello, World!"的二十二年以后),本文开头处那个图片上的产品(有几个接头接在银白色箱子上、蓝色管子、黑色夹具构成的那一大坨东西,在我所在的行业,它叫“天线架”)要进行开发,需要为它编写控制程序,公司刚刚开始创业,没有钱请人写,所以只好自己披挂上阵。

在那个时刻,我思考了很久,到底用什么软件来写控制程序?
因为天线架的控制程序是公司要对全球发布的软件,所以,开发软件必须是开源的或者是正版的。
以我的能力,开源软件根本用不了,因为相应的支持并不多,例程也五花八门,看不大懂。我知道我这么说,很多人是不同意的,但是这是我本人的感受。另外,开源软件里面,也有很多的"Dirty Code",会引起版权问题,虽然,我们这种小公司不大会被某些组织盯上进行讹诈,但是为了避免不必要的麻烦,我也就直接放弃选用开源软件。

商业开发软件,无非就是Microsoft的Visual Studio等等,这些系统,也是我这种“独狼式”开发的选手没法使用的。原因还是能力不足,每次都会遇到若干的错误,但是无法解决,找不到解决方案。 兜兜转转之后,我把目光停留在了Labview上,因为这个软件我之前见人用过,有一点点概念,另外,我感觉它会让我不用总把精力放在调用这个库,那个库的,只要考虑数据流就可以了。

于是,我开始尝试用Labview做上面的那个项目,最后,居然写出了一个漏洞百出但是基本能够运行的软件。
2017年,一次偶然的机会,在美国结识了一位CLA级别的Labview程序员,我大言不惭地拿我的第一个作品给他看,问他我的这个程序在他眼里能得多少分?他看完后,想了许久说,跟我讲,“I think, I could give you a C plus”(我想,我能给你打一个C+(约等于百分制的65~70分))。我问他,这么讲是不是为了安慰我,他说,"At least, it could run"(至少,它还能运行)。

是的,其实,这就是Labview的问题,也是它的魅力。 我先说它的魅力。我在写这个项目的时候,没有接受过任何正式的培训(其实,到目前为止,也没有接受过任何正式软件培训),全部是靠Labview的帮助和问度娘解决问题。但是,就是这样,也能弄一个基本能运行的软件出来。 它的问题,就是太容易上手,易学难精。这些年,我写了几个小项目,也看了一些其他人写的程序,包括我说的那个CLA级别的Labview程序员的作品。我越来越发现,我之前写的那些程序就是狗屎不如,任何的错误都没处理;什么状态机等等完全没理会;什么簇、数组,完全不在乎;没有什么文件读写的操作;执行效率根本没有考虑过;全局变量咋用好?局部变量咋用好?没认真思考过……。总结起来,就是一个字,”烂!”

于是,我慢慢从简单地喜欢Labview到开始有一些敬畏了。
我接触的软件项目,全部都跟硬件有关,对于我而言,那就是Labview的天下。随便什么接口,都可以很快跟硬件通讯起来。我没有理由放弃Labview。
我认真地思考了很久,我觉得,如果真的想把软件继续发展下去,必须要重新把Labview从头学起。 我在Labview的使用上走了很多弯路,但是我不后悔。我也不推荐大家走跟我一样的路,我们都知道野路子很难走。

如果真有朋友希望靠Labview做软件并成为职业程序员,请三思。因为:
好多使用其他编程工具的程序员并不认为Labview写出来的是真正的代码。因为都是图形化编程,不像其他编程工具都是写代码。 并且,很多程序员认为Labview程序的执行效率跟其他编程工具生成的程序相比,并不占优势。这也容易理解,Labview的代码也许啰嗦的代码会多一些,任何一段代码的执行,都需要时间,不管那段代码有用没用。 我也很少见到像我这种只用Labview做软件的专业程序员。必须要能够熟练使用一些其他的编程工具(比如:Python, Ruby, Java, C#等)。 以上就是我个人对Labview的感受和认知,我也不是专业程序员,所以难免偏颇,欢迎大家指正。