命令行界面
计算机早期同时输入程序和数据(用纸卡 / 纸带),运行开始直到结束,中间没有人类进行操作,原因是计算机很贵,不能等人类慢慢输入,执行完结果打印到纸上。
到 1950 年代,计算机足够便宜 + 快,人类和计算机交互式操作变得可行,为了让人类输入到计算机,改造之前就有的打字机,变成电传打字机。
到 1970 年代末,屏幕成本足够低,屏幕代替电传打字机,屏幕成为标配。
人机交互 Human-Computer Interaction。
早期输出数据是打印到纸上,而输入是用纸卡 / 纸带一次性把程序和数据都输入进去。
QWERTY 打字机的发展,肖尔斯发明于 1868 年。
电传打字机 Teletype machine。
命令行界面 Command line interface
ls 命令
早期文字游戏 Zork(1977 年)
cd 命令
输入输出,都是计算机组件互相输入输出。比如 RAM 输出数据,或输指令进 CPU。
计算机接收人类的输入,怎么从电脑中拿出信息,除了用打孔纸卡。
有很多种“输入输出设备”,让人类和计算机交互,它们在人类和机器间提供了界面。如今有整个学科专门研究,叫“人机交互”。界面对用户体验非常重要。
纸带 / 纸卡
早期机械设备,用齿轮,旋转和开关等机械结构来输入输出。这些就是交互界面。甚至早期电子计算机,比如 Colossus 和 ENIAC,也是用一大堆机械面板和线来操作。输入一个程序可能要几个星期,还没提运行时间。运行完毕后想拿出数据,一般是打印到纸上。打印机超有用,甚至,查尔斯●巴贝奇(由于提出差分机和分析机的设计概念,被视为计算机先驱)给差分机专门设计了一个。然而,到 1950 年代,机械输入完全消失,因为出现了打孔纸带和磁带,但输出仍然是打印到纸上。还有大量的指示灯,在运行中提供实时反馈。那个时代的特点是 尽可能迁就机器,对人类好不好用是其次。打孔纸带,就是为了方便计算机读取,纸带是连续的,方便机器处理,纸孔可以方便的,用机械或光学手段识别,纸孔可以编码程序和数据,当然,人类不是以纸孔方式思考的,所以负担放到了程序员身上。要花额外时间和精力转成计算机能理解的格式,一般需要额外人员和设备帮忙,基本上 1950 年前的早期计算机“输入”的概念很原始。人类负责输入程序和数据但计算机不会交互式回应。程序开始运行后会一直运行,直到结束。因为机器太贵了,不能等人类慢慢敲命令和给数据。要同时放入程序和数据。
一方面,小型计算机变得足够便宜,让人类来回计算机交互,变得可以接受。交互式就是人和计算机来回沟通。另一方面,大型计算机变得更快,能同时支持多个程序和多个用户,这叫“多任务”和“分时系统”,但交互式操作时,计算机需要某种方法来获得用户输入。所以借用了当时已经存在的数据录入机制:键盘。
当时,打字机已经存在了几个世纪了,但现代打字机是肖尔斯 在 1868 年发明的,虽然到 1874 年才完成设计和制造,但之后取得了商业成功,肖尔斯的打字机用了不同寻常的布局,QWERTY,名字来自键盘左上角按键。为什么这么设计,最流行的理论是,这样设计是为了,把常见字母放得远一些,避免按键卡住。这个解释虽然省事,但可能是错误的,或至少不够全面。事实上,QWERTY 把很多常见字母放一起,比如 TH 和 ER。有很多键盘版本出现,但是人们不想再去学习新的布局,这是经济学家所说的,转换成本。QWERTY 不是通用的,有很多变体,比如法国 AZERTY 布局,以及中欧常见的 QWERTZ 布局。
法国 AZERTY:
中欧 QWERTZ:
有趣的是,肖尔斯根本没想到打字会比手写快,手写速度大约是每分钟 20 个,打字机主要为了易读性和标准化,而不是速度。然而随着打字机成为办公室标配,对速度打字的渴望越来越大。有两个重大进步,解放了打字潜力,1880 年左右,伊丽莎白●郎利 老师,开始推广 十指打字,比一个手指打字要移动的距离短得多,所以速度更快。几年后,弗兰克●爱德华●麦克格林,学会了盲打,打字时不用看键盘,之后“十指盲打”就开始流行。虽然,人类擅长用打字机,但没办法把打字机塞到计算机前面,让它打字,所以早期计算机用了一种特殊的打字机,是专门用来发电报的,叫“电传打字机”。
这些打字机是强化过的,可以用电报线发送和接收文本,按一个字母,信号会通过电报线,发到另一端。另一端的电传打字机会打出来。使得两个人可以长距离沟通。因为电传打字机有电子接口,稍作修改就能用于计算机,电传交互界面在 1960~1970 年很常见。
用起来很简单,输入一个命令,按回车,然后计算机会输回来。用户和计算机来回“对话”。这叫“命令行界面”,它是最主要的人机交互方式,一直到 1980 年代。
用电传打字机的命令行交互 类似这样:用户可以输入各种命令,先看当前目录有什么文件,输入命令 ls,名字来自 list 的缩写,然后计算机会列出 当前目录里所有文件。
早期,机械面板和线,输入;纸上,输出。
1950 年代,打孔纸带和磁带,输入;纸上,输出。
键盘,十指盲打。
电传打字机,电传交互界面。
电传打字机的命令行交互。