现代操作系统
现代操作系统
MarvinGuo 发表于3年前
现代操作系统
  • 发表于 3年前
  • 阅读 92
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

以前的博客地址http://www.cnblogs.com/Chrome/archive/2012/01/06/2314688.html

现在发表在oschina上,2012年写的,找一些认同的人


  很少写原创博,今天一篇,算是对自己以往学习的总结。

 

现代操作系统的起源,我想毫无疑问是从UNIX开始的。而UNIX的开始,又是从C语言开始。UNIXC是天生的一对。C写了UNIX,当然会有少量汇编。而UNIXAPI导出,当然是C的方式。也就是说要去使用UNIX的功能,第一理想编写语言当然是CC的特点无需要多说,介绍的书太多了。这一切看似自然而然,其中确有一个深刻的根基。C是程序语言友好语言,不知道是否有人明白。

  C语言的友好性,在于,它是基于函数的。而其它任何语言,都是可以很方便导入C语言的函数的。例如, C# P/Invoke, C++, Visual Basic.而即使角本语言,如Ruby,虽然不能直接导入C的库,但确可以通过扩展,可以生成Ruby模块库。而编写模块库的语言,当然也是C

 操作系统还在进化。C的缺点,写代码或多或少知道。系统越来越复杂,而面向对象是公认的复杂性的解决办法。操作系统需要基于面向对象的组件化程序库。AT&TC++成为公认的面向对象语言。而离开的AppleSteve Jobs, 创办了一家叫Next的公司,这家公司当然,也生产操作系统,名叫NextStep。大约都到了1993年这个时候,业界开始了组件化平台尝试。

 Windows引入一个叫COM的组件化平台,它不是由特定计算机语言生成的库,而是一种规范。C++被赋予了编写COM组件的任务。而天生的基于COM思想的语言,就是Visual Basic。它既可以生产COM组件,也可以消费COM组件。COM规范不复杂,但确以难以理解而著称。关于COM,有相当的多的书可以看。微软也出了一系列工具去解决这个问题,但好像除了微软,其它组织很难编写出好的COM。他们都是从微软挖人才能完成COM的编写。

 而在这个相当的时间,NextStep推出了自己的组件化平台Cocoa。熟悉的人知道它是苹果的组件化平台,但它真实起源确实从NextStep开始的。与微软的不同,它是基于一个编程语言的:Objective-C。这一切开始的自然而然,因为UNIX的平台也是从一个语言开始的。一个问题出现了,为什么Windows没有采用业界公认的面向对象语言C++去编写这个组件平台,而是自定义这个叫COM的组件开台?

 我查资料,没有答案。或许就是没有答案?历史在这里开了一个玩笑。作为C的面向对象的接班人C++,居然没有被选择去接面向对象操作系统的班。那么那个叫Objective-C的呢?其实它也是C的面向对象的接班人,只是它出身不如,名气不如,所以似乎走向小众。而似乎NextStep也是小众,因为当时Windows操作系统正在统治世界。

 历史没有如果。计算机的世界也没有如果。

 我给出的答案是,Objective-CC一样,是一门编程语言友好语言。也就是其它语言可以使用其编写的库。即使这门语言不支持面向对象,例如C,也是可以使用Objective-C的库。而C++编写的库,除了C++自身,其它语言很少能使用它编写的库。

 我们能看到C++语言发明人,Objective-C语言发明人评价C的,但我确没有找到C语言发明人评价C++Objective-C的。毕竟在一个理性世界(计算机世界),还是要靠实力说话的。 

 微软意识到了COM的问题,而这时出现了一个叫Java的东西。它给了微软启发,这东西 可以降低COM的复杂。于是出现了.Net,而且一直研究发展。而忘掉了自己是做操作系统的。直到它意识到,.Net虽然好玩,但确不能作为操作系统的API。这开开什么玩笑。时间不等人,而时间也确实不等人。

 Apple收购了NextCocoa装进了Mac OS。当然这时的世界,Windows依然大幅的领先。但技术的领先与否,仁者见仁,智者见智。Windows依然采用CAPI的开发方式,而Mac OS,已经开始装配先进面向对象组件化平台。这东西,微软以前也装配过,但被自己放弃了。开发的效率确实不可同日而语了。Mac OS还在慢慢发展。直到移动设备的大量出现,iOS,这个被改装的操作系统一下子统治了世界。当然能看到这个趋势也有别人,Google也发展了Android

 微软急了?!以操作系统起家的微软,如今确拿不出对抗的系统了。.Net首先就被弃了。COM呢?再拿这个上个世纪的东西去吓唬人,岂不是太丢人。还好,这些年他们发展了一个叫C++/CLI的东西。于是Windows8就是在这样的背景下研发。Windows8还将装配Win32 API,因为Win32下的桌面系统还是占了大部分份额。对于触摸世界,借用Windows Phone 7Metro设计风格,设计叫WinRTAPI。当然,还和以前一样,这东西还不是基于语言的,基于类似于COM的一个规范。研究底层的人还是能发现COM的影子。

 诸位,故事结束了吗?

 Android, WebOS, BlackBerry的故事呢?  Android用的Java, WebOS用的JavaScipt, BlackBerry用的AdobeAIRAndroid留有后手,抛弃Java,换其它平台也就可能。

 

 总结: UNIX真是伟大。能够继承UNIX旗帜也是伟大。



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 1
码字总数 1553
×
MarvinGuo
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: