1.3.2 MATLAB的劣势

1.3.2 MATLAB的劣势

MATLAB的特点和体系同时也决定了MATLAB的劣势。MATLAB在以下几个方面不太擅长。

(1)独立的应用程序

MATLAB是一种解释性语言(像很久以前的BASIC程序一样),也就是说,MATLAB程序须在MATLAB环境下才可运行。说得更通俗一点,如果想在一台机器上运行MATLAB程序,那么这台机器上需安装MATLAB系统。这一点与编译性语言不同。例如,用C语言编写了一个程序,可以将其编译成可执行文件,然后可将其在任何一台机器上运行(只要操作系统不冲突),不管这台机器是否安装了C语言的编译器。这种可以脱离开编程语言环境的应用程序称为“Stand-alone application”。MATLAB是不擅长做“Stand-alone application”的。所以,如果想制作一个软件产品用于销售,MATLAB绝对不是一个好的选择。因为,客户买了程序后,还需要安装MATLAB才能运行购买的程序。因此,客户不但要买软件,还要买MATLAB。

(2)与硬件接口

用MATLAB实现用硬件接口,不是一个好的选择。编程语言按照与机器代码关系远近,分为低级语言和高级语言。如汇编语言是低级语言,Basic、Fortran等属于高级语言。C语言也是一门高级语言,但稍微偏低级一些。相比而言,MATLAB可以称为“超高级”语言。越是高级的语言,人们使用起来越容易,但离机器底层越远,也就是离硬件越远,就越难控制。汇编语言在很多人看来是“天书”,但却离硬件很近,因此,高级的控制程序就直接用汇编语言写。

目前,MATLAB也专门提供了与硬件的接口,并且有专用的工具箱,如Data Acquisition Toolbox、Image Acquisition Toolbox等,还提供了设备驱动程序设计的模块,也有调用dll库函数的接口。但与C语言等相比,MATLAB在与硬件打交道方面并不擅长。

(3)大型应用

MATLAB不擅长开发大型应用程序。MATLAB的“方便”正好为其语言的不严格埋下了“祸根”,因此,用MATLAB开发大型应用程序会遇到很多问题。总而言之,MATLAB根本就不是为开发大型应用程序而设计的。

需强调的是,上面提到了MATLAB的3个“不擅长”,是指MATLAB在做这些工作时,相对于一些专用的高效工具来说,功能比较弱,或者做起来很烦琐,但并不是说MATLAB不能做这些事。事实上,MATLAB也提供了编译器,以及与其他语言混编的接口,供用户制作独立可运行程序;新版的MATLAB提供了多个数据采集工具箱,就是专门用于和硬件接口的(本书下篇中的例子中就用到了这样的工具箱);MATLAB语言中现在也丰富了“类”等内容,为大型应用程序设计提供了支持。事实上,许多MATLAB工具箱中的例子本身就是用MATLAB开发的大型应用的例子。目前,MATLAB不能做的事越来越少了。新版的MATLAB中不断有工具箱加进来,可以完成一些新的任务。此外,MATLAB是一个开放的系统,用户只要肯下功夫,很多事都是可以实现的。

【注释】

[1]但如果能够真正读懂这句话,你肯定已经是MATLAB编程高手了。

[2]MATLAB的名字来源于“Matrix Laboratory”两个词的缩写和组合。

[3]由材料力学或弹性力学知识可知,如果a,b,c分别代表正应力和剪应力,则此计算结果是平面应力状态两个主应力的表达式。

[4]编程语言按其运行方式分为编译性和解释性。如早期的Basic语言是解释性编程语言,而Fortran、C等属于编译性编程语言。