《交互式程序设计 第2版》一1.2.1 交互的本质

1.2.1 交互的本质

那么,“交互”到底是什么呢?我们可以把它定义为双方或多方之间的信息交换。作家及电子游戏设计师Chris Crawford把交互描述为“两位及两位以上的参与者相互间听、想和说的过程”。通常谈及交互的时候,无法避开编程,因为交互中总有计算机系统或其他控制结构让人们去操控。计算机或机械系统是为 “用户”而设计的,“用户”所使用的就称为“系统”。关于交互,流行着各种各样的专有名词,例如“人机交互”、“机人交互”和“体验设计”等,事实上它们的含义大同小异:设计某种系统,为人们提供某种他们可理解的交互方式。作为一名交互设计师,你会尽力去理解用户想做什么,以及自己设计的系统应该如何反馈。你的系统可以是任何东西,例如游戏、菜单、若干连在一起的传感器和灯、一个复杂的物理交互应用等,甚至可以是其他人。
你还应该理解交互设计中的一个重要概念:反馈回路。反馈回路是指一个实体为适应内部或外部调节系统而与自身通信的过程。听起来有点复杂,其实你对此早已熟悉,例如我们的生物调节系统、流汗散热、呼吸保持氧气在体内循环、眨眼避免眼干等。当你需要更多氧气的时候,你会深呼吸,你不需要刻意“通知”身体作出这些反应,你的身体自己会去完成。为了保持体内一定的含氧量,身体发出信号,增加呼吸深度或频率,直至达到所需要的含氧量。身体向自身反馈,向自身发送信号,不断增加自身的呼吸,达到所需水平后则停止发送信号。关于反馈,类似的例子还有骑自行车,调整着平衡是不断反馈的过程,即脑部向身体发送信号,身体向脑部反馈信号,这样才能让你保持平衡。对于一个持续工作的系统而言,反馈回路非常重要,如果没有反馈,系统就不知道自己在做什么,因而也就无法进行自我调整。
我们来看看怎样从“消息发送”变为“交互”。假设其中发送方享有主动权,接收方只能收但无法给出回应,这种情况只有信息传递,谈不上“交互”。你会很容易联想到电视广播或电台广播。在合适的时间、地点,加上合适的设备,你就能看到或听到相应的信息。而广播并不考虑谁在看、谁在听,只会按它自己的时间表和节奏进行。
在此基础上,如果用户可以重新收看(听)节目,或者可以自己决定收看(听)的时间,这就增加了一个用户控制层。其实你并不是真的能和一本书或是一个静态网页进行交互,甚至对于大多数动态网站你也做不到,但你可以控制浏览的速度,可以重新阅读那些你没有看懂的内容。这其实就是导向传播。它向你提供了一系列预设的内容,让你选择要看的部分。滚动页面、点开链接、快进和回退等都属于导向传播的手段。
我们再进一步,向用户提供一些方法去完成一个任务或者向系统输入数据,真正改变系统的状态,同时也制定了一些方法,让系统去反馈用户的动作。这样,你就建立了交互。反应式交互是交互的开始,它让你开始考虑用户要做什么,你的系统或对象应该如何反应。对于用户的任何动作,系统或对象都必须作出反应,就算无法给出用户期望的反应,也必须告诉用户“我不明白”或者其他错误信息。这些功能可以在一个系统内实现。这一类的应用程序不少是用来监控系统自身状态的,例如检查系统中的某一个属性当前的状态,或者确认仓库里箱子的数量。如果把这些套用在两个人之间的交互,你可能会想到父母向孩子给出指令。
再复杂一点,这一次系统持续做着一件事,而用户可以通过向系统输入信息来控制和调节这件事。很多工业监控系统就是这样工作的,同样的还有游戏引擎的主要部分及很多其他交互装置。建立这一类交互的难度在于,确保用户在任何时候都清楚系统正在做什么,知道他们可以怎样改变系统,并且明白他们对系统任何一方面的改变都会影响到其他方面。再把这些套用到两个人之间的交互,这回是父母教孩子走路,随时留意着孩子会不会摔倒。另一个例子就是调节系统,在用户执行任务时调节他们。这里,双方之间并没有真正的沟通,因为调节系统并没有给出反馈,它只是在改变对方的行为,当中还包括连续系统。系统也可以自己完成此类任务,它能实时监控和调整正在进行的过程。
以上最后提到的那种交互模式与学习模式的交互类似,但要稍微复杂一点。系统同样在持续运行;用户可以看到系统的内部,但不再是调整自己的行为,而是从输出数据中学习。很多监控系统就是这样运作的。系统让用户看到相关的数据,以此让用户使用和了解处理的过程。当然,系统还是没有与用户交谈,它只是在运转的同时向用户报告信息。用户的操作受系统报告的驱使,但没有被系统改变。这就是之所以把它称为“学习模式”的原因。这种模式下,系统和用户都更善于自我学习,当然两者所使用的方式有所不同。
现在我们来看一个更复杂的交互模式——管理型模式。用户和系统之间双向沟通信息,并且系统允许用户执行另外一个任务。真正的复杂性从这里开始。用户与系统通信,让系统执行某些任务。系统回应用户,让用户继续执行另外一个任务。系统依旧运行,用户也依旧工作,就算出现了用户的反馈回路,一切都依旧进行。从金融行业到医疗领域,很多实时监控应用程序就是这样的系统。
最后,我们来看看最复杂的交互模式:真正的对话。这在人和人之间的交流再寻常不过,但若发生在人和机器之间就是另一回事了,因为对话的构成是很复杂的。只要想一想我们如何通过字词、音调、面部表情、身体姿态、潜台词和上下文来相互对话,就能明白要有巨大的信息量被迅速交换和处理。当然,大部分人机对话远没有这般复杂。
一个简单但典型的例子是使用移动设备来导航。当用户频繁地移动并向设备提出请求时,设备就不断地更新位置信息,向用户反馈以及指出方向。实现对话模式的交互是交互设计和工程中最紧迫的挑战之一。各类模式的交互帮助用户完成不同的事情,实现起来各有难度。我们可以根据用户类型、任务目的和交互发生的语境来选择合适的交互模式。

时间: 2024-11-03 21:56:44

《交互式程序设计 第2版》一1.2.1 交互的本质的相关文章

《交互式程序设计 第2版》一1.2 交互领域中的编程

1.2 交互领域中的编程 这本书之所以名为<交互式程序设计>,是因为我们主要关注交互设计中要用到的编程知识,也就是用编程的手段,去创造用户能直接与之交互的应用.编程有很多种,其中有些技术和思维方法更适合用于服务器和数据库,而不是交互.而本书集中讨论的东西将是你用来建立用户和应用之间沟通的知识和技能.交互设计中的一大挑战是如何在你设计的作品和用户之间建立真正的交互. 1.2.1 交互的本质 那么,"交互"到底是什么呢?我们可以把它定义为双方或多方之间的信息交换.作家及电子游戏

《交互式程序设计 第2版》一2.2 代码的本质

2.2 代码的本质 你会从本章学习关于编程的知识,确切地说,就是写代码.所以你不仅需要知道什么是代码,还要知道代码是怎样参与编程过程的.在开始编程之前,先学习几个关键的术语.代码代码就是一系列让计算机执行的指令.运行代码,则计算机执行相应指令.代码由某种编程语言写成.跟自然语言一样,编程语言就是双方之间的一个协议.在代码中,这两方就是程序员和编译器.编译器我们稍后会学到,这里暂且把它看成是一个听得懂我们的代码的聆听者.代码可以简单得只是把两个数字加起来,也可以复杂得能渲染一部动画.归根结底,就是

《交互式程序设计 第2版》一1.1 本书读者对象

1.1 本书读者对象 本书基于这样一个目标:技术和代码不是计算机科学家和工程师的专用工具,任何人都不需要畏惧或逃避电子技术.硬件和代码.艺术家和设计师可能想知道,如何通过定制的计算机应用程序来更好地实现用户之间以及应用之间的交互.你可能会关心如何创造出富有科技感的应用,这里有两种情况,一种是该应用本身具有突出的科技特性,另一种是看上去很高科技或者使用了一些代表了科技力量的元素,例如键盘.鼠标和触摸屏.你也可能关注交互领域的其他方面,又或者希望把冰冷的技术隐藏于更具生命机理的界面之下.本书会介绍用

《交互式程序设计 第2版》一第3章

第3章 使用ProcessingProcessing是较早的开源项目之一,它简化了创建交互式图形应用程序的难度.它就像是艺术家和设计师的专用工具一样,你无需高深的编程技巧,也可以容易地用它进行艺术创作.Processing是完全开源和免费的,你可以下载.使用甚至修改它.最初,麻省理工学院的Casey Reas和Ben Fry在John Maeda的指导下开始这个项目,后来一组开发人员不断更新Processing的内核和工具.现在Processing的最新版本是1.5版译注1,提供的工具支持创建J

《交互式程序设计 第2版》一3.11 小结

3.11 小结 Processing既是一个集成开发环境,也是一门程序设计语言.它们是一体的,可以在processing.org/download上下载.Processing语言是基于Java语言的,但作了简化,以便帮助艺术家和设计师容易地建立可视化样本和交互式应用程序.Processing集成开发环境顶端的工具栏上有几个按钮.单击"Run"按钮可以运行程序:单击"Stop"按钮可以停止应用程序的运行:此外还有"New"."Open&q

《交互式程序设计 第2版》一1.5 数据交换与探索

1.5 数据交换与探索 交互设备的任务.目标和实现其交互的方式都很重要.与之前提到的一样,下面的分类并不是一个交互作品分类的完整清单,只是列举了一些最常见主题,为本书后面的内容提纲挈领一下. 支持数据可视化 我们身处的社会越来越以信息为中心,每天都有大量的数据在处理,数据可视化就变得越来越重要了.结构良好的数据可视化是一种有力的工具,它不仅让用户理解独立的数据点,还让用户明白数据点之间的关系,检测数据模式,甚至重新配置数据,或将其置于新的语境中.数据可视化不是向用户单方面灌输信息,而是通过和用户

《交互式程序设计 第2版》一3.9 导出Processing应用程序

3.9 导出Processing应用程序 如果你想看看应用程序运行情况,想检查代码,那么运行和调试的确很有用.但如果你要把应用程序与某个朋友分享,运行和调试就没有用了,需要做的是导出应用程序.第一步是点击菜单"File"→"Export Application",或者直接按Ctrl + E组合键(Mac OS X下是-E).会弹出如图3-10所示的对话框,让你选择程序将来运行所需的操作系统.如果你单击了Export(导出)按钮,会显示一个对话框,将当前应用程序所在的

《交互式程序设计 第2版》一导读

前 言 本书分三部分.第一部分(第1-6章)介绍贯穿本书的3个项目,第二部分(第7-10章)介绍交互设计和应用程序创作中最普遍的主题,第三部分(第11-17章)深入讨论相关进阶主题.当中还有对相关人士的采访,包括程序员.艺术家.设计师以及工具的开发者.本书涉猎如此广泛,无法对每一个主题进行深入探讨,有兴趣进一步研究的读者不妨参考书中所列出的书目.网站.设计师和艺术家. 本书包括及未包括的内容 当下交互设计领域迅猛发展,观念日新月异,笔者对此的兴奋之情难以言表.受时间和篇幅所限,无法囊括所有的方面

《交互式程序设计 第2版》一2.3.4 运算符

2.3.4 运算符 在程序中,运算符就是编译器用来执行命令和运算的符号,例如"="用来赋值,"=="用来比较等.运算符有三类:一是数学运算符,用于数学运算,就跟数学课上学到的一样:二是赋值运算符,用来改变变量的值:三是比较运算符,比较两个变量是否相等,谁大谁小. 数学运算符的用法就跟一般数学式子里的一样.用"+"可以把两个变量相加,例如: int apples = 5: int moreApples = apples + 3; // moreAp

《交互式程序设计 第2版》一3.4 Processing绘图基础

3.4 Processing绘图基础 因为Processing是为艺术家提供的工具,所以它简化了很多任务,其中最重要的一个任务是绘图.第8章和第9章会介绍利用矢量和位图绘图.第13章将介绍图形库OpenGL(Open Graphics Library)和一些3D(3 Dimension,三维)基础,以及如何创建复杂的绘图系统.在本节,你将学习如何绘制简单的形状和线条,以及如何创建颜色去填充它们. 3.4.1 rect().ellipse()和line()方法 有3个最简单的绘图方法rect().