軟件接口簡史

軟件技術(shù)的發(fā)展是與硬件火窒、網(wǎng)絡(luò)協(xié)同發(fā)展的硼补。例如智能手機(jī)與5G網(wǎng)絡(luò)的普及,促進(jìn)了移動應(yīng)用軟件技術(shù)的發(fā)展熏矿。本文嘗試從軟件接口技術(shù)發(fā)展的角度已骇,對編程語言离钝、軟件技術(shù)在軟件工程這幾十年中的發(fā)展做個盤點(diǎn)。

目錄

  1. 軟件接口
  2. 誕生
  3. 早期(1950-1970)
  4. 快速發(fā)展(1970-1990)
  5. 多元化(1990-2010)
  6. 新時代應(yīng)用接口(2010-)
  7. 未來的接口

1. 什么是接口

首先褪储,讓我們看看接口的概念卵渴。接口一詞的英文原文是interface,原本就是一個計(jì)算機(jī)科學(xué)詞匯鲤竹。韋伯詞典中的解釋:

(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.

其中名詞形式的解釋為:“獨(dú)立系統(tǒng)之間的邊界浪读,信息跨越邊界傳送”。接口可以有多種類型:

  1. 用戶界面:人機(jī)界面(user interface辛藻,UI)
  2. 軟件接口:代碼之間碘橘、軟件硬件之間的接口(software interface)
  3. 硬件接口:線纜、插頭吱肌、插座等等

如果按動詞解釋痘拆,則是指通過接口進(jìn)行連接與信息交換的行為。

一般1和2都會視為軟件系統(tǒng)的接口氮墨,本文著重介紹的也是這兩類接口技術(shù)的發(fā)展纺蛆。

2. 誕生

電子計(jì)算機(jī)誕生之初(ENIAC)甘耿,就已經(jīng)有接口在其中常熙。首當(dāng)其沖的還是用戶界面,畢竟最初的計(jì)算機(jī)只能用來做數(shù)學(xué)運(yùn)算颓屑。而科學(xué)家必須通過用戶界面來操縱計(jì)算機(jī)粒褒。

最初的計(jì)算機(jī)ENIAC和操作它的人們

ENIAC的程序員們识颊,還是女士,這時也尚未形成軟件的概念奕坟。她們所用的輸入設(shè)備是:插線板祥款、線纜、物理開關(guān)月杉;輸出設(shè)備是:20組閃光燈??刃跛。

3. 早期(1950-1970)

通過操作接線板與開關(guān)的方式進(jìn)行編程看似簡單,但太容易出錯苛萎。初代的計(jì)算機(jī)科學(xué)家考慮怎樣能便捷的操作計(jì)算機(jī)桨昙,便開始設(shè)計(jì)程序語言。最初的程序語言是建立在機(jī)器之上的匯編語言腌歉,直接發(fā)指令操作機(jī)器的各種部件獲得結(jié)果蛙酪。

軟件以及編程業(yè)早期,計(jì)算器設(shè)備還在不斷研發(fā)與革新中翘盖,計(jì)算機(jī)還以大型機(jī)為主桂塞,操作系統(tǒng)也尚在雛形期,接口也是以用戶界面馍驯、硬件接口為優(yōu)先阁危。這個時期的用戶界面也還比較原始:以穿孔卡片玛痊、按鈕、鍵盤狂打、電傳打印機(jī)擂煞、指示燈居占多數(shù)。這個時候還沒有現(xiàn)代的顯示器菱父。

FORTRAN(Formula Translation颈娜,簡稱FORTRAN),直譯理解為“公式翻譯器”浙宜,它是世界上最早出現(xiàn)的計(jì)算機(jī)高級程序設(shè)計(jì)語言(比匯編高一級)官辽,廣泛應(yīng)用于科學(xué)和工程計(jì)算領(lǐng)域。第一代的FORTRAN公布于1954年粟瞬,應(yīng)用在IBM704計(jì)算機(jī)上同仆。

ALGOL(ALGOrithmic Language),也是誕生在這一時期的通用編程語言裙品。ALGOL誕生也是因?yàn)楸苊庖患要?dú)大俗批,而聯(lián)合設(shè)計(jì)一種計(jì)算機(jī)無關(guān)的科學(xué)用程序設(shè)計(jì)語言

值得一提的是市怎,民航業(yè)很早就開展信息化建設(shè)岁忘。Sabre(軍刀)是第一個在線預(yù)訂系統(tǒng),誕生在1960年区匠,最初服務(wù)于美國航空公司干像。起初,Sabre 僅在紐約 Briarcliff Manor 的一個地點(diǎn)運(yùn)營驰弄,配備兩臺 IBM ? 7090 計(jì)算機(jī)(1958年發(fā)布麻汰,可以使用匯編與FORTRAN開發(fā)程序)。到 1964 年底戚篙,這個新系統(tǒng)每小時處理 7500 個預(yù)訂五鲫。在舊的手動卡系統(tǒng)中處理預(yù)訂的平均時間為 90 分鐘。Saber 將其縮短到幾秒鐘岔擂。Sabre 成為美國航空的巨大競爭優(yōu)勢位喂,迫使其他所有航空公司都建立自己的預(yù)訂系統(tǒng)。他們中的大多數(shù)人求助于 IBM乱灵。這是個聯(lián)網(wǎng)的系統(tǒng)忆某,而此時還沒有發(fā)明TCP/IP。

SABRE終端

服務(wù)員在操作預(yù)定系統(tǒng)終端阔蛉,可以看到,用戶界面集成在終端機(jī)上(有鍵盤癞埠、打字機(jī)状原、卡片)

IBM7090

IBM7090聋呢,可以看到這時的程序輸入還是紙帶,這時還沒有顯示屏

ARPANET(美國國防部高級計(jì)劃局網(wǎng)絡(luò))颠区,即阿帕網(wǎng)削锰。1968年10月,美國國防部高級計(jì)劃局和BBN公司簽訂合同毕莱,研制適合計(jì)算機(jī)通信的網(wǎng)絡(luò)器贩。并于1969年6月完成第一階段的工作,組成了4個結(jié)點(diǎn)的試驗(yàn)性網(wǎng)絡(luò)朋截,稱為ARPAnet蛹稍。它被公認(rèn)為是世界上第一個采用分組交換技術(shù)組建的網(wǎng)絡(luò)。1975年夏天部服,ARPAnet結(jié)束試驗(yàn)階段唆姐,網(wǎng)絡(luò)控制權(quán)交給美國國防部通信局(DCA),DCA在ARPAnet基礎(chǔ)上組建了美國國防數(shù)據(jù)網(wǎng)(DDN)廓八。最終演變?yōu)楹髞淼腡CP/IP(1982)

這段時間最主要的成果是奉芦,各類計(jì)算機(jī)系統(tǒng)應(yīng)用到軍事、科學(xué)研究領(lǐng)域剧蹂,并開始有了商業(yè)的應(yīng)用声功,有了程序員崗位,編程語言發(fā)明宠叼,網(wǎng)絡(luò)互聯(lián)技術(shù)開始研究先巴。

4. 快速發(fā)展(1970-1990)

時間來到20世紀(jì)70年代,計(jì)算機(jī)開始蓬勃發(fā)展车吹,誕生許多重量級計(jì)算機(jī)技術(shù)公司筹裕。硬件軟件開始分離,也產(chǎn)生了操作系統(tǒng)與應(yīng)用軟件的區(qū)分窄驹,因此也產(chǎn)生了應(yīng)用程序接口朝卒,并且新的人機(jī)界面設(shè)計(jì)也不斷出現(xiàn)。

1969年乐埠, IBM 開始軟件硬件分離的策略抗斤。而在這之前,軟件硬件是捆綁銷售的丈咐,沒有可獨(dú)立銷售的軟件(因此幾乎也談不上開放式的軟件接口)瑞眼。軟硬件的松綁為軟件接口的發(fā)展提供了可能。形形色色的軟件系統(tǒng)不斷涌現(xiàn)棵逊。

1974伤疙,Digital Research公司的Gary Kildall為微型計(jì)算機(jī)設(shè)計(jì)的一套操作系統(tǒng),名為CP/M。而與該操作系統(tǒng)搭配的微機(jī)在 1970 年代后期和 1980 年代中期被廣泛用于商業(yè)徒像∈蛱兀可以視為微機(jī)行業(yè)的早期標(biāo)準(zhǔn)。 CP/M操作系統(tǒng)為其上的軟件提供API(Application Programming Interface)锯蛀,減少了在新制造商的計(jì)算機(jī)上安裝應(yīng)用程序所需的編程量灭衷,擴(kuò)大了硬件和軟件的市場規(guī)模。

當(dāng)然旁涤,在隨后80年代推出的IBM PC+MS DOS的組合占領(lǐng)了更多市場翔曲,最終將CP/M取代。DOS也繼承了CP/M的設(shè)計(jì)思想劈愚,并開發(fā)出更多的API供上層使用瞳遍。其他的知名操作系統(tǒng)也在70-80年代中出現(xiàn):Unix、MacOS造虎。

1969年還誕生了第一代的UNIX傅蹂,C語言誕生的同時用C語言重寫的UNIX也誕生(1973)

再來看看編程語言。BASCI編程語言誕生于1964年算凿,到了70年代份蝴,微型計(jì)算機(jī)的誕生與發(fā)展,也使得BASCI成為微機(jī)上的必備語言氓轰。1970年代中期早期微型計(jì)算機(jī)的出現(xiàn)導(dǎo)致了許多 BASIC 方言的發(fā)展婚夫,包括1975 年的Microsoft BASIC。由于這些機(jī)器上可用的主內(nèi)存很小署鸡,通常只有 4 kB案糙,各種Tiny BASIC方言也在創(chuàng)建。BASIC 幾乎適用于那個時代的任何系統(tǒng)靴庆,并且自然而然地成為了1970 年代后期出現(xiàn)的家用計(jì)算機(jī)系統(tǒng)的事實(shí)上的編程語言时捌。這些機(jī)器幾乎總是在默認(rèn)情況下安裝BASIC 解釋器,通常在機(jī)器的固件中或有時在ROM盒上炉抒。

其他更多通用性的編程語言也開始出現(xiàn):C(1972)奢讨、smalltalk(1972)、 pascal(1970)

作為操作系統(tǒng)焰薄,向下與硬件連接拿诸,傳遞信息。向上與其他軟件連接傳遞信息塞茅。操作系統(tǒng)必須要提供API供上層軟件調(diào)用亩码。不同的操作系統(tǒng)會設(shè)計(jì)不同的API,而在應(yīng)用軟件這邊為了降低操作系統(tǒng)差異野瘦,也會設(shè)計(jì)庫函數(shù)封裝這些差異性描沟,用庫函數(shù)來與操作系統(tǒng)交流(例如c語言中的stdio)

微型計(jì)算機(jī)的發(fā)展必然帶來聯(lián)網(wǎng)的訴求。1980年,用于“異構(gòu)”網(wǎng)絡(luò)環(huán)境中的TCP/IP協(xié)議研制成功啊掏,也就是說蠢络,TCP/IP協(xié)議可以在各種硬件和操作系統(tǒng)上實(shí)現(xiàn)互操作。不同硬件迟蜜、不同所操作系統(tǒng)之間實(shí)現(xiàn)標(biāo)準(zhǔn)化的網(wǎng)絡(luò)互連成為可能。(1982年啡省,ARPANET開始采用TCP/IP協(xié)議娜睛。)

當(dāng)然。除了TCP/IP卦睹,也有其他網(wǎng)絡(luò)互連協(xié)議也在發(fā)明:典型的如IPX/SPX ( Novell )畦戒。在世紀(jì)初的聯(lián)網(wǎng)游戲中還有IPX的支持,現(xiàn)在應(yīng)該更少了结序。

還有非常一個重要的規(guī)范必須要提障斋,那就是SQL。70年代初徐鹤,IBM率先提出了關(guān)系數(shù)據(jù)庫理論垃环,并制定SQL語言規(guī)范。1986年SQL成為ANSI標(biāo)準(zhǔn)(SQL-86)返敬,87年采納為ISO標(biāo)準(zhǔn)遂庄。

說完API再說說用戶界面。最常用的幾種交互設(shè)備已經(jīng)在這個時期出現(xiàn)劲赠。從通用終端命令行涛目,再到個性的圖形操作界面。

鼠標(biāo)早在1968年就已經(jīng)發(fā)明凛澎,但直到1983年霹肝,羅技才發(fā)明現(xiàn)代意義的機(jī)械鼠標(biāo)。


Apple Lisa是蘋果公司發(fā)布的世界首臺圖形界面計(jì)算機(jī)塑煎,16位CPU沫换,帶有鼠標(biāo)(1983)

GUI(圖形用戶界面(Graphical User Interface,簡稱 GUI轧叽,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面苗沧。1973年,第一臺使用Alto操作系統(tǒng)的計(jì)算機(jī)在施樂公司PARC研究中心開發(fā)完成炭晒。Alto是第一個具備了所有現(xiàn)代圖形用戶界面的基本元素特征的操作系統(tǒng)待逞。特點(diǎn):使用三鍵的鼠標(biāo);位圖的顯示器网严;圖形窗口的運(yùn)用识樱。蘋果、微軟都從施樂學(xué)到了圖形用戶界面設(shè)計(jì)理念。

1967年怜庸,第一塊觸摸屏誕生当犯,觸摸屏的概念誕生(約翰遜,論文割疾,還是電容屏)嚎卫。約翰遜在兩年后創(chuàng)造出原型觸摸屏。(最后宏榕,只有英國航空管理局向約翰遜伸出了橄欖枝——觸摸屏指揮系統(tǒng)從1973年開始投入使用拓诸,一直工作到了90年代末)。電容屏的應(yīng)用并不成熟麻昼,1970年奠支,電阻式觸摸屏誕生(電阻式觸摸屏的發(fā)明人是美國發(fā)明家塞繆爾·赫斯特博士(Dr. G. Samuel Hurst))。整個70-90年電阻式觸摸屏都在繁榮發(fā)展抚芦。https://www.sohu.com/a/240330869_494129

最初的電容觸摸屏原型倍谜,1969

游戲搖桿,1977年雅達(dá)利(Atari)推出的一款電子游戲機(jī)(Atari 2600)中附帶一個標(biāo)準(zhǔn)的搖桿操作設(shè)備叉抡。這個搖桿成為一個通用設(shè)計(jì)被最初兩代的游戲機(jī)所采用尔崔。知道1980年中期,任天堂與世嘉的游戲手柄才頂替這個搖桿成為更流行的游戲操控外設(shè)卜壕。

1977年 Atari 2600 附帶一個標(biāo)準(zhǔn)的搖桿操作設(shè)備

這段時計(jì)算機(jī)也開始在國內(nèi)開始使用您旁。要能在國內(nèi)使用計(jì)算機(jī),首要解決的是中文操作系統(tǒng)以及中文輸入法問題轴捎。世界上有多種多樣的語言鹤盒、文字,計(jì)算機(jī)最初只能保存ASCII代碼侦副。想要在全世界人類服務(wù)侦锯,必須要解決世界各地區(qū)人類文字的輸入、存儲秦驯、顯示問題尺碰。

為了解決漢字?jǐn)?shù)字化問題,兩個出現(xiàn)兩個標(biāo)準(zhǔn):GB/T 2312-1980《信息交換用漢字編碼字符集基本集》译隘,Big5 大五碼(1984)亲桥。

計(jì)算機(jī)想要處理漢字,其操作系統(tǒng)必須要支持漢字信息的存儲與顯示固耘。因此支持中文的DOS操作系統(tǒng)的研發(fā)是80年代的重要任務(wù)题篷。著名的有CCDOS(電子工業(yè)部第六研究所研制的漢字系統(tǒng),曾獲國家科技進(jìn)步二等獎)厅目,UCDOS(北京希望公司研制的漢字系統(tǒng))番枚。同時法严,漢字輸入的問題也在有人解決:

  • 倉頡輸入法,1976年由朱邦復(fù)
  • 五筆字型輸入法葫笼,王永民深啤,1983年
  • 鄭碼,1989路星,鄭易里
  • 各種拼音輸入法溯街,雙拼、簡拼洋丐、智能

解決了漢字的編碼苫幢、輸入、顯示問題垫挨,使得計(jì)算機(jī)在中國普及開來。

5. 多元化發(fā)展(1990-2010)

20世紀(jì)90年代触菜,以及世紀(jì)初的幾年九榔,計(jì)算機(jī)使用廣泛開來開始進(jìn)入尋常百姓家庭。在此期間涡相,計(jì)算機(jī)硬件哲泊、系統(tǒng)軟件、應(yīng)用軟件催蝗、出呈現(xiàn)多元化發(fā)展的趨勢切威。同時網(wǎng)絡(luò)的發(fā)展讓分布式、異構(gòu)系統(tǒng)計(jì)算成為必須要考慮的問題丙号。 用戶界面先朦、應(yīng)用接口呈現(xiàn)規(guī)范化,強(qiáng)約束形式的發(fā)展特點(diǎn)犬缨。許多科技巨頭成立喳魏,并發(fā)展軟件產(chǎn)品,為軟件的通用化而設(shè)計(jì)平臺怀薛,接口刺彩。搶占市場。這段時期軟件發(fā)展呈現(xiàn)三個顯著的特點(diǎn):1 更現(xiàn)代的編程語言枝恋;2 圖形操作界面创倔、操作系統(tǒng);3 分布式計(jì)算焚碌、互聯(lián)網(wǎng)

90年代中畦攘,更為現(xiàn)代的編程語言發(fā)明出來,這些語言吸收過去編程語言的優(yōu)勢后逐漸成為新的主流編程語言

編程語言 初版發(fā)布時間
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

計(jì)算機(jī)體系日益成熟呐能,應(yīng)用深入各行各業(yè)念搬。大規(guī)模的軟件應(yīng)用促進(jìn)了分布式計(jì)算的深入研究與發(fā)展抑堡。計(jì)算機(jī)應(yīng)用普及到各個行業(yè),同時促進(jìn)了分布式計(jì)算的研究與發(fā)展朗徊。

1988年首妖,微軟購買了Alan Cooper開發(fā)的可視編程語言:Ruby。隨后微軟把Ruby和垂死的QuickBASIC語言組合起來創(chuàng)建了Visual Basic爷恳。Alan Cooper方面的Ruby實(shí)現(xiàn)了名為VBX的軟件API有缆,這種API可以讓程序員動態(tài)地?cái)U(kuò)展Visual Basic功能,這一事實(shí)再次證明了軟件接口具有多大的重要性温亲。VBX接口也就是火熱的組件對象模型COM的前身棚壁。

微軟在1990年5月發(fā)行了Windows 3.0,它繼承了Windows 2.0對286栈虚、368處理器的良好支持袖外,并首次讓MS-DOS程序可以在多任務(wù)的基礎(chǔ)上運(yùn)行。此外魂务,Windows3.0還改進(jìn)了文件管理程序曼验,簡化了程序啟動,控制面板也首次成為了系統(tǒng)設(shè)置的中心≌辰現(xiàn)如今大眾熟悉的很多Windows元素鬓照,都可以追溯到Windows 3.0。

HTML于1990年發(fā)明(HTML是由Web的發(fā)明者 Tim Berners-Lee和同事 Daniel W. Connolly于1990年創(chuàng)立的一種標(biāo)記語言)孤紧。1993年 最初代的瀏覽器Mosaic發(fā)布豺裆,(互聯(lián)網(wǎng)、網(wǎng)頁号显、瀏覽器)統(tǒng)統(tǒng)產(chǎn)生臭猜。

1991年還誕生了Linux。該操作系統(tǒng)的內(nèi)核由林納斯·托瓦茲在1991年10月5日首次發(fā)布咙轩。

1991年Visual Basic 1.0 發(fā)布获讳,VB是為 Windows 3.0準(zhǔn)備的可視化編程工具。

此后活喊,Windows平臺繼續(xù)發(fā)展丐膝,不斷提出新的架構(gòu)與接口。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.紊馏。

分布式計(jì)算(英語:Distributed computing):計(jì)算機(jī)、互聯(lián)網(wǎng)的廣泛應(yīng)用蒲犬,讓分布式計(jì)算成為可能朱监。而有關(guān)分布式計(jì)算中的軟件架構(gòu)、接口設(shè)計(jì)不斷產(chǎn)生原叮。在這個時期赫编,多家廠商分別提出了各自的編程(接口)模型,用于編寫軟件奋隶、系統(tǒng)間互操作擂送、計(jì)算機(jī)之間的數(shù)據(jù)訪問∥ㄐ溃可以說分布式計(jì)算的基礎(chǔ)是RPC嘹吨。RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)是一種進(jìn)程間通信的模式境氢,程序分布在不同的地址空間里躺苦。如果在同一主機(jī)里,RPC可以通過不同的虛擬地址空間(即便使用相同的物理地址)進(jìn)行通訊产还,而在不同的主機(jī)間,則通過不同的物理地址進(jìn)行交互嘀趟。許多技術(shù)(通常是不兼容)都是基于這種概念而實(shí)現(xiàn)的脐区。在這一時期眾多廠商分別提出了自己的RPC接口與實(shí)現(xiàn)。典型的有:1)CORBA她按;2)COM牛隅;3)SUN RPC;4)W3C WebService酌泰;

1 CORBA

CORBA(Common Object Request Broker Architecture媒佣,通用對象請求代理架構(gòu))是由OMG制訂的一個讓應(yīng)用程序通過網(wǎng)絡(luò)協(xié)作的框架。CORBA誕生在1991年陵刹。是為解決分布式處理環(huán)境(DCE)中默伍,硬件和軟件系統(tǒng)的互連而提出的一種解決方案。是一種通用的衰琐,分布式的也糊,應(yīng)用程序互操作接口規(guī)范。并且獨(dú)立于開發(fā)語言羡宙。

CORBA的協(xié)議由多個模塊組成狸剃,有:由OMG接口描述語言(OMG Interface Definition Language,OMG IDL)狗热、對象請求代理(Object Request Broker钞馁,ORB)和IIOP標(biāo)準(zhǔn)協(xié)議(Internet Inter- ORB Protocol虑省,也稱網(wǎng)絡(luò)ORB交換協(xié)議)。
可以看出僧凰,在corba中已經(jīng)有了中間件的概念探颈。中間件供應(yīng)商負(fù)責(zé)提供基礎(chǔ)設(shè)施,實(shí)現(xiàn)數(shù)據(jù)傳輸允悦、編解碼膝擂、接口的注冊、管理隙弛、發(fā)現(xiàn)等等(屏蔽異構(gòu)網(wǎng)絡(luò)架馋、操作系統(tǒng)、編程語言的復(fù)雜性)全闷。開發(fā)者使用中間件供應(yīng)商的工具生成接口描述代碼叉寂,引用等等。然而corba的實(shí)現(xiàn)過于復(fù)雜了总珠。主要在于: 1. 屏蔽了網(wǎng)絡(luò)(本機(jī)操作與網(wǎng)絡(luò)操作存在天然的差異屏鳍,導(dǎo)致程序設(shè)計(jì)與異常處理本身就不一樣)2 防火墻、調(diào)試不友好局服。

OMG(Object Management Group钓瞭,對象管理組織)是一個國際性的非盈利協(xié)會,1989年由11家公司(包括IBM淫奔、Sun Micorsystems山涡、蘋果公司 等等,微軟直到2008年才加入)創(chuàng)立唆迁,最初的目的就是開發(fā)一個分布式計(jì)算系統(tǒng)的標(biāo)準(zhǔn)鸭丛。后來OMG還還制定了BPM、UML等規(guī)范唐责。

  1. COM鳞溉、DCOM

COM(Component Object Model ,組件對象模型)微軟在1993年提出的編程(接口)模型鼠哥。是微軟設(shè)計(jì)的一套軟件組件的二進(jìn)制接口標(biāo)準(zhǔn)熟菲。這使得跨編程語言的進(jìn)程間通信、動態(tài)對象創(chuàng)建成為可能朴恳。COM是多項(xiàng)微軟技術(shù)與框架的基礎(chǔ)科盛,包括OLE、OLE自動化菜皂、ActiveX贞绵、COM+、DCOM恍飘、Windows shell榨崩、DirectX谴垫、Windows Runtime。COM與實(shí)現(xiàn)語言種類無關(guān)母蛛,如此使用它實(shí)現(xiàn)的對象可用在不同于開發(fā)它的環(huán)境翩剪,甚至跨越機(jī)器邊界。

DCOM(Distributed COM彩郊,全稱Distributed Component Object Model前弯,縮寫DCOM)是微軟的COM規(guī)格的網(wǎng)絡(luò)化版本,又可以稱Network OLE秫逝,DCOM允許COM組件可以利用網(wǎng)絡(luò)來傳輸資料恕出,并且它是以二進(jìn)制格式來傳輸,在性能表現(xiàn)上并不差违帆,早期的微軟分布式應(yīng)用程序技術(shù)中浙巫,DCOM是其中重要的接口之一,但是在網(wǎng)絡(luò)安全開始被重視刷后,并且企業(yè)開始架設(shè)防火墻開始的畴,DCOM無法通過防火墻的缺點(diǎn)被嚴(yán)重的暴露出來,因此現(xiàn)在使用DCOM來開發(fā)的應(yīng)用程序已經(jīng)相當(dāng)少尝胆,大多數(shù)都改用其他的分布式技術(shù)來取代丧裁。DCOM當(dāng)時的主要競爭對手為CORBA,以及其他具有RPC(Remote Procedure Call)能力的應(yīng)用平臺含衔。

3. Sun RPC (Sun Remote Procedure Call Mechanism )Sun公司開發(fā)的遠(yuǎn)程調(diào)用框架渣慕。最初用于NFS(Network File System網(wǎng)絡(luò)文件系統(tǒng))。后來變?yōu)镺pen Network Computing Remote Procedure Call (ONC RPC)抱慌。ONC Remote Procedure Call (ONC RPC Version 2) 。是一個二進(jìn)制的協(xié)議眨猎,目前仍用在NFS中抑进。

4. EJB(Enterprise JavaBeans),是Java平臺的服務(wù)器端組件架構(gòu)技術(shù)睡陪。允許簡單寺渗、快速的開發(fā)分布式應(yīng)用。還具備可靠兰迫、安全信殊、事務(wù)性、可移植能力汁果。EJB規(guī)范最先由IBM提出(1997年)涡拘,1999年SUN正式接納其成為EJB1.0。

5. 此外据德,開放式的RPC方案也出現(xiàn)鳄乏,基于互聯(lián)網(wǎng)跷车,HTTP的標(biāo)準(zhǔn)不斷發(fā)展,
由W3C制定的互聯(lián)網(wǎng)服務(wù)接口規(guī)范橱野。W3C Web services 特指由HTTP朽缴、WSDL、SOAP組織成的標(biāo)準(zhǔn)水援。 W3C (World Wide Web Consortium密强,萬維網(wǎng)聯(lián)盟,成立于1994年蜗元,專門制定互聯(lián)網(wǎng)的標(biāo)準(zhǔn))
W3C Web Service基于互聯(lián)網(wǎng) HTTP或渤,并在基礎(chǔ)上采用XMl來制定專門的接口文檔定義(WSDL)與數(shù)據(jù)傳輸規(guī)范(XML,SOAP)许帐。W3C Web services設(shè)計(jì)基于XML劳坑,XML也是W3C設(shè)計(jì)的規(guī)范。 Extensible Markup Language (起源于96年成畦,1.0 發(fā)布于1998年)距芬,XML中幾個重要的組成:XML、XSLT循帐、XSD框仔、DTD

這一時代的應(yīng)用接口設(shè)計(jì)多出于理想目標(biāo)(屏蔽網(wǎng)絡(luò)、異構(gòu)系統(tǒng)復(fù)雜性拄养,獲得本地的編程體驗(yàn))离斩,并未過多的考慮網(wǎng)絡(luò)的復(fù)雜,安全等因素瘪匿。因此在現(xiàn)在看來跛梗,使用多有不便。

有關(guān)分布式系統(tǒng)的設(shè)計(jì)還有一個重要的定理棋弥。就是在一個分布式系統(tǒng)中核偿,一致性(C)、可用性(A)顽染、分區(qū)容錯性(P)只能滿足其中兩個仔戈,CP或AP伐蒂。(1998年,加州大學(xué)的計(jì)算機(jī)科學(xué)家 Eric Brewer 提出,分布式系統(tǒng)有三個指標(biāo)落剪。Consistency矢门、Availability撒桨、Partition tolerance煤禽。它們的第一個字母分別是 C、A、P野芒。Eric Brewer 說蓄愁,這三個指標(biāo)不可能同時做到。這個結(jié)論就叫做 CAP 定理狞悲。)
https://www.ruanyifeng.com/blog/2018/07/cap.html
https://www.ibm.com/cloud/learn/cap-theorem#toc-what-is-th-DXABpEgu

這一時期撮抓,兩個重量級的開發(fā)平臺(編程語言框架)在競爭。

其一摇锋, J2EE(Java 2 Platform, Enterprise Edition)J2EE丹拯,SUN公司的著名設(shè)計(jì),由一組用于企業(yè)應(yīng)用程序開發(fā)的接口規(guī)范組成荸恕。企業(yè)可以在這些接口規(guī)范上開發(fā)應(yīng)用軟件乖酬,并將軟件運(yùn)行在實(shí)現(xiàn)了這些規(guī)范的中間件平臺中(提供這些接口的服務(wù)成為中間件)。其中有名的規(guī)范有:Servlet融求、JSP咬像、EJB、JTA生宛、JMS县昂。最初的接口規(guī)范發(fā)布于1999年。
J2EE陷舅,一開始叫Java 2 Platform, Enterprise Edition (J2EE)倒彰,后來改名為Java Platform, Enterprise Edition (Java EE) ,現(xiàn)在叫 Jakarta EE莱睁。

JAVA世界中有一個名為JCP(Java Community Process)的機(jī)制待讳。是使有興趣的各方參與定義Java的特征和未來版本的一個工作機(jī)制,JCP始建于1998年仰剿。JCP使用JSR(Java規(guī)范請求创淡,Java Specification Requests,實(shí)際可以理解為JAVA編程語言的需求規(guī)格說明書)作為正式規(guī)范文檔南吮,描述被提議加入到Java體系中的的規(guī)范和技術(shù)琳彩。JSR要從草稿開始提交,然后正式公開審查旨袒,投票,直到變?yōu)閒inal狀態(tài)术辐。前需要正式的公開審查砚尽,并由JCP Executive Committee投票決定。最終的JSR會提供一個參考實(shí)現(xiàn)辉词,它是免費(fèi)而且公開源代碼的必孤;還有一個驗(yàn)證是否符合API規(guī)范的Technology Compatibility Kit。

其二:Dot Net Framework( .NET Framework)點(diǎn)兒NET框架。由微軟公司設(shè)計(jì)開發(fā)的編程框架敷搪,主要服務(wù)于微軟自己的Windows系統(tǒng)兴想。第一版在2000年發(fā)布(就是為了與J2EE競爭)。.NET主要是運(yùn)行在windows平臺赡勘。包含一個豐富的基礎(chǔ)庫( Framework Class Library (FCL))嫂便。.NET的特點(diǎn)是支持多個編程語言編寫,并且編譯后能夠在不同語言之間互相調(diào)用闸与。.NET的運(yùn)行環(huán)境叫CLR(Common Language Runtime)

6. 新時代的應(yīng)用接口(2010-)

進(jìn)入21世紀(jì)10年代毙替,互聯(lián)網(wǎng)幾乎普及到中國每個家庭。家用電腦践樱、移動電話厂画、移動電子設(shè)備五彩繽紛。帶動了IT行業(yè)的繁榮拷邢,也誕生出互聯(lián)網(wǎng)公司袱院。軟件、硬件不斷發(fā)展瞭稼,成熟忽洛。分布式計(jì)算逐漸產(chǎn)生發(fā)展。誕生更多的接口技術(shù)弛姜。更多的操作系統(tǒng)平臺脐瑰、編程語言、硬件平臺不斷發(fā)展廷臼。 異構(gòu)兼容性苍在,成為必須要考慮的問題。最為顯著的就是云服務(wù)的發(fā)展(IAAS荠商、PAAS寂恬、SAAS)軟件即服務(wù),接口即服務(wù)莱没。移動互聯(lián)網(wǎng)的發(fā)展初肉。網(wǎng)絡(luò)速度的提高帶動了流媒體的發(fā)展以及更多清晰、動態(tài)交互的內(nèi)容以及軟件饰躲。

Ajax (Asynchronous JavaScript and XML")牙咏,技術(shù)的普及,使用Web應(yīng)用程序的用戶交互更為友好嘹裂。普遍發(fā)展開來妄壶。is a set of web development techniques that uses various web technologies on the client-side to create asynchronous web applications. 有了Ajax,web應(yīng)用程序可以在瀏覽器后臺發(fā)送與接受數(shù)據(jù)與服務(wù)器交互(這在以前寄狼,只能由客戶端應(yīng)用程序來干)Ajax不算新發(fā)明丁寄,也可以認(rèn)為是幾項(xiàng)技術(shù)的組合而成的新設(shè)計(jì)理念。幫助Web平臺發(fā)展。

與Ajax同時興起的還有JSON (JavaScript Object Notation, pronounced /?d?e?s?n/; also /?d?e??s?n/) 伊磺,一種標(biāo)準(zhǔn)開放的數(shù)據(jù)交互格式盛正,與文件存儲格式。同時也具有文本化可閱讀的特點(diǎn)屑埋。因?yàn)楦袷胶唵魏荔荩子诮馕觯ū萖ML容易)。很快流行開來雀彼。Douglas Crockford originally specified the JSON format in the early 2000s.

與Ajax同時發(fā)展起來的壤蚜,還有谷歌提出的云服務(wù),并率先在自家產(chǎn)品上提供了接口即服務(wù)的產(chǎn)品徊哑。通過OpenId袜刷,OAuth,的方式其他開發(fā)者可以訪問谷歌服務(wù)的API(例如莺丑,Gmail著蟹、Docs)獲取數(shù)據(jù)。擴(kuò)充產(chǎn)品能力梢莽。

REST(Representational State Transfer萧豆,表現(xiàn)層狀態(tài)轉(zhuǎn)換)是Roy Thomas Fielding博士于2000年在他的博士論文[1]中提出來的一種萬維網(wǎng)軟件架構(gòu)風(fēng)格,目的是便于不同軟件/程序在網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))中互相傳遞信息昏名。表現(xiàn)層狀態(tài)轉(zhuǎn)換是根基于超文本傳輸協(xié)議(HTTP)之上而確定的一組約束和屬性涮雷,是一種設(shè)計(jì)提供萬維網(wǎng)絡(luò)服務(wù)的軟件構(gòu)建風(fēng)格。符合或兼容于這種架構(gòu)風(fēng)格(簡稱為 REST 或 RESTful)的網(wǎng)絡(luò)服務(wù)轻局,允許客戶端發(fā)出以統(tǒng)一資源標(biāo)識符訪問和操作網(wǎng)絡(luò)資源的請求洪鸭,而與預(yù)先定義好的無狀態(tài)操作集一致化。因此表現(xiàn)層狀態(tài)轉(zhuǎn)換提供了在互聯(lián)網(wǎng)絡(luò)的計(jì)算系統(tǒng)之間仑扑,彼此資源可交互使用的協(xié)作性質(zhì)(interoperability)览爵。相對于其它種類的網(wǎng)絡(luò)服務(wù),例如SOAP服務(wù)镇饮,則是以本身所定義的操作集蜓竹,來訪問網(wǎng)絡(luò)上的資源。
目前在三種主流的Web服務(wù)實(shí)現(xiàn)方案中储藐,因?yàn)镽EST模式與復(fù)雜的SOAP和XML-RPC相比更加簡潔俱济,越來越多的Web服務(wù)開始采用REST風(fēng)格設(shè)計(jì)和實(shí)現(xiàn)。例如钙勃,Amazon.com提供接近REST風(fēng)格的Web服務(wù)運(yùn)行圖書查詢蛛碌;雅虎提供的Web服務(wù)也是REST風(fēng)格的。

AJAX左医、JSON、REST組成了新一代的Web Service設(shè)計(jì)理念同木。
  同期發(fā)展起來的還有新一代的移動端設(shè)備。新一代的手機(jī)革新移動端用戶界面。先前的鍵盤輸入坞嘀,升級到觸摸屏操作,并配備了語音毡鉴、手寫含思、AI助手甘晤。(隨著AI技術(shù)的發(fā)展含潘,AlphaGo的誕生,AI技術(shù)得到突破手寫識別线婚、OCR遏弱、語音識別、AI助手塞弊、AI話務(wù)員等等不斷涌現(xiàn))

iPhone漱逸。2007年1月泪姨,史蒂夫喬布斯,在the Macworld convention大會上饰抒,發(fā)布第一代的iPhone肮砾。并且首創(chuàng)應(yīng)用市場的概念并付諸實(shí)際。也誕生了在AppStore上的獨(dú)立應(yīng)用開發(fā)者袋坑。

Android 仗处,同樣2007年末,谷歌不甘落后枣宫,發(fā)布自己的移動端操作系統(tǒng)婆誓,Android。Android基于Linux內(nèi)核也颤。并且采取了開放式的聯(lián)盟計(jì)劃Open Handset Alliance 洋幻。移動設(shè)備廠商可以使用Android作為自己的設(shè)備的操作系統(tǒng)。

競爭少不了微軟翅娶,在之前微軟實(shí)際是有自己的移動平臺的(Windows Mobile鞋屈、Zune、WindCE)故觅。但與iPhone相比就差了一個時代厂庇,20210年微軟發(fā)布Windows Phone 7.意圖趕上新用戶體驗(yàn)。

云服務(wù)(SAAS输吏,PAAS权旷,IAAS)的繁榮帶來新的軟件理念:軟件即服務(wù)(SAAS),軟件在云端贯溅,通過瀏覽器直接訪問(與以前的B/S架構(gòu)軟件思路一致)拄氯,但更在軟件層面支持多租戶(一套軟件支持多個組織/用戶訪問,在以前郵件它浅、微博译柏、游戲等屬于此類,但SAAS將軟件服務(wù)延伸到更多專用應(yīng)用領(lǐng)域:財(cái)務(wù)姐霍、CRM鄙麦、電子商務(wù)等等領(lǐng)域也出現(xiàn)云端軟件)。同時镊折,也出現(xiàn)了API即軟件服務(wù)的新形態(tài)(API as Service)胯府。軟件對外發(fā)布的就是API,通過調(diào)用次數(shù)等形式收費(fèi)獲得收入恨胚。例如天氣查詢骂因、火車車次查詢、航空航班赃泡、客票查詢寒波、快遞乘盼、物流查詢。這可以視為分布式軟件的進(jìn)一步發(fā)展與內(nèi)涵擴(kuò)充(單體軟件所能承載的需求越來越有限俄烁。分布式系統(tǒng),大型軟件系統(tǒng)由多個獨(dú)立運(yùn)行模塊組成(SOA、微服務(wù)))勺阐。

進(jìn)入2010年以后,隨著alpha go的成功渊抽,AI新應(yīng)用推陳出新蟆豫,AI的新發(fā)展帶來新的用戶界面設(shè)計(jì):

  • 語音輸入的普及與應(yīng)用:語言助手(微軟小冰懒闷、Siri、小度小度……)愤估、智能語音客服帮辟,語言翻譯。
  • 手寫輸入的普及:高準(zhǔn)確率的手寫識別由驹,連續(xù)輸入
  • 新的體感交互界面:體感昔园、VR、AR

特別是類似Chat GPT等等的對話式AI工具的出現(xiàn)甥郑,為將來出現(xiàn)免編程自動生成圖形用戶界面提供可能荤西。通過對話式AI,不必預(yù)先開發(fā)復(fù)雜圖形界面店展,只需要提供一個文本對話框秃流,在對話交互過程中AI會根據(jù)用戶情景生成直觀的數(shù)據(jù)展現(xiàn)方式。

小結(jié)

從各階段的發(fā)展可以看出

  • 用戶界面的發(fā)展經(jīng)歷從簡陋到精美概说,從簡單到多樣的階段。而將來萍丐,體感互動放典,虛擬/增強(qiáng)現(xiàn)實(shí)奋构,腦機(jī)接口等新交互手段的發(fā)展必將會引發(fā)新的用戶界面革新
  • 應(yīng)用可編程接口,經(jīng)歷從無到有宴咧,從簡單到復(fù)雜径缅、從封閉到開放的階段。
  • 軟件之間的接口設(shè)計(jì)氧卧,經(jīng)歷了單機(jī)到分布式氏堤。而在發(fā)展過程中還出現(xiàn)了過度設(shè)計(jì)(網(wǎng)絡(luò)遠(yuǎn)程調(diào)用就像本地調(diào)用一樣的體驗(yàn))。后來主鍵的HTTP+JSON成為分布式調(diào)用的首選宿饱。

參考資料

  1. 計(jì)算機(jī)歷史:https://www.computerhistory.org/
  2. 百度百科
  3. 維基百科
  4. 《軟件工程通史》 [美] [卡珀斯·瓊斯Capers Jone]

修訂

  • 2022年05月05日 第一稿
  • 2023年04月16日 補(bǔ)充AI即界面
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谬以,一起剝皮案震驚了整個濱河市由桌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铭乾,老刑警劉巖娃循,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泉沾,居然都是意外死亡妇押,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門俊马,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柴我,“玉大人锋恬,你說我怎么就攤上這事编丘〖巫ィ” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵卵佛,是天一觀的道長敞斋。 經(jīng)常有香客問我植捎,道長,這世上最難降的妖魔是什么蚓峦? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任暑椰,我火速辦了婚禮荐绝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘角虫。我一直安慰自己,他們只是感情好均驶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布妇穴。 她就那樣靜靜地躺著隶债,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞒滴。 梳的紋絲不亂的頭發(fā)上赞警,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天愧旦,我揣著相機(jī)與錄音,去河邊找鬼旁瘫。 笑死琼蚯,一個胖子當(dāng)著我的面吹牛遭庶,可吹牛的內(nèi)容都是我干的粱年。 我是一名探鬼主播台诗,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼赐俗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粱快?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤漫雷,失蹤者是張志新(化名)和其女友劉穎降盹,沒想到半個月后谤辜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涡戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年渔彰,在試婚紗的時候發(fā)現(xiàn)自己被綠了推正。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舔稀。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡掌测,死狀恐怖汞斧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竞端,我是刑警寧澤庙睡,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布乘陪,位于F島的核電站,受9級特大地震影響贱勃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仇穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一戚绕、第九天 我趴在偏房一處隱蔽的房頂上張望列肢。 院中可真熱鬧,春花似錦拴还、人聲如沸欧聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弓摘。三九已至痕届,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锤窑,已是汗流浹背嚷炉。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工申屹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嚷那。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓车酣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贫悄。 傳聞我的和親對象是個殘疾皇子娘摔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容