2
021年10月14日,中国图象图形学学会可视化与可视分析专业委员会组织的第二期可视化与可视分析国际学术报告成功开展。此次报告的特邀讲者是来自加拿大魁北克高等工程技术大学教授(ETS)的Michael McGuffin教授。ETS是一所位于加拿大蒙特利尔的法语工程学院,Michael McGuffin教授与他的团队一起在此进行人机交互(HCI)、可视化、虚拟现实(VR)和增强现实(AR)的研究。在加入ETS之前,Michael McGuffin教授在多伦多大学攻读博士学位,并曾在一些公司担任软件开发人员,包括Alias|wavefront和Discreet Logic(现在都是Autodesk的一部分)。2009年,他在IEEE信息可视化会议(IEEE InfoVis 2009)上的论文获得了最佳论文提名奖。
Michael McGuffin教授带来了题为《Visual Programming Applied to Information Visualization, Games, Simulations, and Content Creation》的精彩报告。他首先从可视化编程可以解决的问题角度出发,介绍了可视化编程的定义以及为什么需要可视化编程。可视化编程通常指的是类似于Scratch这样的系统,允许用户通过直接操作将指令交互地拖到相应的地方,并用类似流程图的方式连接,就像将众多的建筑模块组装成为建筑整体一样。可视化编程有时也被称为基于实例的编程、基于演示的编程、或输出导向的编程。可视化编程具有众多优点:对初学者而言,可视化编程系统允许用户直接、直观地操作输入数据或输出展示,让指令更容易被推断出来,使初学者更容易学习编程;对专家而言,可视化编程减少了所需输出和程序指令之间的差距,可促进编程效率。
之后,Michael McGuffin教授详细介绍了可视化编程系统的三个案例。首个案例是Scratch(图1), 这是一款由麻省理工学院的“终身幼儿园团队”开发的一种图形化编程工具,主要面对全球青少年开放,是可视化编程工具当中最广为人知的一种形式。Scratch通过可爱的卡通形象可以很好地激发青少年初学者们对编程学习的兴趣,让孩子们通过可视化编程创作卡通小故事,以此提高其编程能力。
第二个案例是Bret Victor创作的 Drawing Dynamic Visualizations(图2),这是一种直接操作图元来绘制动态可视化的工具。用户可通过创建初始的图元,定制一些规则,使得这个规则可以应用到新的图元中,以此创建定制的可视化。以一个简单的五边形为例,当用户交互地绘制出一个五边形,并且指定它的边长和周期,系统就会自动识别出这两个元素,用户可以交互地将这个五边形扩展成为十边形、二十边形,而不需要做额外的工作。这个工具可以让用户的创意和交互完美地结合起来。
图 2 可视化编程案例二Drawing Dynamic Visualizations的用户界面
第三个案例是Sketch-n-Sketch(图3),是一种结合了直接操作(Direct Manipulation)和指令编程的可视化编程应用,能够动态生成矢量图形的程序。系统定义了一种声明语法,可以利用通常的指令编程方式绘制不同的图形;同时也定义了一套图形语法,和声明式的指令编程语言相对应。该系统支持用户对代码和输出的图形进行双向交互修改,让编程学习者能更直观地感受到每部分代码的作用,起到更好的学习效果。即用户可以以一种“所见即所得”的方式编程,代码和图形的更新可以实时地显示。例如用户改变矩阵的参数(如大小),图形界面可以马上反映;同理,用户通过交互拖拽改变矩形位置,代码也会实时更新。
图 3 可视化编程案例三Sketch-n-Sketch的用户界面
Michael McGuffin教授从这三个案例出发,引发听众思考,这三种可视化编程系统有何不同?这些系统如何能够被更广泛的应用?针对以上问题,Michael McGuffin教授将每个系统分为指令(Instruction)和内容(Content)两部分,并将这三种系统与传统的编程语言JavaScript + HTML,以及C# + Unity,从五个维度进行了对比:内容静态性、内容动态性、双向更新性、图灵完备性(Turing-complete)、和图形界面完备性(GUI-complete)。通过对这些可视化编程系统进行分类(图4),可以帮助我们更好地理解它们之间的共性和区别,并对可视化编程系统开发提供指导。
图 4 三个可视化编程系统与两种传统编程语言框架在五个维度上的比较示意图
在此基础上,Michael McGuffin 教授通过考虑用户操作-指令(Instruction)和内容(Content)的不同方式,即直接操作(Direct Manipulation)或其他方式,以及指令和内容之间如何相互影响,进一步对所有的编程语言进行了分类,共划分了8个类别(图5)。该分类方法能够使研究人员和设计师更容易理解可视化编程语言(Visual Programming Language)和其他类型语言如何相互关联, 以及如何扩展它们。
图 5 基于用户操作指令和内容方式,以及指令和内容之间相互影响的编程语言分类方法示意图
最后,Michael McGuffin教授提出了几个可视化编程领域未来的研究方向:1、构建能够使用户在可视化编程语言(如Blockly)和文本输入之间轻松切换的系统。2、开发能将可视化编程和文本输入结合的工具。3、为有限状态机(Finite-state machine)开发一个双向的编程系统。4、构建允许在文本源代码和不同的视觉表现之间进行多种映射的集成开发环境。5、构建一个可以完全通过对内容(Content)的操作来实现图灵完备的系统。
在提问环节,在线观众积极发表了自己的观点并参与了讨论。大家踊跃地提出了自己的问题,例如“可视化编程是否支持像素级别的渲染”,Michael McGuffin教授给出了肯定的答案,之前提到的Scratch就具有改功能;“可视化编程应用在学术界和工业界有什么主要区别”,Michael McGuffin教授认为在工业界通常会对系统有具体的要求,在实现过程中只需考虑主体任务,有时并不会在乎图灵完备性;“可视化编程如何平衡流畅性和可用性”,Michael McGuffin教授认为在必要时可以删除不必要的功能来保证系统的流畅运转。此外,在与大家的交流与讨论中,Michael McGuffin教授也表示可视化编程与Visualization authoring tool、交互式AI等领域的结合也是值得研究的方向。
本次活动由专委会委员,复旦大学大数据学院陈思明副教授主持,复旦大学合作支持。第三期报告将于2021年10月21日上午9:00-10:30举办,邀请了来自美国威斯康星大学麦迪逊分校的Michael Gleicher教授作为嘉宾讲者。
CSIG图像图形中国行承办方征集中