第一百六十六章 Min软件开发平台(1 / 1)

作为一个资深程序员,袁明对集成开发环境(IDE)认识比这个时代的任何人都深。早期的编程语言在送进编译器处理之前,必须要先经过流程图、撰写表格、打卡,所以当时并不需要开发环境。作为第一个高级语言的Basic,是第一个有开发环境的编程语言,同时也是第一个可以直接在主机或终端机前编写代码的编程语言。当时它的开发环境是采取命令行方式的,并不像后来的大多数开发语言使用选单和图形化。但是它提供了编辑、档案、管理、编译、调试、执行等功能,算是集成开发环境的雏形。

袁明用的第一款集成开发环境是TurboC,那还是因为大学里开始学习C语言时才用到了。后来就是TurboC、BorlandC、CBuilder、VisualC,再之后就百花齐放。根据项目应用环境的不同,从命令行到图形界面,从Eclipse到Idea,从C到Java,从编译到反编译,从单机到网络,什么环境都要用。所以,后世的资深程序员任何一个拿出来,都要秒杀这个时代的那些程序员大牛。

现在MinOS发布以后,只是对三方软件开发商提供了一系列的DLL库和资料,怎样开发和集成还需要软件商自己去琢磨。当时袁明就想做一个开发环境,帮助三方软件商提供工作效率,减少开发成本。他有着后世的经验,上来就准备做插件式集成开发环境。

插件式集成开发环境是后世发展起来的终极开发环境,它基于微内核架构,把各种开发工具作为插件,根据需要动态载入软件中,为集成开发环境提供了强大的扩展能力。Eclipse、Idea等著名集成开发环境都是采用的这种架构,一经推出就风靡了整个软件行业,老牌的IDE提供商纷纷不敌退场。

这款开发环境由于基于微内核架构,自然就可以载入多种编译器,因此为跨语言编程提供了良好的支持。袁明目前暂时只准备提供Basic、C语言和C语言,Basic和C都是面向过程的,C是面向对象的。面向对象编程在大规模软件开发中,具有强大的优势,相对来讲面向过程编程在小规模软件开发中具有优势。袁明知道未来不但有大规模的服务端系统,也会有小规模的移动系统,所以两者都支持在未来会具有更多优势。

袁明这次不但要支持多语言,他还有野心要做跨平台的开发环境。跨平台就是指软件开发一次以后,可以在多个操作系统上执行。这在后世Java语言之所以大流行,成为主流开发语言,和Java的跨平台性直接有关。要在多个操作系统上执行,就必须面对每种操作系统在内核、接口、执行机制上的不同。在没有跨平台能力以前,如果软件商需要在多个操作系统上发布自己的程序,就需要在每个操作系统上都开发一遍。

比如莲花公司,它的电子表格系统是在MSDOS、MakOS操作系统上提供的,当威阮的Win操作系统出来以后,它不看好Win操作系统,所以就没有投资在Win操作系统上。当Win大行其道之后,它再花了很长时间才做出了Win版的电子表格软件,而这时威阮的电子表格程序已经完全占领了市场。最终莲花公司失去了在电子表格市场的领导地位,破产被收购。

从这一点上就能看出,跨平台对软件商是多么重要!如果莲花公司当初是基于跨平台的开发环境下,开发出的电子表格系统就能很快迁移到Win上,而不用再做战略选择了。直接发布到Win就好了,软件几乎不用做什么修改。

跨平台能力其实就是在操作系统和软件之间加了一个中间层,叫做虚拟机。虚拟机的作用就是把软件的指令转为操作系统的指令去执行,每种操作系统的不同由虚拟机去识别。软件完全不用理会它会运行在哪个操作系统之上,它只要关心和虚拟机之间的接口即可。这样通过虚拟机就可以让软件开发更简单,开发速度更快,在多个操作系统上的发布更容易。

跨平台得到了软件开发和发布的便利时,也付出了性能的代价。不过随着计算机速度越来越快,这一点性能损失对于软件开发和发布的成本来说,越来越无足轻重。未来谁掌握的跨平台的标准和基础,谁就能统治软件行业,后世的Java已经证明了这一切。

这一世袁明不准备让Java出现了,他准备让Basic、C和C直接运行在虚拟机上,让这些语言具备了跨平台能力,这也算是为后世程序员做一些贡献吧。上一世袁明就经常吐槽,明明C和Java差不多,开发时还要用两个环境写,类库和工具也是完全不同的两套,一个项目做起来不知道有多辛苦。现在直接好了,C直接运行在虚拟机上了,无论你是做服务端开发,还是做桌面开发,你都可以用一种语言了!无形中学习的成本被降低了很多。

当然让C直接运行在虚拟机上,肯定会面临被吐槽降低C性能,对于这个袁明根本不想理会,上辈子见过太多C和Java性能之争,结果啦?跨平台还是成为了主流。

1月开始袁明集中精力到了复兴软件,专门组建了一个Min软件平台项目组。Min软件平台项目组内部包含两个子项目,一个是虚拟机MinVM项目,一个是MinIDE项目。由于现在图形界面还很简陋,MinVM项目直接就是命令行,MinIDE项目采用了最简图形化界面形式,类似于当初TurboC的界面。

由于MinVM存在,需要对标准的Basic、C和C语言进行改造,主要的部分就在于内存资源的分配和指针上。MinVM负责了内存资源的创建和销毁,所以编程语言将不再需要管理内存了;指针既是C、C灵活性的特色,也是程序混乱和泄漏的源泉,而且内存地址变成MinVM堆栈,无需再让程序员自己计算地址了,所以袁明直接取消了指针。改变后,由于新的Basic、C和C语言的语法和标准的不同,袁明就把他们重新命名为MinB、MinC和MinC语言。

Min软件平台是一个庞大的项目,仅仅MinVM项目组就有40多人,MinIDE项目组更是有100多人。也亏了苏省路9号地方大,装下了复兴软件上下300多人。不过后面还是要准备搬家了,以后人会越来越多,这个地方总会装不下的。现在安达已经对新买的新街地块做设计了,后续准备建成第一个综合商贸实体的安达广场,其中会建三栋超级高楼,其中一栋60层最高楼,已经被袁明预定作为复兴控股的新总部,改名为复兴大厦,未来将把所有复兴系公司都搬入进来。

袁明为保证这两个项目的质量,特地亲自写代码开发了一个叫SVN源代码版本控制系统,参考了后世的SVN软件,主要用于在团队开发模式下,代码签入签出的版本管理。程序本身并不大,连1000行都没有,关键是设计理念采用了无锁模式,代码的签入签出不需要给文件加锁;采用差分编码,只保留文件相继版本之间的差异,这个方法可以更有效的存储数个版本的文件;采用分支管理,可以让同一软件的不同版本以一棵树的方式存在。

此外他引入了后世持续交付的开发模式,从最核心功能开始,每天设定目标,每天交付,每天做一轮集成测试,下班前要保证集成后的程序可运行。把测试人员下放到开发小组中,基本2、3个开发人员和一个测试人员组成开发小组,测试每天检查开发的单元测试用例执行情况,以及持续集成测试情况,及时反馈到开发手边,让每一个发现的问题都不留到第二天。同时,也是起着督促开发人员提升开发质量的作用。

有了这一个SVN和持续交付,研发团队的软件质量和开发效率有了极大提升。如此袁明才能把更多的精力放在设计、架构和核心代码上。

感谢书友20201011093627431、书友160727062848488、红眼书痴的