
1.2 人机系统结构
我们学习Python语言的目的是用它来操作机器(通常称这样的机器为计算机),然后机器会进行某些操作,进而影响我们的社会生活,这样看来各要素都是紧密相关的,而它们之间的关联关系可以用图1-4来描述。

图1-4 人机系统结构示意
在日常生活中,人们可能会有各种各样的需求,如购买咖啡。在有这个需求时,我刚好知道某条小巷里有家不错的咖啡馆,基于这一领域知识,我就去了这家咖啡馆(见图1-5)。为了喝到咖啡,我不得不向咖啡馆内的营业员说明我想喝的咖啡。营业员的业务很熟练,摆弄着各种我不知道用途的瓶瓶罐罐,不一会儿,她就将一杯热腾腾的卡布奇诺摆在了我面前的桌子上。我一边感慨着她精湛的技术,一边慢慢品尝着咖啡。在秋日的午后来上一杯是最惬意不过的事情了。在喝完咖啡后,我支付了咖啡钱并致谢,然后就离开了。

图1-5 咖啡馆场景
现在,我们从系统的角度来分析一下上述场景所涉及的元素之间的关系。首先,可以发现图1-4左侧所示的椭圆代表我生活的社区(环境),而喝咖啡是我在社区生活中的一项重大“需求”,基于我对社区生活的了解(领域知识:哪家店何时开门,哪家店的咖啡最好喝),我选择了A咖啡店。请注意,此处的A咖啡店整体(包括它的硬件设施和人员)成为满足我需求的解决方案,是不是可以将其看成一台为我服务的很大的机器呢?从抽象层面上来讲是没有问题的。我不用搞清楚这台机器是怎样运作的(说实话我对咖啡的制作技巧一窍不通),我只需对着这台机器的界面(营业员)说出我想要喝的咖啡就行了,她的操作细节和她所使用的所有工具都不是我需要关心的事情。
不过生活也并非总是美好的,有一段时间我出差在外,能满足我需求的“机器”变成了真的机器。如图1-6所示,这台机器不会笑,甚至不会对我讲话,只是提供几个按钮用以表示咖啡种类。在我做出选择后,它的表面开始闪烁,并显示文字,提示我向投币口塞硬币,我只好照做。在投币后,它好像没那么“生气”了,没有继续闪烁。只听见一阵响声,然后“啪”的一声,一只杯子掉了出来,之后咖啡就从上面的管子里流出来,等到它快加满的时候,机器又闪烁起来,提示我赶快把咖啡端走。我端着盛满咖啡的纸杯子,站在门外一边透气一边无奈地喝起了这杯“苦涩”的咖啡。

图1-6 咖啡机场景
从结构上来看,上述两个场景是很相似的。对于同一种需求,在不同的场景中有不同的“机器”参与进来,虽然“机器”的界面和内部运作方式各异,但最终都给出了能够满足需求的解决方案。对于喝咖啡的这个需求,我还是更喜欢社区咖啡馆营业员手工调制的咖啡。但是在另一些场景中,比起与人打交道,我们可能会更喜欢真正的机器所带来的便捷和高效。例如,在手机上就能实现的转账功能,让我们不再需要去银行营业网点(可能排很长时间的队),然后麻烦柜员帮我们处理转账业务。
可以说,用Python写的代码(程序代码)在机器硬件(程序平台)的支持下,可以通过界面实现人机交互,最终满足使用者的需求。将加载了各种Python指令的机器嵌入适当的场景,就能满足多种需求。由于电力驱动的机器不知疲倦且运转快速,所以常被用于满足人们大量的全天候、高并发需求。现在使用手机点餐的服务,使得整个区域内的餐饮行业都被集成为一台“超大型机器”,餐馆、送餐员、道路交通设施等都通向一个界面,那就是手机屏幕。
更宏观地来讲,手机屏幕这个界面已经将相关领域内海量的可利用资源整合成了一个超大型的机器,我们可以通过这个界面与机器进行交互。而Python代码作为界面与机器硬件的指挥员,在这个人机系统中发挥着重要作用。当然,Python也可以被其他程序语言所替代,但就目前的趋势来看,Python受欢迎的程度还在不断攀升,尤其在数据分析这个领域,Python几乎占据了主导地位。利用Python可以很方便地实现很多数据操作,从数据的采集到数据的清洗,再到数据的存储与管理、数据的统计与分析、分析结果的可视化及基于分析的决策系统开发等。