文章目录
- 硬件接口
- IDE
- SCSI
- SATA
- 光纤通道
- 游戏设备
- RAID卡
- USB
- MD设备
- MP3
- 视频
- 音频
- 软件接口
- Java里的接口
- 面向对象的接口
- 聊聊软件接口
- 1. 什么是接口
- 2. 诞生
- 3. 早期(1950-1970)
- 4. 快速发展(1970-1990)
- 5. 多元化发展(1990-2010)
- 6. 新时代的应用接口(2010-)
- 小结
- 参考资料
硬件接口
硬件接口(hardware interface)指的是两个硬件设备之间的连接方式。硬件接口既包括物理上的接口,还包括逻辑上的数据传送协议。
IDE
IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容。对用户而言,硬盘安装起来也更为方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘无法替代的地位。
IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。
SCSI
SCSI的英文全称为“Small Computer System Interface”(小型计算机系统接口),是同IDE(ATA)完全不同的接口,IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。
SATA
使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。串口硬盘是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而知名。相对于并行ATA来说,就具有非常多的优势。首先,Serial ATA以连续串行的方式传送数据,一次只会传送1位数据。这样能减少SATA接口的针脚数目,使连接电缆数目变少,效率也会更高。
光纤通道
光纤通道的英文拼写是Fibre Channel,和SCSI接口一样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的,它的出现大大提高了多硬盘系统的通信速度。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等。
光纤通道是为在像服务器这样的多硬盘系统环境而设计,能满足高端工作站、服务器、海量存储子网络、外设间通过集线器、交换机和点对点连接进行双向、串行数据通讯等系统对高数据传输率的要求。
游戏设备
指游戏设备与电视机或电脑主机之间的接口类型。具体有与电视机相连的AV接口,与电脑主机相连的串口、USB接口、PCI接口、I-LINK(四针IEEE1394接口)、连接声卡的MIDI接口、无线接口等等。
RAID卡
当然IDE RAID也有其缺点,比如在CPU占用率和连接设备数量等方面就无法与SCSI RAID相比,同时,IDE RAID目前为止还只支持RAID0、RAID1和RAID0+1,并且性能上也比SCSI RAID略逊一筹,因此高性能计算机应用方面还是以SCSI RAID为主。SATA RAID是刚刚诞生的RAID方式,它与IDE RAID类似,最大的优点是低成本,其他方面也和IDE RAID接近。
是指RAID卡支持的硬盘接口,主要有三种:IDE接口、SCSI接口和SATA接口。
RAID技术问世时是基于SCSI接口,因其成本高,因此主要面向服务器等高端应用。普通用户根本无缘拥有RAID。随着计算机的大众化,由此带动PC计算机的空前繁荣。相应的,在市场的带动下,用于PC计算机的IDE接口设备价格大幅降低,同时性能大幅提高。鉴于此,RAID技术开始移植到IDE接口上,推出了基于IDE接口的RAID应用,称为IDE RAID。而基于SCSI接口的RAID应用则相应称为SCSI RAID。与SCSI RAID相比,IDE RAID具有极低的价格,和一点也不逊色的性能表现,相应的,IDE RAID 解决方案就具有SCSI RAID无法比拟的高性价比。因此 IDE RAID自推出后,受到普通PC用户和普通商业应用的普遍欢迎。
USB
USB接口:鼠标、摄像头、u盘都是使用USB接口的设备,如果想要使用他们就必须连接在USB接口上,这些设备的接口必须遵守USB接口的规范才能通过USB接口来使用。 [1]
MD设备
MD设备接口(港台称之为埠)指的是MD(Mini Disc)产品具有哪些输入输出的接口。首先作为MD产品,耳机的输出接口自然是必须有的。除了基本的耳机输出接口之外,录放型产品还应该具有线路输入的接口,这样才能够把MD和其它播放设备相连接,把播放的音频输入MD并且将其录制到MD片上。NetMD产品还应具有USB接口,这样才能够和电脑相连接,从而能够进行文件的传输。有的产品还具有麦克风的接口,可以把外部的声音通过MD录制下来。
MP3
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecsLFYbK-1669777272153)(https://bkimg.cdn.bcebos.com/pic/21a4462309f79052416016320cf3d7ca7bcbd5bb?x-bce-process=image/resize,m_lfit,w_440,limit_1)]三种接口方式的对比
MP3播放器常见接口包括并口(EPP)、USB接口和IEEE 1394接口,早期的一般是并口,由于传输速度的限制,并口的MP3已被淘汰。如今市面上的MP3接口基本是USB接口,优点在于传输速率快和支持热插拔。还有一类MP3使用1394接口,随着MP3容量的增大,相信在这方面会有更多人关注,因为速度越快,在容量大的机器上就体现出它的好处了。
视频
1.射频
天线和模拟闭路连接电视机就是采用射频(RF)接口。作为最常见的视频连接方式,它可同时传输模拟视频以及音频信号。RF接口传输的是视频和音频混合编码后的信号,显示设备的电路将混合编码信号进行一系列分离、解码在输出成像。由于需要进行视频、音频混合编码,信号会互相干扰,所以它的画质输出质量是所有接口中最差的。有线电视和卫星电视接收设备也常用RF连接,但这种情况下,它们传输的是数字信号。
2.复合视频
不像射频接口那样包含了音频信号,复合视频(Composite)通常采用黄色的RCA(莲花插座)接头。“复合”含义是同一信道中传输亮度和色度信号的模拟信号,但电视机如果不能很好的分离这两种信号,就会出现虚影。
3.S端子
S端子(S-Video)连接采用Y/C(亮度/色度)分离式输出,使用四芯线传送信号,接口为四针接口。接口中,两针接地,另外两针分别传输亮度和色度信号。因为分别传送亮度和色度信号,S端子效果要好于复合视频。不过S端子的抗干扰能力较弱,所以S端子线的长度最好不要超过7米。
4.色差
色差(Component)通常标记为Y/Pb/Pr,用红、绿、蓝三种颜色来标注每条线缆和接口。绿色线缆(Y),传输亮度信号。蓝色和红色线缆(Pb和Pr)传输的是颜色差别信号。色差的效果要好于S端子,因此不少DVD以及高清播放设备上都采用该接口。如果使用优质的线材和接口,即使采用10米长的线缆,色差线也能传输优秀的画面。
5.VGA
VGA(Video Graphics Array)还有一个名称叫D-Sub。VGA接口共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。使用VGA连接设备,线缆长度最好不要超过10米,而且要注意接头是否安装牢固,否则可能引起图像中出现虚影。
6.DVI
DVI(Digital Visual Interface)接口与VGA都是电脑中最常用的接口,与VGA不同的是,DVI可以传输数字信号,不用再经过数模转换,所以画面质量非常高。很多高清电视上也提供了DVI接口。需要注意的是,DVI接口有多种规范,常见的是DVI-D(Digital)和DVI-I(Intergrated)。DVI-D只能传输数字信号,大家可以用它来连接显卡和平板电视。DVI-I则可以在DVI-D和VGA间相互转换。
7.HDMI
HDMI(High Definition Multimedia Interface)接口是新出现的接口,它同DVI一样是传输全数字信号的。不同的是HDMI接口不仅能传输高清数字视频信号,还可以同时传输高质量的音频信号。同时功能跟射频接口相同,不过由于采用了全数字化的信号传输,不会像射频接口那样出现画质不佳的情况。对于没有HDMI接口的用户,可以用适配器将HDMI接口转换位DVI接口,但是这样就失去了音频信号。高质量的HDMI线材,即使长达20米,也能保证优质的画质。
8.IEEE 1394
IEEE
1394也称为火线或iLink,它能够传输数字视频和音频及机器控制信号,具有较高的带宽,且十分稳定。通常它主要用来连接数码摄像机、DVD录像机等设备。IEEE 1394接口有两种类型:6针的六角形接口和4针的小型四角形接口。6针的六角形接口可向所连接的设备供电,而4针的四角形接口则不能。
9.BNC
BNC全称是BayonetNutConnector(同轴电缆卡环形接口)接口主要用于连接高端家庭影院产品以及专业视频设备。BNC电缆有5个连接头,分别接收红、绿、蓝、水平同步和垂直同步信号。BNC接头可以让视频信号互相间干扰减少,可达到最佳信号响应效果。此外,由于BNC接口的特殊设计,连接非常紧,不必担心接口松动而产生接触不良。
音频
主流的音频接口有如下几种:
RCA模拟音频
RCA接头就是常说的莲花头,利用RCA线缆传输模拟信号是目前最普遍的音频连接方式。每一根RCA线缆负责传输一个声道的音频信号,所以立体声信号,需要使用一对线缆。对于多声道系统,就要根据实际的声道数量配以相同数量的线缆。立体声RCA音频接口,一般将右声道用红色标注,左声道则用蓝色或者白色标注。
S/PDIF
S/PDIF(Sony/Philips Digital Interface,索尼和飞利浦数字接口)是由SONY公司与PHILIPS公司联合制定的一种数字音频输出接口。该接口广泛应用在CD播放机、声卡及家用电器等设备上,能改善CD的音质,给我们更纯正的听觉效果。该接口传输的是数字信号,所以不会像模拟信号那样受到干扰而降低音频质量。需要注意的是,S/PDIF接口是一种标准,同轴数字接口和光线接口都属于S/PDIF接口的范畴。
数字同轴
数字同轴(Digital Coaxial)是利用S/PDIF接口输出数字音频的接口。同轴线缆有两个同心导体,导体和屏蔽层共用同一轴心。同轴线缆是由绝缘材料隔离的铜线导体,阻抗为75欧姆,在里层绝缘材料的外部是另一层环形导体及其绝缘体,整个电缆由聚氯乙烯或特氟纶材料的护套包住。同轴电缆的优点是阻抗稳定,传输带宽高,保证了音频的质量。虽然同轴数字线缆的标准接头为BNC接头,但市面上的同轴数字线材多采用RCA接头。
光纤
光纤(Optical)以光脉冲的形式来传输数字信号,其材质以玻璃或有机玻璃为主。光纤同样采用S/PDIF接口输出,其是带宽高,信号衰减小,常常用于连接DVD播放器和AV功放,支持PCM数字音频信号、Dolby以及DTS音频信号。
XLR接口
与RCA模拟音频线缆直接传输声音的方式完全不同,平衡模拟音频(Balanced Analog Audio)接口使用两个通道分别传送信号相同而相位相反的信号。接收端设备将这两组信号相减,干扰信号就被抵消掉,从而获得高质量的模拟信号。平衡模拟音频通常采用XLR接口和大三芯接口。XLR俗称卡侬头,有三针插头和锁定装置组成。由于采用了锁定装置,XLR连接相当牢靠。大三芯接口则采用直径为6.35毫米的插头,其优点是耐磨损,适合反复插拔。平衡模拟音频连接主要出现在高级模拟音响器材或专业音频设备上。
软件接口
接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。 [1]
接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
Java里的接口
Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。
Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为java结构层次上的顶层。
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了。
1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。
面向对象的接口
在C++中,一个类被允许继承多个类。但是在Java以后的语言不被允许。
这样,如果想继承多个类时便非常困难。所以开发方想出了新办法:接口。
一个接口内,允许包含变量、常量等一个类所包含的基本内容。但是,接口中的函数不允许设定代码,也就意味着不能把程序入口放到接口里。由上可以理解到,接口是专门被继承的。接口存在的意义也是被继承。和C++里的抽象类里的纯虚函数是相同的。不能被实例化。
定义接口的关键字是interface,例如:
publicinterfaceMyInterface{
public void add(int x,int y);
public void volume(int x,int y,int z);
}
继承接口的关键字是implements,相当于继承类的extends。
需要注意的是,当继承一个接口时,接口里的所有函数必须全部被覆盖。例如:
class Demo implements MyInterface{
public void add(int x,int y){
System.out.println(" "+(x+y));
}
public void volume(int x,int y,int z){
System.out.println(" "+(xyz));
}
public static void main(String args[]){
Demo d=new Demo();
d.add(10,20);
d.volume(10,10,10);
}
}
输出结果:
30
1000
当想继承多个类时,开发程序不允许,报错。这样就要用到接口。因为接口允许多重继承(,),而类不允许。所以就要用到接口。 [2]
聊聊软件接口
已剪辑自: https://www.jianshu.com/p/2710c83578b8
软件技术的发展是与硬件、网络协同发展的。例如智能手机与5G网络的普及,促进了移动应用软件技术的发展。本文尝试从软件接口技术发展的角度,对编程语言、软件技术在软件工程这几十年中的发展做个盘点。
目录
- 软件接口
- 诞生
- 早期(1950-1970)
- 快速发展(1970-1990)
- 多元化(1990-2010)
- 新时代应用接口(2010-)
- 未来的接口
1. 什么是接口
首先,让我们看看接口的概念。接口一词的英文原文是interface,原本就是一个计算机科学词汇。韦伯词典中的解释:
(n.) A boundary across which two independent systems meet and act on or communicate with each other. In computer technology, there are several types of interfaces.
• user interface – the keyboard, mouse, menus of a computer system. The user interface allows the user to communicate with the operating system. Also see GUI.
• software interface – the languages and codes that the applications use to communicate with each other and with the hardware.
• hardware interface – the wires, plugs and sockets that hardware devices use to communicate with each other.
(v.) To connect with or interact with by means of an interface.
其中名词形式的解释为:“独立系统之间的边界,信息跨越边界传送”。接口可以有多种类型:
- 用户界面:人机界面(user interface,UI)
- 软件接口:代码之间、软件硬件之间的接口(software interface)
- 硬件接口:线缆、插头、插座等等
如果按动词解释,则是指通过接口进行连接与信息交换的行为。
一般1和2都会视为软件系统的接口,本文着重介绍的也是这两类接口技术的发展。
2. 诞生
电子计算机诞生之初(ENIAC),就已经有接口在其中。首当其冲的还是用户界面,毕竟最初的计算机只能用来做数学运算。而科学家必须通过用户界面来操纵计算机。
最初的计算机ENIAC和操作它的人们
ENIAC的程序员们,还是女士,这时也尚未形成软件的概念。她们所用的输入设备是:插线板、线缆、物理开关;输出设备是:20组闪光灯🐶。
3. 早期(1950-1970)
通过操作接线板与开关的方式进行编程看似简单,但太容易出错。初代的计算机科学家考虑怎样能便捷的操作计算机,便开始设计程序语言。最初的程序语言是建立在机器之上的汇编语言,直接发指令操作机器的各种部件获得结果。
软件以及编程业早期,计算器设备还在不断研发与革新中,计算机还以大型机为主,操作系统也尚在雏形期,接口也是以用户界面、硬件接口为优先。这个时期的用户界面也还比较原始:以穿孔卡片、按钮、键盘、电传打印机、指示灯居占多数。这个时候还没有现代的显示器。
FORTRAN(Formula Translation,简称FORTRAN),直译理解为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言(比汇编高一级),广泛应用于科学和工程计算领域。第一代的FORTRAN公布于1954年,应用在IBM704计算机上。
ALGOL(ALGOrithmic Language),也是诞生在这一时期的通用编程语言。ALGOL诞生也是因为避免一家独大,而联合设计一种计算机无关的科学用程序设计语言。
值得一提的是,民航业很早就开展信息化建设。Sabre(军刀)是第一个在线预订系统,诞生在1960年,最初服务于美国航空公司。起初,Sabre 仅在纽约 Briarcliff Manor 的一个地点运营,配备两台 IBM ® 7090 计算机(1958年发布,可以使用汇编与FORTRAN开发程序)。到 1964 年底,这个新系统每小时处理 7500 个预订。在旧的手动卡系统中处理预订的平均时间为 90 分钟。Saber 将其缩短到几秒钟。Sabre 成为美国航空的巨大竞争优势,迫使其他所有航空公司都建立自己的预订系统。他们中的大多数人求助于 IBM。这是个联网的系统,而此时还没有发明TCP/IP。
SABRE终端
服务员在操作预定系统终端,可以看到,用户界面集成在终端机上(有键盘、打字机、卡片)
IBM7090
IBM7090,可以看到这时的程序输入还是纸带,这时还没有显示屏
ARPANET(美国国防部高级计划局网络),即阿帕网。1968年10月,美国国防部高级计划局和BBN公司签订合同,研制适合计算机通信的网络。并于1969年6月完成第一阶段的工作,组成了4个结点的试验性网络,称为ARPAnet。它被公认为是世界上第一个采用分组交换技术组建的网络。1975年夏天,ARPAnet结束试验阶段,网络控制权交给美国国防部通信局(DCA),DCA在ARPAnet基础上组建了美国国防数据网(DDN)。最终演变为后来的TCP/IP(1982)
这段时间最主要的成果是,各类计算机系统应用到军事、科学研究领域,并开始有了商业的应用,有了程序员岗位,编程语言发明,网络互联技术开始研究。
4. 快速发展(1970-1990)
时间来到20世纪70年代,计算机开始蓬勃发展,诞生许多重量级计算机技术公司。硬件软件开始分离,也产生了操作系统与应用软件的区分,因此也产生了应用程序接口,并且新的人机界面设计也不断出现。
1969年, IBM 开始软件硬件分离的策略。而在这之前,软件硬件是捆绑销售的,没有可独立销售的软件(因此几乎也谈不上开放式的软件接口)。软硬件的松绑为软件接口的发展提供了可能。形形色色的软件系统不断涌现。
1974,Digital Research公司的Gary Kildall为微型计算机设计的一套操作系统,名为CP/M。而与该操作系统搭配的微机在 1970 年代后期和 1980 年代中期被广泛用于商业。可以视为微机行业的早期标准。 CP/M操作系统为其上的软件提供API(Application Programming Interface),减少了在新制造商的计算机上安装应用程序所需的编程量,扩大了硬件和软件的市场规模。
当然,在随后80年代推出的IBM PC+MS DOS的组合占领了更多市场,最终将CP/M取代。DOS也继承了CP/M的设计思想,并开发出更多的API供上层使用。其他的知名操作系统也在70-80年代中出现:Unix、MacOS。
1969年还诞生了第一代的UNIX,C语言诞生的同时用C语言重写的UNIX也诞生(1973)
再来看看编程语言。BASCI编程语言诞生于1964年,到了70年代,微型计算机的诞生与发展,也使得BASCI成为微机上的必备语言。1970年代中期早期微型计算机的出现导致了许多 BASIC 方言的发展,包括1975 年的Microsoft BASIC。由于这些机器上可用的主内存很小,通常只有 4 kB,各种Tiny BASIC方言也在创建。BASIC 几乎适用于那个时代的任何系统,并且自然而然地成为了1970 年代后期出现的家用计算机系统的事实上的编程语言。这些机器几乎总是在默认情况下安装BASIC 解释器,通常在机器的固件中或有时在ROM盒上。
其他更多通用性的编程语言也开始出现:C(1972)、smalltalk(1972)、 pascal(1970)
作为操作系统,向下与硬件连接,传递信息。向上与其他软件连接传递信息。操作系统必须要提供API供上层软件调用。不同的操作系统会设计不同的API,而在应用软件这边为了降低操作系统差异,也会设计库函数封装这些差异性,用库函数来与操作系统交流(例如c语言中的stdio)
微型计算机的发展必然带来联网的诉求。1980年,用于“异构”网络环境中的TCP/IP协议研制成功,也就是说,TCP/IP协议可以在各种硬件和操作系统上实现互操作。不同硬件、不同所操作系统之间实现标准化的网络互连成为可能。(1982年,ARPANET开始采用TCP/IP协议。)
当然。除了TCP/IP,也有其他网络互连协议也在发明:典型的如IPX/SPX ( Novell )。在世纪初的联网游戏中还有IPX的支持,现在应该更少了。
还有非常一个重要的规范必须要提,那就是SQL。70年代初,IBM率先提出了关系数据库理论,并制定SQL语言规范。1986年SQL成为ANSI标准(SQL-86),87年采纳为ISO标准。
说完API再说说用户界面。最常用的几种交互设备已经在这个时期出现。从通用终端命令行,再到个性的图形操作界面。
鼠标早在1968年就已经发明,但直到1983年,罗技才发明现代意义的机械鼠标。
Apple Lisa是苹果公司发布的世界首台图形界面计算机,16位CPU,带有鼠标(1983)
GUI(图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。1973年,第一台使用Alto操作系统的计算机在施乐公司PARC研究中心开发完成。Alto是第一个具备了所有现代图形用户界面的基本元素特征的操作系统。特点:使用三键的鼠标;位图的显示器;图形窗口的运用。苹果、微软都从施乐学到了图形用户界面设计理念。
1967年,第一块触摸屏诞生,触摸屏的概念诞生(约翰逊,论文,还是电容屏)。约翰逊在两年后创造出原型触摸屏。(最后,只有英国航空管理局向约翰逊伸出了橄榄枝——触摸屏指挥系统从1973年开始投入使用,一直工作到了90年代末)。电容屏的应用并不成熟,1970年,电阻式触摸屏诞生(电阻式触摸屏的发明人是美国发明家塞缪尔·赫斯特博士(Dr. G. Samuel Hurst))。整个70-90年电阻式触摸屏都在繁荣发展。https://www.sohu.com/a/240330869_494129
最初的电容触摸屏原型,1969
游戏摇杆,1977年雅达利(Atari)推出的一款电子游戏机(Atari 2600)中附带一个标准的摇杆操作设备。这个摇杆成为一个通用设计被最初两代的游戏机所采用。知道1980年中期,任天堂与世嘉的游戏手柄才顶替这个摇杆成为更流行的游戏操控外设。
1977年 Atari 2600 附带一个标准的摇杆操作设备
这段时计算机也开始在国内开始使用。要能在国内使用计算机,首要解决的是中文操作系统以及中文输入法问题。世界上有多种多样的语言、文字,计算机最初只能保存ASCII代码。想要在全世界人类服务,必须要解决世界各地区人类文字的输入、存储、显示问题。
为了解决汉字数字化问题,两个出现两个标准:GB/T 2312-1980《信息交换用汉字编码字符集基本集》,Big5 大五码(1984)。
计算机想要处理汉字,其操作系统必须要支持汉字信息的存储与显示。因此支持中文的DOS操作系统的研发是80年代的重要任务。著名的有CCDOS(电子工业部第六研究所研制的汉字系统,曾获国家科技进步二等奖),UCDOS(北京希望公司研制的汉字系统)。同时,汉字输入的问题也在有人解决:
- 仓颉输入法,1976年由朱邦复
- 五笔字型输入法,王永民,1983年
- 郑码,1989,郑易里
- 各种拼音输入法,双拼、简拼、智能
解决了汉字的编码、输入、显示问题,使得计算机在中国普及开来。
5. 多元化发展(1990-2010)
20世纪90年代,以及世纪初的几年,计算机使用广泛开来开始进入寻常百姓家庭。在此期间,计算机硬件、系统软件、应用软件、出呈现多元化发展的趋势。同时网络的发展让分布式、异构系统计算成为必须要考虑的问题。 用户界面、应用接口呈现规范化,强约束形式的发展特点。许多科技巨头成立,并发展软件产品,为软件的通用化而设计平台,接口。抢占市场。这段时期软件发展呈现三个显著的特点:1 更现代的编程语言;2 图形操作界面、操作系统;3 分布式计算、互联网
90年代中,更为现代的编程语言发明出来,这些语言吸收过去编程语言的优势后逐渐成为新的主流编程语言
编程语言 初版发布时间
perl1.0 | 1988 |
haskell | 1990 |
VB | 1991 |
python 0.9.0 | 1991 |
JAVA 1.0 | 1995 |
ruby 0.95 | 1995 |
Delphi 1.0 | 1995 |
php | 1995 |
javascript | 1995 |
tcl | 1990 |
计算机体系日益成熟,应用深入各行各业。大规模的软件应用促进了分布式计算的深入研究与发展。计算机应用普及到各个行业,同时促进了分布式计算的研究与发展。
1988年,微软购买了Alan Cooper开发的可视编程语言:Ruby。随后微软把Ruby和垂死的QuickBASIC语言组合起来创建了Visual Basic。Alan Cooper方面的Ruby实现了名为VBX的软件API,这种API可以让程序员动态地扩展Visual Basic功能,这一事实再次证明了软件接口具有多大的重要性。VBX接口也就是火热的组件对象模型COM的前身。
微软在1990年5月发行了Windows 3.0,它继承了Windows 2.0对286、368处理器的良好支持,并首次让MS-DOS程序可以在多任务的基础上运行。此外,Windows3.0还改进了文件管理程序,简化了程序启动,控制面板也首次成为了系统设置的中心。现如今大众熟悉的很多Windows元素,都可以追溯到Windows 3.0。
HTML于1990年发明(HTML是由Web的发明者 Tim Berners-Lee和同事 Daniel W. Connolly于1990年创立的一种标记语言)。1993年 最初代的浏览器Mosaic发布,(互联网、网页、浏览器)统统产生。
1991年还诞生了Linux。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。
1991年Visual Basic 1.0 发布,VB是为 Windows 3.0准备的可视化编程工具。
此后,Windows平台继续发展,不断提出新的架构与接口。OLE,ACTIVEX,COM,DCOM。DOTNET。Visual Basic 4.0 (August 1995) 是一个重要的里程碑。同时提供32bit/16位windows程序的支持。之前的VB采用的是 While previous versions of Visual Basic had used VBX controls, 。从此版本开始改为Visual Basic now used OLE controls (with files names ending in .OCX) instead. These were later to be named ActiveX controls.。
分布式计算(英语:Distributed computing):计算机、互联网的广泛应用,让分布式计算成为可能。而有关分布式计算中的软件架构、接口设计不断产生。在这个时期,多家厂商分别提出了各自的编程(接口)模型,用于编写软件、系统间互操作、计算机之间的数据访问。可以说分布式计算的基础是RPC。RPC(Remote Procedure Call,远程过程调用)是一种进程间通信的模式,程序分布在不同的地址空间里。如果在同一主机里,RPC可以通过不同的虚拟地址空间(即便使用相同的物理地址)进行通讯,而在不同的主机间,则通过不同的物理地址进行交互。许多技术(通常是不兼容)都是基于这种概念而实现的。在这一时期众多厂商分别提出了自己的RPC接口与实现。典型的有:1)CORBA;2)COM;3)SUN RPC;4)W3C WebService;
1 CORBA
CORBA(Common Object Request Broker Architecture,通用对象请求代理架构)是由OMG制订的一个让应用程序通过网络协作的框架。CORBA诞生在1991年。是为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案。是一种通用的,分布式的,应用程序互操作接口规范。并且独立于开发语言。
CORBA的协议由多个模块组成,有:由OMG接口描述语言(OMG Interface Definition Language,OMG IDL)、对象请求代理(Object Request Broker,ORB)和IIOP标准协议(Internet Inter ORB Protocol,也称网络ORB交换协议)。
可以看出,在corba中已经有了中间件的概念。中间件供应商负责提供基础设施,实现数据传输、编解码、接口的注册、管理、发现等等(屏蔽异构网络、操作系统、编程语言的复杂性)。开发者使用中间件供应商的工具生成接口描述代码,引用等等。然而corba的实现过于复杂了。主要在于: 1. 屏蔽了网络(本机操作与网络操作存在天然的差异,导致程序设计与异常处理本身就不一样)2 防火墙、调试不友好。
OMG(Object Management Group,对象管理组织)是一个国际性的非盈利协会,1989年由11家公司(包括IBM、Sun Micorsystems、苹果公司 等等,微软直到2008年才加入)创立,最初的目的就是开发一个分布式计算系统的标准。后来OMG还还制定了BPM、UML等规范。
- COM、DCOM
COM(Component Object Model ,组件对象模型)微软在1993年提出的编程(接口)模型。是微软设计的一套软件组件的二进制接口标准。这使得跨编程语言的进程间通信、动态对象创建成为可能。COM是多项微软技术与框架的基础,包括OLE、OLE自动化、ActiveX、COM+、DCOM、Windows shell、DirectX、Windows Runtime。COM与实现语言种类无关,如此使用它实现的对象可用在不同于开发它的环境,甚至跨越机器边界。
DCOM(Distributed COM,全称Distributed Component Object Model,缩写DCOM)是微软的COM规格的网络化版本,又可以称Network OLE,DCOM允许COM组件可以利用网络来传输资料,并且它是以二进制格式来传输,在性能表现上并不差,早期的微软分布式应用程序技术中,DCOM是其中重要的接口之一,但是在网络安全开始被重视,并且企业开始架设防火墙开始,DCOM无法通过防火墙的缺点被严重的暴露出来,因此现在使用DCOM来开发的应用程序已经相当少,大多数都改用其他的分布式技术来取代。DCOM当时的主要竞争对手为CORBA,以及其他具有RPC(Remote Procedure Call)能力的应用平台。
\3. Sun RPC (Sun Remote Procedure Call Mechanism )Sun公司开发的远程调用框架。最初用于NFS(Network File System网络文件系统)。后来变为Open Network Computing Remote Procedure Call (ONC RPC)。ONC Remote Procedure Call (ONC RPC Version 2) 。是一个二进制的协议,目前仍用在NFS中。
\4. EJB(Enterprise JavaBeans),是Java平台的服务器端组件架构技术。允许简单、快速的开发分布式应用。还具备可靠、安全、事务性、可移植能力。EJB规范最先由IBM提出(1997年),1999年SUN正式接纳其成为EJB1.0。
\5. 此外,开放式的RPC方案也出现,基于互联网,HTTP的标准不断发展,
由W3C制定的互联网服务接口规范。W3C Web services 特指由HTTP、WSDL、SOAP组织成的标准。 W3C (World Wide Web Consortium,万维网联盟,成立于1994年,专门制定互联网的标准)
W3C Web Service基于互联网 HTTP,并在基础上采用XMl来制定专门的接口文档定义(WSDL)与数据传输规范(XML,SOAP)。W3C Web services设计基于XML,XML也是W3C设计的规范。 Extensible Markup Language (起源于96年,1.0 发布于1998年),XML中几个重要的组成:XML、XSLT、XSD、DTD
这一时代的应用接口设计多出于理想目标(屏蔽网络、异构系统复杂性,获得本地的编程体验),并未过多的考虑网络的复杂,安全等因素。因此在现在看来,使用多有不便。
有关分布式系统的设计还有一个重要的定理。就是在一个分布式系统中,一致性(C)、可用性(A)、分区容错性(P)只能满足其中两个,CP或AP。(1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。Consistency、Availability、Partition tolerance。它们的第一个字母分别是 C、A、P。Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。)
https://www.ruanyifeng.com/blog/2018/07/cap.html
https://www.ibm.com/cloud/learn/cap-theorem#toc-what-is-th-DXABpEgu
这一时期,两个重量级的开发平台(编程语言框架)在竞争。
其一, J2EE(Java 2 Platform, Enterprise Edition)J2EE,SUN公司的著名设计,由一组用于企业应用程序开发的接口规范组成。企业可以在这些接口规范上开发应用软件,并将软件运行在实现了这些规范的中间件平台中(提供这些接口的服务成为中间件)。其中有名的规范有:Servlet、JSP、EJB、JTA、JMS。最初的接口规范发布于1999年。
J2EE,一开始叫Java 2 Platform, Enterprise Edition (J2EE),后来改名为Java Platform, Enterprise Edition (Java EE) ,现在叫 Jakarta EE。
JAVA世界中有一个名为JCP(Java Community Process)的机制。是使有兴趣的各方参与定义Java的特征和未来版本的一个工作机制,JCP始建于1998年。JCP使用JSR(Java规范请求,Java Specification Requests,实际可以理解为JAVA编程语言的需求规格说明书)作为正式规范文档,描述被提议加入到Java体系中的的规范和技术。JSR要从草稿开始提交,然后正式公开审查,投票,直到变为final状态。前需要正式的公开审查,并由JCP Executive Committee投票决定。最终的JSR会提供一个参考实现,它是免费而且公开源代码的;还有一个验证是否符合API规范的Technology Compatibility Kit。
其二:Dot Net Framework( .NET Framework)点儿NET框架。由微软公司设计开发的编程框架,主要服务于微软自己的Windows系统。第一版在2000年发布(就是为了与J2EE竞争)。.NET主要是运行在windows平台。包含一个丰富的基础库( Framework Class Library (FCL))。.NET的特点是支持多个编程语言编写,并且编译后能够在不同语言之间互相调用。.NET的运行环境叫CLR(Common Language Runtime)
6. 新时代的应用接口(2010-)
进入21世纪10年代,互联网几乎普及到中国每个家庭。家用电脑、移动电话、移动电子设备五彩缤纷。带动了IT行业的繁荣,也诞生出互联网公司。软件、硬件不断发展,成熟。分布式计算逐渐产生发展。诞生更多的接口技术。更多的操作系统平台、编程语言、硬件平台不断发展。 异构兼容性,成为必须要考虑的问题。最为显著的就是云服务的发展(IAAS、PAAS、SAAS)软件即服务,接口即服务。移动互联网的发展。网络速度的提高带动了流媒体的发展以及更多清晰、动态交互的内容以及软件。
Ajax (Asynchronous JavaScript and XML"),技术的普及,使用Web应用程序的用户交互更为友好。普遍发展开来。is a set of web development techniques that uses various web technologies on the client-side to create asynchronous web applications. 有了Ajax,web应用程序可以在浏览器后台发送与接受数据与服务器交互(这在以前,只能由客户端应用程序来干)Ajax不算新发明,也可以认为是几项技术的组合而成的新设计理念。帮助Web平台发展。
与Ajax同时兴起的还有JSON (JavaScript Object Notation, pronounced /ˈdʒeɪsən/; also /ˈdʒeɪˌsɒn/) ,一种标准开放的数据交互格式,与文件存储格式。同时也具有文本化可阅读的特点。因为格式简单,易于解析(比XML容易)。很快流行开来。Douglas Crockford originally specified the JSON format in the early 2000s.
与Ajax同时发展起来的,还有谷歌提出的云服务,并率先在自家产品上提供了接口即服务的产品。通过OpenId,OAuth,的方式其他开发者可以访问谷歌服务的API(例如,Gmail、Docs)获取数据。扩充产品能力。
REST(Representational State Transfer,表现层状态转换)是Roy Thomas Fielding博士于2000年在他的博士论文[1]中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。表现层状态转换是根基于超文本传输协议(HTTP)之上而确定的一组约束和属性,是一种设计提供万维网络服务的软件构建风格。符合或兼容于这种架构风格(简称为 REST 或 RESTful)的网络服务,允许客户端发出以统一资源标识符访问和操作网络资源的请求,而与预先定义好的无状态操作集一致化。因此表现层状态转换提供了在互联网络的计算系统之间,彼此资源可交互使用的协作性质(interoperability)。相对于其它种类的网络服务,例如SOAP服务,则是以本身所定义的操作集,来访问网络上的资源。
目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务运行图书查询;雅虎提供的Web服务也是REST风格的。
AJAX、JSON、REST组成了新一代的Web Service设计理念。
同期发展起来的还有新一代的移动端设备。新一代的手机革新移动端用户界面。先前的键盘输入,升级到触摸屏操作,并配备了语音、手写、AI助手。(随着AI技术的发展,AlphaGo的诞生,AI技术得到突破手写识别、OCR、语音识别、AI助手、AI话务员等等不断涌现)
iPhone。2007年1月,史蒂夫乔布斯,在the Macworld convention大会上,发布第一代的iPhone。并且首创应用市场的概念并付诸实际。也诞生了在AppStore上的独立应用开发者。
Android ,同样2007年末,谷歌不甘落后,发布自己的移动端操作系统,Android。Android基于Linux内核。并且采取了开放式的联盟计划Open Handset Alliance 。移动设备厂商可以使用Android作为自己的设备的操作系统。
竞争少不了微软,在之前微软实际是有自己的移动平台的(Windows Mobile、Zune、WindCE)。但与iPhone相比就差了一个时代,20210年微软发布Windows Phone 7.意图赶上新用户体验。
云服务(SAAS,PAAS,IAAS)的繁荣带来新的软件理念:软件即服务(SAAS),软件在云端,通过浏览器直接访问(与以前的B/S架构软件思路一致),但更在软件层面支持多租户(一套软件支持多个组织/用户访问,在以前邮件、微博、游戏等属于此类,但SAAS将软件服务延伸到更多专用应用领域:财务、CRM、电子商务等等领域也出现云端软件)。同时,也出现了API即软件服务的新形态(API as Service)。软件对外发布的就是API,通过调用次数等形式收费获得收入。例如天气查询、火车车次查询、航空航班、客票查询、快递、物流查询。这可以视为分布式软件的进一步发展与内涵扩充(单体软件所能承载的需求越来越有限。分布式系统,大型软件系统由多个独立运行模块组成(SOA、微服务))。
进入2010年以后,随着alpha go的成功。ai应用普及开来。AI的新发展带来新的用户界面设计:
- 语音输入的普及与应用:语言助手(微软小冰、Siri、小度小度……)、智能语音客服,语言翻译。
- 手写输入的普及:高准确率的手写识别,连续输入
- 新的体感交互界面:体感、VR、AR
小结
从各阶段的发展可以看出
- 用户界面的发展经历从简陋到精美,从简单到多样的阶段。而将来,体感互动,虚拟/增强现实,脑机接口等新交互手段的发展必将会引发新的用户界面革新
- 应用可编程接口,经历从无到有,从简单到复杂、从封闭到开放的阶段。
- 软件之间的接口设计,经历了单机到分布式。而在发展过程中还出现了过度设计(网络远程调用就像本地调用一样的体验)。后来主键的HTTP+JSON成为分布式调用的首选。