作为一个资深程序员,袁明对集成开发环境认识比这个时代的任何人都深。早期的编程语言在送进编译器处理之前,必须要先经过流程图、撰写表格、打卡,所以当时并不需要开发环境。作为第一个高级语言的asi,是第一个有开发环境的编程语言,同时也是第一个可以直接在主机或终端机前编写代码的编程语言。当时它的开发环境是采取命令行方式的,并不像后来的大多数开发语言使用选单和图形化。但是它提供了编辑、档案、管理、编译、调试、执行等功能,算是集成开发环境的雏形。
袁明用的第一款集成开发环境是urb,那还是因为大学里开始学习语言时才用到了。后来就是urb、rlan、uiler、isual,再之后就百花齐放。根据项目应用环境的不同,从命令行到图形界面,从lipse到ea,从到aa,从编译到反编译,从单机到网络,什么环境都要用。所以,后世的资深程序员任何一个拿出来,都要秒杀这个时代的那些程序员大牛。
现在in发布以后,只是对三方软件开发商提供了一系列的库和资料,怎样开发和集成还需要软件商自己去琢磨。当时袁明就想做一个开发环境,帮助三方软件商提供工作效率,减少开发成本。他有着后世的经验,上来就准备做插件式集成开发环境。
插件式集成开发环境是后世发展起来的终极开发环境,它基于微内核架构,把各种开发工具作为插件,根据需要动态载入软件中,为集成开发环境提供了强大的扩展能力。lipse、ea等著名集成开发环境都是采用的这种架构,一经推出就风靡了整个软件行业,老牌的提供商纷纷不敌退场。
这款开发环境由于基于微内核架构,自然就可以载入多种编译器,因此为跨语言编程提供了良好的支持。袁明目前暂时只准备提供asi、语言和语言,asi和都是面向过程的,是面向对象的。面向对象编程在大规模软件开发中,具有强大的优势,相对来讲面向过程编程在小规模软件开发中具有优势。袁明知道未来不但有大规模的服务端系统,也会有小规模的移动系统,所以两者都支持在未来会具有更多优势。
袁明这次不但要支持多语言,他还有野心要做跨平台的开发环境。跨平台就是指软件开发一次以后,可以在多个操作系统上执行。这在后世aa语言之所以大流行,成为主流开发语言,和aa的跨平台性直接有关。要在多个操作系统上执行,就必须面对每种操作系统在内核、接口、执行机制上的不同。在没有跨平台能力以前,如果软件商需要在多个操作系统上发布自己的程序,就需要在每个操作系统上都开发一遍。
比如莲花公司,它的电子表格系统是在、ak操作系统上提供的,当威阮的in操作系统出来以后,它不看好in操作系统,所以就没有投资在in操作系统上。当in大行其道之后,它再花了很长时间才做出了in版的电子表格软件,而这时威阮的电子表格程序已经完全占领了市场。最终莲花公司失去了在电子表格市场的领导地位,破产被收购。
从这一点上就能看出,跨平台对软件商是多么重要!如果莲花公司当初是基于跨平台的开发环境下,开发出的电子表格系统就能很快迁移到in上,而不用再做战略选择了。直接发布到in就好了,软件几乎不用做什么修改。
跨平台能力其实就是在操作系统和软件之间加了一个中间层,叫做虚拟机。虚拟机的作用就是把软件的指令转为操作系统的指令去执行,每种操作系统的不同由虚拟机去识别。软件完全不用理会它会运行在哪个操作系统之上,它只要关心和虚拟机之间的接口即可。这样通过虚拟机就可以让软件开发更简单,开发速度更快,在多个操作系统上的发布更容易。
跨平台得到了软件开发和发布的便利时,也付出了性能的代价。不过随着计算机速度越来越快,这一点性能损失对于软件开发和发布的成本来说,越来越无足轻重。未来谁掌握的跨平台的标准和基础,谁就能统治软件行业,后世的aa已经证明了这一切。