MATLAB App与GUI:未来发展趋势探讨

作为公众号里MATLAB GUI写得最凶的汽车工程师,经常会有朋友留言问我:MATLAB App会不会取代GUI?

类似的留言还有很多,正好上周有朋友加我微信聊到这个问题,所以今天我打算写一篇关于这个主题的文章,聊一聊我对这个问题的理解。

先提前申明一下,我读的是机械,工作是造车的,从来没有学过计算机,如果有朋友对我一本正经的胡说八道不认同,欢迎指正。

01. 选App还是GUI,这不是一个问题

在对比App和GUI之前,我想先聊一下App和GUI的本质。

无论是App还是GUI,他们的本质都是一样的,都是UI(User Interface用户界面)的一种。

我们日常生活中还有很多UI的例子,像电脑桌面,手机,微信小程序等等,获取信息,调用资源,控制运作的一个可视化操作界面。

关于UI设计,很多人会把UI的职能分成3类,包括界面设计,交互设计,以及用户测试。

不过在MATLAB App/GUI的开发过程中,不会分这么细,只包括界面设计和交互设计,因为用户群体有限,基本上是只是自己使用或者项目组里使用。

之所以介绍这个,是希望能够淡化大家对GUI与App转化这件事的忧虑。

GUI和App的本质是一样的,在GUI转App这件事上,大部分的交互设计是保持不变的,也就是主要功能的callback函数都是沿用的,像数据的导入导出,数据的计算处理,数据的可视化等等。

唯一的不同是在界面设计上。虽然界面设计不同,但原理总是相通的,基本的控件也都是类似的,无非就是按钮,编辑框,文本框,列表等等。

所以,如果你打算把GUI迁移到App上,不要觉得这是件难度堪比登天的事,App Designer有提供GUI转App的工具,然后在转成之后的App略微调整,差不多就能用了。

02. MathWorks为什么要开发App Designer

既然GUI和App的本质是一样的,为什么MathWorks要开发一个全新的应用程序构建平台App Designer?

对于这个问题,我引用一下MATLAB图形和应用程序构建的开发经理Chris Portal的回答:

“GUIDE和App Designer之间的主要区别在于所使用的技术。GUIDE的基础是Java Swing,甲骨文已经不再对其投入开发。虽然这个平台可以获得一些短期的胜利,但是从长远来看,不会得到新的扩展,也不允许我们为用户提供基于网络的工作流。

App Designer建立在现代的基于web的技术上,比如JavaScript、HTML和CSS,它给我们提供了一个平台,可以灵活地跟上用户的需求,并允许应用程序在web上运行。用户可以保持他们现有的基于Java的应用程序运行,并在合适的时候选择新的平台。”

摘自Loren Shure博客: https://blogs.mathworks.com/loren/2018/07/25/the-state-of-App-building-in-matlab/

其中有一个非常有意思的信息是,基于网络的工作流,MATLAB App可以在web上运行。

如果你真的非要说服我说MATLAB App才是未来的趋势,更多的控件选择说服不了我,更精致的控件设计说服不了我,更便捷的界面设计流程说服不了我,而唯独能让我心动的是,App支持web上运行,这背后的想象空间实在是太大了。

03. MATLAB App有哪些优点

前面其实已经陆陆续续聊到了App Designer的一些优点了,除了能够支持web端的运行之外,还有非常多的优点。

我很喜欢的是App Designer的启动界面,一个非常有现代感的界面设计,相比之下,GUIDE的启动界面更有些Windows98的味道。

当然一个界面的好坏不能单纯的只靠视觉感受来判断,如果仔细去看其中的内容,就会发现里面有不少现成的例子。

这哪还需要什么教程什么培训班啊,随便挑一个例子,拿去玩玩,调一调参数,看看都会有哪些变化,很容易就上手了。

第二个我非常喜欢的是,在这个启动界面的最上方,会有一些帖子推荐,就拿这个上面这个图来说,推荐了一篇帖子是关于HTML UI component的,当我第一次看到的时候,非常惊喜,因为那段时间我正在制作我的小程序,所以读这篇帖子的时候,是真的很兴奋。

App Designer是这几年的一个新产品,每年都在更新改善,它更像是一个藏满似曾熟悉却未知的魔术盒,每当我看到一个新的功能,不由得会感叹,卧槽,还能这么操作!

第三个非常喜欢的是,App Designer里的控件选择实在是太多了,有日期选择框,色彩选择框,HTML,树状结构,还有一些带有工业设计元素的控件,比如旋钮,指示表等。

老实说,这些控件在GUI上并不是不能实现,都是有曲线救国的办法,但还是得花些力气去实现。相比之下,App Designer里的选择就多了不少,想要实现的功能可以更多,也更便捷。

而且控件设计也非常有讲究,我对控件里的那些圆角设计毫无抵抗力,实在是太喜欢了。

至于参数设计方面,我就做不评论了,因为对于这种控件拖拽的制作方式,我向来不太喜欢,这些年一直是用纯脚本形式制作GUI的。

App Designer的参数设置感受如何,只能请大家自己去体会了。

不过恰恰是因为我的这个习惯,非常让我意外与惊喜的是,App的保存形式,除了mlapp之外,还可以导出为m脚本,而这个功能是GUIDE所没有的。

这个功能的出现,对于习惯通过编程制作应用的朋友来说,是非常有帮助的。可以通过拖拽控件快速搭建应用的界面框架,然后在导出m文件之后,在m文件的基础上继续优化界面的设计。

App的好处就暂时先介绍到这里,里面还有很多非常酷炫非常人性化的设计,大家可以多花些时间去体验一下。

04. MATLAB App能否取代GUI

关于取代,随着AppDesigner越来越完善,确实会有取代的情况出现,不过不是App取代GUI。

谈到这个话题之前,我希望大家清楚几个概念。

GUI是一个UI,用户交互界面,可以理解成一个产品,一个工具。

制作GUI的方式有两种,一种是大家比较熟悉的GUIDE,这种方式和App Designer很相似,是GUI的制作环境,通过将基础控件拖入到界面中实现GUI的界面设计,右键实现callback函数的定义。

另一种方式是,通过编程的方式,定义figure窗口,在窗口中定义控件,包括控件的位置,名称,颜色,调用函数等等。

回到取代这个问题上来,其实不是App取代GUI,而是App Designer取代GUIDE,是制作方式上的取代,这样的取代才有可比性,因为两种的制作方式非常相似,而APP Designer确实要比GUIDE要便捷很多。

GUIDE的界面中,MathWorks官方也是这么提醒用户的。

如果说App Designer取代GUIDE,我双手赞成,因为几年前,我早就用编程式GUI把GUIDE取代了。

不过如果你要说App要取代GUI,从目前来看,暂时还不太可能,举一个简单的例子。

几个月前,我想把自己之前做的一个GUI工具HaoTdms改写成App。

界面的改写过程十分顺利,不过我使用的不是类,而是直接把figure改为uifigure,GUI中的按钮,编辑框,列表等等,全都替换成App中对应的控件。

当我要迁移两个小功能的时候,碰到了问题。

一个是,我在列表里选择任意一个信号之后,输入回车键,可以生成信号的图。在GUI中只需要在列表控件上定义KeyPressFcn即可。

不过在App中,列表控件是不支持KeyPressFcn的,只有整体窗口支持KeyPressFcn。

这导致的问题是,我在搜索框中输入字符之后然后回车,整个过程一直在调用整体窗口的KeyPressFcn,而回车让列表中的信号错误显示。

另一个是,GUI的Edit编辑框可以实现的一个效果是,设置Enable为inactive,然后通过ButtonDownFcn实现对编辑框的点击事件处理。

这个功能同样在App中是无法实现的。

这类的小细节问题,其实在App中还不少,好在这些细节对整体功能的影响并不严重,只是在用户友好度上会稍有影响。

也正是因为这些细节上的问题,目前我还不太愿意把GUI完全迁移到App上。

还有一个我比较介意的问题是,App在使用过程中是会有响应迟钝,大家可以对比下App和GUI在启动过程中的响应速度。

这个问题在使用过程中同样也存在,比如大家可以试一下用uisetcolor打开调色板,这个控件就是App Designer中的一个,也是肉眼可见的卡顿。

05. App和GUI,选哪个?

从我个人的观点是:

- 如果你刚开始接触工具的制作,推荐使用App Designer

- 如果你比较喜欢用控件拖拽的方式制作工具,推荐使用App Designer

- 如果你的工具复杂度不太高,使用过程中只需要基础的点击操作,推荐使用App Designer

- 如果你计划长期制作并维护这个工具,推荐使用App Designer

- 如果你需要短期内制作一个复杂度高,成熟度高的工具,推荐使用编程式GUI,目前网上的资料与问答会比App多

- 如果你对工具的用户友好度方面要求比较高,推荐使用编程式GUI,控件可操作空间更大

- 如果你手头已经有一个项目上的祖传GUI,那就继续用GUI,不一定非要迁移到App上,并不能实现100%的迁移,而且目前GUI和App使用效果都不错

以上就是今天关于App与GUI的分享,希望这篇文章对大家有所帮助

如果大家有兴趣,欢迎关注我的微信公众号“打浦桥程序员”,谢谢

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空