从锦囊妙计想到的15–让我们了解程序运行情况与参与程序的运行

本文是 从锦囊妙计联想到的15集(中间跳过了一个编号, 那个不吉利)

这个文章重点研究一下window和android里面的activity他们的作用

本文是上一集的延续,继续说一下如何与程序运行的, 了解程序运行的必要性。

一。人机交互的必要性

在本系列的最开始, 说过 计算机是个 笨东西, 你给他安排了什么工作他就做什么工作, 你说错了, 他也会重复错的, 你牵来一只羊, 对计算机说这个是马, 计算机就认为这个是马, 他没有智能不能自己思考(有一类特殊程序例外, 后面我们会慢慢谈到这个的), 因此你说了什么他就认为什么。这个就是计算机, 就是一个忠实的程序员的信徒。

那么随着程序员编写程序的功能的变多, 功能多了, 程序复杂了, 程序可能错的情况就多了, 因此需要在程序运行过程中, 让外面的人了解程序运行的状况, 看程序是否还在正常运行。

另外 有时候程序运行时还需要用户提供一定的信息和数据, 例如到一些政府部门去办理业务, 他们操作的也是计算机, 但是需要您自己提供一些数据等, 这样程序才能继续进行操作。

再有有些程序需要用户的积极参与才能运行, 例如电脑游戏,需要用操作电脑终端,进而操作计算机里面的角色, 参与计算机程序的运行。这样用户相当于进入了一个新的思想世界,参与其中。

那么如何 了解程序内部,或者操作程序内部, 计算机如何将内部信息展示给外部世界?

这种计算机内部通过一定手段同操作人员或者使用人员进行交互的过程就叫做人机交互

二。人机交互的必要功能和窗口

1. 为什么要计算机先输出信息给人

人机交互的第一个事情是, 计算机要如何展示内部的信息给外部,这样别人才能了解他。

为什么不是 人主动下命令给计算机? 不主动要求计算机做事情?

原因是计算机智能有限或者没有, 他没办法理解 更丰富的人类语言,包括文字的, 语音的, 手势等等 。

因此计算机 仅仅能接受 特定的 , 事先约定的, 要求人类遵守相关要求的 一些输入, 例如, 在特定地方 点击一下, 在特定地方说一句特定的话, 或者打一个特定的字符等等

好了 , 那么还是回到 输出上。

2. 计算机的操作系统

最常见的 计算机输出 就是计算机 启动时  计算机扬声器 发出的一个 自检的声音, 通过这个身影你能确定 计算机已经可以启动了。

另一个 非常常见的 输出是 你手机启动时 炫丽的声音,当热现在还有 动画或者其他信息, 这个都是计算机在通知用户, 他工作了, 他已经启动了。

这些都说明一个事情, 就是计算机  启动后, 先输出一下信息说明他 可以工作了。 然后 等等 用户下达后续的命令。

用户这个时候, 及时下达命令,例如启动 微信, 或者qq, 或者网页, 其实都是在同计算机里面一个程序打交道, 这个程序的任务就是同  用户沟通, 替用户 管理他计算机里面的其他程序, 比如打开程序, 关闭程序, 管理文件, 管理资料等等。

这些使用人员的一些列操作 都是在这个辅助程序的 协助下进行的, 这个协助用户进行操作的程序, 叫做 操作程序。 但是由于这个程序本身就是一个非常复杂的, 非常功能多的 多个程序构成的 是一个系统。 因此这个程序通常都叫做 操作系统。

什么是操作系统?   就是协助用户管理计算机的, 操作计算机的, 一堆程序的总称的, 他本身也是个程序。 这个程序叫做 操作系统。

通常的 操作系统  windows , 这个是大家 最常见的, 有 windows7 , windows 10, 以前还有 windows xp, windows 2000, windows 95, windows 98等等。

当然还有管理手机的 android, 常见的 android手机都是 android操作系统。

另外, 一个常见的系统就是 苹果的 操作系统, 手机的是 ios系统, mac系统(笔记本的)

在有的常见的操作系统是 linux系统, linux是个总称, 有很多基于linux进行改造的系统, 例如centos, ubuntu, redhat等等。

其实, 苹果的mac, ios, android底层都是基于linux的,只是在linux系统上面添加一些东西而已。

linux从哪里来, linux其实是从unix 系列演变而来, 是参照unix的思想, 从新编写的开发源代码的系统。

当然计算机操作系统还有很多。

3. 事先约定的输入

回到前面,计算机无法全面里面人类丰富多样语言、手势、各种肢体语言等等, 因此他仅仅能理解特定的信息。

因此计算机设定了一些输入给他的一些限定, 例如你必须 点击特定位置的特定东西。

上图中, 您必须点击 特定的红色区域才能启动一个功能

下面的区域做任何点击都没有反应, 因为这个就是 计算机给人的约定。

上图, 通常的windows的没有语音进行控制的功能, 那么是否真的没有?或者做不到。

现在已经有厂家开发出了通过声音控制计算机的一些东西, 但是要求在计算机上安装一些必要设备, 然后这些设备接收特定约定的声音, 然后通知操作系统进行相关的操作。

 4. 获取信息的窗口

人类居住的房屋, 都有一个共同的特点, 必须有门, 没门就没办法进入了。 但是除了门以外还有一个重要的单位, 就是窗户, 古代我们窗户上有是用纸糊的,可以保暖, 也可以打开, 让人通过窗户看到外面的世界, 也可以通过窗户开到屋里的一些事物, 特别注意不是全部的世界, 因为有些无法在窗户中显示来的, 例如屋里面窗户下面的东西就未必能显示出来的。

到了近代玻璃的普及才有了玻璃窗, 更加能让人了解外面, 也更加能让外面的世界了解里面。

可以知道, 窗户是一个 交互信息的 方便设施, 可以让外面的人了解里面的人, 也可以让外面的人了解里面的事情。

计算机中完全借用了这个窗户的设施, 计算机把程序里面的一些信息显示在窗户上, 然后用户看到窗户上的东西, 然后在需要点击的地方点击, 需要输入的地方输入等等。

这样就完成了一个 输出和输入的交互过程。

总结一下, 通过窗口能

1. 通过窗口看到程序里面的信息, 了解工作进行状况

2. 通过窗口用户可以点击,程序约定的一些位置,东西来给窗口内程序进行输入,

总之窗口就是交互的界面, 通过这个窗口将用户和程序分隔开来, 同时又通过这个窗口来让用户和程序联系起来。

window 就是窗口的英文, windows就是很多窗口。

windows是什么就是一个管理很多窗口的程序, 因此微软的可视化操作系统就是windows系统, 其实含义就是管理很多 窗口的程序。

那么一个程序可以有多个窗口吗?

看上面的程序, 就是一个程序里面有多个窗口的例子

在看一个linux下的例子

上面是一个 linux版本的窗口系统。

可见窗口系统就是一个可以用眼睛直观看的信息的,然后直接进行点击等各种操作的。

下面是一个字符的接口界面

这个系统是一个非窗口系统, 这个系统也可以用眼睛看, 但是都是文字, 需要我们阅读后, 理解, 然后在决定相关操作。这个非窗口系统的特点是 不直观, 需要用户有专业知识或者更多理解能力来进行

下面在来一个非窗口系统看看

如上图, 是一个典型的 非窗口系统, 上半部分是程序提示给用户的一些信息, 通过这个用户能了解程序工作的一些情况, 这些就是 输出的信息。

最后程序输出一个“输入本机的  名称:default(none)”的内容, 这个典型的提示用户输入了, 这就是典型的 双方约定的输入,更准确的说是 程序给用户的约定, 用户必须遵守这个约定来, 输入信息这个时候。

通过上面两个非窗口的系统, 可以对比了解一下窗口系统。 窗口系统对大部分人都很友好, 但是非窗口系统对一部分特定人群也是有用的。

 

三。 activity的作用

activity是android里面的一个概念。

本质上activity同上面的窗口是类似的, 他有一个界面用来显示用户的信息, 然后用户在这个节目上输入用户的要求的东西

上图是个典型的activity的图形, 可以看到他同窗口有多么的像, 其实不仅像, 他同窗口一样都是基于事件的编程思想, 就是换了个名称。

他们都有生命周期, 都有事件, 都有主线程, 都有消息队列。

区别, 名称不同, 生长的地方(存在的地方)不同, 一个在台式机或者笔记本电脑上, 一个在手机或者平板上。

四。交互界面种类

前面重点说明了窗口系统的交互系统

这个系统其实就是gui系统。

其实还有一些cui系统, 这个是基于字符的系统, 在谈窗口系统中已经提到了cui系统

gui和cui都是 计算机如何同用户进行交互的一个方式。

出了这些方式还有没有别的方式?

是否可以存在下面的方式

1. 计算机通过音响或者喇叭广播声音给用户, 然后用户通过语音来说明自己的要求和输入, 然后计算机进行相关工作, 这个好像有很多地方已经有了, 但是不是特别成熟, 例如一个 北京人的声音, 和一个四川人的声音,说同样的话结果未必一样的。 但是这个交互方式慢慢会多起来会好的。

2. 是否可以通过脑电波来传递信息, 例如计算机输出一些信息通过脑电波给人类, 然后人的脑活动产生的脑电波给计算机然后就完成工作了。 这个好像是科幻里面的, 但是将来也许是非常普通的。

 

好了本期就这些了, 本期主要说明了窗口系统, 其实是个交互界面, 是一个基于事件的编程方法。 后续还会说明 基于函数(过程)的编程, 面向对象的编程, 面向消息的编程等, 最后会重新说明基于事件的编程。

下次在说。

 

相关文章

计算机介绍                                  从锦囊妙计想到的01

流程图(分支结构)介绍          从锦囊妙计想到的02

线程介绍                                     从锦囊妙计想到的03

循环结构介绍                             从锦囊妙计想到的05

流程线程总结                             从锦囊妙计想到的06

cpu和线程定义、开始               从锦囊妙计想到的07

分布式计算                                  从锦囊妙计想到的08

分布式中事件和计数                 从锦囊妙计想到的09

内容总结                                     从锦囊妙计想到的10

数据类型,变量简介                从锦囊妙计想到的11

函数和参数                                从锦囊妙计想到的12

用户交互与数据输入输出       从锦囊妙计想到的13

人机交互界面                            从锦囊妙计想到的15 

过程与对象                                从锦囊妙计想到的16

同步和异步                                从锦囊妙计想到的17

顺序打印                                    从锦囊妙计想到的18

数据输入输出                            从锦囊妙计想到的19

屏幕坐标和打印                        从锦囊妙计想到的20

java函数控制输出                     从锦囊妙计想到的21

逐步细化解决复杂问题           从锦囊妙计想到的22

java入门                                    从锦囊妙计想到的23

java复杂过程分析                   从锦囊妙计想到的25

中间辅助功能解决问题          从锦囊妙计想到的26

叠加操作输出复杂图形          从锦囊妙计想到的27

时间和空间                               从锦囊妙计想到的28

编写边测解决问题                  从锦囊妙计想到的29

让程序动起来                          从锦囊妙计想到的30

程序往复运动                           从锦囊妙计想到的31