聊聊软件接口

软件技术的发展是与硬件、网络协同发展的。例如智能手机与5G网络的普及,促进了移动应用软件技术的发展。本文尝试从软件接口技术发展的角度,对编程语言、软件技术在软件工程这几十年中的发展做个盘点。

目录

  1. 软件接口
  2. 诞生
  3. 早期(1950-1970)
  4. 快速发展(1970-1990)
  5. 多元化(1990-2010)
  6. 新时代应用接口(2010-)
  7. 未来的接口

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.

其中名词形式的解释为:“独立系统之间的边界,信息跨越边界传送”。接口可以有多种类型:

  1. 用户界面:人机界面(user interface,UI)
  2. 软件接口:代码之间、软件硬件之间的接口(software interface)
  3. 硬件接口:线缆、插头、插座等等

如果按动词解释,则是指通过接口进行连接与信息交换的行为。

一般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等规范。

  1. 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成为分布式调用的首选。

参考资料

  1. 计算机历史:https://www.computerhistory.org/
  2. 百度百科
  3. 维基百科
  4. 《软件工程通史》 [美] [卡珀斯·琼斯Capers Jone]

你可能感兴趣的:(聊聊软件接口)