Win8杂谈
微软的平板
微软推出自有品牌的平板电脑,这个消息着实让我感到十分意外,微软较之于苹果,我认为拥有广大的硬件合作伙伴是微软的一个优势。WIN8的操作系统,几乎可以安装在任何一个OEM厂商生产的平板上,并且可以得到良好的驱动支持,这个是苹果和android所不能及的。现在微软又推出了自有品牌的平板,那么OEM就会有压力,更重要的是,现在android的发育的非常好了,虽然Google也有自有品牌的手机,但是android的版权成本非常低。如果要选择的话,OEM厂商还是应该更多的倾向于android。当然,Win8不仅仅是为平板电脑而设计的,还有OEM厂商的笔记本,台式机,零售等其他渠道来完成预计的销售目标。既然是这样的话,那么Win8的售价就应该是对这个目标的一个非常重要的因素。
关于metro
回头我们再谈谈metro,我认为metro是微软对于未来操作系统模型的一个尝试。之前我认为,软件和硬件是互相推动的,就像几年前,台式机和笔记本已经发展到一个瓶颈的时候,苹果推出了平板电脑,打破了这个僵局。平板电脑的出现和智能手机的发展,又给广大硬件和软件厂商带来新的机会。如果只是为了适应平板电脑的硬件,微软犯不着把metro做的和以前的应用程序那样大相径庭。之前的Windows程序,如果想移植到metro上面,需要做的改动非常大,甚至根本无法移植。为什么要做成这样,我认为这里面有一个主导因素就是操作系统的安全。在XP的时代,有管理员权限的程序可以使用任何资源,甚至可以干扰其他程序的运行,后来由于病毒的发展,微软才意识到应该给应用程序一定的限制,来使用系统资源。到了Vista就出现了的UAC,就是用户在使用软件的时候,要点击那个黄色的框框。后来到了Win7这个习惯被成功保留了下来,在Win7中,应用程序虽然也可以广泛地使用系统资源,但是很难干扰其他程序运行了。
这里还要插一段的就是chrome浏览器,当IE统治天下的时候,chrome浏览器的一些非常好的理念为其以后的发展奠定了坚实的基础,一个就是沙箱的安全机制,另一个就是多线程的异步操作。沙箱保证了每一个网页的独立运行,这样既不会对其他网页进行干扰,又不会让系统安全受到威胁,多线程无阻塞的设计让UI可以非常流畅的运行,即使其中某一个环节发生错误,整个程序依然可以安全的推出,而不像之前的Windows程序那样直接弹出程序无法响应的窗口。metro的开发模型,就是受chrome的启发,用一个现在比较流行的词就是在抄袭chrome。metro的应用程序独立在沙箱里面,而且能访问的系统资源有限。metro使用的是UI无阻塞的异步操作模型,即使后台程序崩溃,metro的程序的UI依然可以在跑,因为UI的进程根本无法阻塞,只有后台的进程才能被阻塞。微软想把这两个想法应用到Win8当中,但是如果全部的程序都按照这个模式来走的话,那程序的兼容性就是一个非常严重的问题。所以微软选择了用metro去践行这两个理念,而其他的程序依然保持向前的兼容性。
Chromium OS的销声匿迹
现在关于Chromium OS的新闻越来越少了,不知道google是不是要放弃这个项目,Chromium当初设计的时候,有一些亮点,比如说快速启动,无缝地同步云端,安全沙箱等,这些理念都是被现在的微软或者苹果践行着。Chromium为了保证软件的多样性,一方面想极力地推广HTML5,另一方面想通过浏览器的扩展程序来丰富功能性软件。之前我认为,总会有一个支持广大操作系统的软件框架出现,来解决程序员为了不同操作系统迁移代码所付出的重复性劳动。之前确实出现过,比如说QT,还有HTML5。现在我认为这个想法是不靠谱的,因为一个东西无法做得又大,又细。换句话说,如果有这样的框架,那么一些通用的控件,都是可以被这个框架的语言来统一描述的,但是,如果想利用操作系统的一些资源,那这个统一的语言就无法完成调用不同系统资源的操作,比如windows的路径和linux的不同,这个语言就无法统一的描述。这个问题出现的原因,一方面是历史的遗留,比如说windows的路径和linux的路径,一方面是操作系统厂家的制衡。操作系统不同于螺丝钉,螺丝钉是有工业标准的,因为螺丝钉很简单,如果未来的有一天,操作系统和螺丝钉一样简单的话,那么这个工业标准也会出现。至少,现在这个工业标准还没有出现。所以HTML5,就现在而言,并不能成为一个跨平台的软件框架出现,Chromium想基于HTML5的来扩展应用程序的多样性,时机还没有成熟。另一方面,基于浏览器的插件受限于浏览器,换句话说,插件需要通过浏览器作为中介去获取更多的系统资源,那么这个接口的设计就是一个非常重要的问题,既要兼顾于浏览器的稳定性,还要兼顾于操作系统对于浏览器的限制。所以这个插件,完成一些小的功能还尚可,但是完成一些系统化的功能就力不从心了。基于这两点,Chromium开发应用程序的方式,我认为需要重新设计一下。
软件的生命力
既然没有大一统的软件框架,程序员就要考虑在多个平台上开发软件,现在好在软件编程比之前效率高很多,并且面向对象的语言基本上大同小异。大多数的日常应用类软件比如说微信,微博等等,都是webservice的扩展。那这样的软件就容易跨平台,程序员就需要写前端就好了。但是,有些软件比如浏览器,游戏等等,就容易被平台所限制,而且要重写的代码非常多,这样软件的生命力就不如上面的。我认为软件就和一个生命一样,版本的更迭是他的新陈代谢,开始的时候,代谢速度很快,后来趋于平稳,最后等到不更新的时候,基本上已经死亡了。生命体的另一个特征就是自我复制,扩大自己的生存空间,这就是要在不同的平台实现自己的版本。另外生命体需要一个变异的过程,来进一步完善自己,有些软件在单一功能上已经无法继续更新了,那么就需要通过变异的方式,来加入更新的功能,或者完全换一个思路去实现原来的功能。metro的外观是一种变异,通过给客户带来不同的视觉冲击和操作体验,来占领未来的市场。微信的插件系统为了使自己更好的加入新的功能,提供了一个优秀的架构支持。如果说软件是一个生命体的话,那么背后的程序员和架构师,就是在扮演者上帝的角色,他们让代码拥有了生命的特征,进而把自己和团队的灵魂赋予这些生命体。