软件接口的汗青和将来
软件的将来其实在很洪流平上要指望软件接口的前景如何。我们知道,计较机世界里的接口这两个字具有两种众所周知的寄义:其一是指软件自己的狭义“接口”,好比各类软件开拓API等。其二则指的是人与软件之间的交互界面。我们把这种人-软件之间的接口称作“用户界面”,也就是“UI”。
这里要接头的前一种界说: 软件差异部门之间的交互接口。凡是就是所谓的API——应用措施编程接口,其表示的形式是源代码。API的发现和成长大大促进了计较机财富的进步,同时API险些抉择着日常运算的各个方面。
大大都措施员承袭为软件用户设计优秀的用户界面思想,这一点早已深入人心。但是,另一方面,如何实现公道的软件API却只为少数人所重视。汗青证明,所有在应用上得到乐成的软件可能Web应用无一不是首先在API的设计上满意了用户的需求,即便这些用户险些从不直接利用这些API!
早在上个世纪的70年月,Digital Research公司的Gary Kildall为微型计较机创始了世界上第一个实用的软件API。这个初生的API大抵上有20多个对操纵系统的简朴函数挪用构成,这个操纵系统就是CP/M——当时但是相当的简朴和粗拙,而同样简朴的API却让整个计较机世界产生了重大变革。Kildall这个很有才华的计较机专家但愿本身设计的API能被其他科学事情者回收。至于商用方面的思量但是想都没想。并且,我们此刻的财富近况也证明:仅让科学家们俱欢颜是不会在贸易中赚到一分钱的!亏得,比尔·盖茨认识到,用于应用措施开拓人员而不是科学家的API绝对是贸易软件得到乐成的要害之一,这样一来,环境就很纷歧样了。
随后由比尔·盖茨等开拓的MS-DOS操纵系统全盘拷贝了CP/M及其API,并在这些API的基本之上又增加了一些简朴特性,务实的比尔·盖茨将Kildall的发现酿成了庞大的贸易应用并立即让MS-DOS的API在软件开拓中占据了主导职位。
然而,当微软公司推出Windows操纵系统的时候,系统的复杂API族就没有拷贝Kildall的成就了,但是,事实证明这些微软本身折腾出来的Windows API实在是糟糕的可以:丑恶的代码、杂乱的布局等等纷歧而足。可是,Windows回收了实用的伪多线程技能和高效的内存打点,出格是简朴易用的图形界面立即俘获了一般用户的忠心。大量的措施员也就随之投入到Windows措施的开拓中来,这些糟糕的API自然临危不惧了。微软耗费了5年多的时间改造和成长早期的Windows并在最终把持了全球桌面操纵系统市场。本日我们谁也离不开Windows API了,除非你不规划编写支持Windows的软件!
1988年,微软购置了Alan Cooper开拓的可视编程语言:Ruby。随后微软把Ruby和垂危的QuickBASIC语言组合起来建设了Visual Basic。Alan Cooper方面的Ruby实现了名为VBX的软件API,这种API可以让措施员动态地扩展Visual Basic成果,这一事实再次证明白软件接口具有多大的重要性。VBX接口也就是今朝火热的组件工具模子COM的前身。
在为微软的势力之外,Unix世界也发现了本身的API,这就是TCP/IP,有了它,网络之间就可以自由地通信了。TCP/IP首先在大学里得到了普遍的接待,然后,到了20世纪90年月,Marc Andreessen对准那些不是措施员却很想从利用计较机得到长处的年青人推出了世界上第一个Web欣赏器:Mosaic,厥后在此基本上降生了Netscape Navigator,可以说,正是Web和欣赏器的发现,我们终于被带到了信息时代。
最早的Navigator所能作的不过乎就是查找和显示文件,这和Macintosh Finder以致Windows Explorer也没什么两样,可是,正因为有了TCP/IP API,Netscape 就可以放眼于本机之外查找和显示其他网络上的其他计较机中的文件。新世界豁然洞开。
整个90年月,Netscape就象流感病毒一样满世界处处扩散。到了此刻计较机之间在通用API的尽力下可以很是利便地彼此通信,但险些没有一个用户会直接和这些TCP/IP接口交互。
假如没有优秀的、切适时代潮水的API,什么先进的技能都大概会不得不寥寂很长一段时间以期待运气的看重。一旦成熟的API呈现,软件的前景也就能大抵看到表面了。
举个例子,不管是你身上的手机照旧随身携带的PDA——好比PalmPilot,它们其实都是处理惩罚本领差异的计较机罢了,这两种设备都装备了短距无线(凡是是红外线)通信端口。但是,它们如何才气通过这些端话柄现彼此之间的通信呢?假如这些设备之间缺乏公用的API,你的手机就不行能和你的PDA实现通信。
此后会发生一种所谓的“生疏人处事”API,例如说,当你走在大街上的时候,你的手持设备,不管是手机、PDA照旧条记本电脑可能车载导航设备就会自动地和周围设施通信,商店、办公室、售货机和其他人等等。
#p#分页标题#e#
今朝有几家公司已经在致力于开拓以上的通用API,个中最有但愿的或者是Sun公司的Jini。可是,Jini的定位和以前的CP/M一样,也是更多的把方针放在了计较机科学家而不是办理方案处事商上。
我们本日的软件开拓很大一部门是开拓Web应用措施,驱动Web进步的是交互设计和商务模式而不是技能创新。从技能上说,Web规模的大开拓商不会对Web自己挖掘太多,他们缺乏编写大型、巨大措施的耐性。可是,反过来,这些大型厂商可以把其他开拓商预先编写的软件组件组合起来,这样,他们就比以往更多地依赖于为其编写的软件API。
总而言之,不管我们设计什么API,最重要的是首先要弄大白我们在为什么方针可能为谁在设计。这是必然要记得的要害点。只有在我们领略方针受众的需求之后,我们才大概建设有用的API,才气实现得当的用户接口,才气让差异人设计的差异软件部门精采地集成。