Knowledge Gained by How Microsoft Lost the API War

读完墨菲定律发威的一周之后,ㄚ琪要继续读微软如何输掉API战争,ㄚ琪本来还以为约耳是微软这一派的,但是从这文来看,约耳也不见得是微软这一派的了,不过这一篇很像是预言的故事,这篇文在2004年预言的,但是更早之前约在‘90年代初期Robert X. Cringely预言主机时代会在2000年一月一日结束’,嗯,这个预言很快就知道没有实现,那时的‘IBM则是变身成一家巨大的老牌技术顾问公司,同时恰巧也在制造便宜塑胶电话。’

现在约耳好像要预言‘微软在战略上最重要的宝物Windows API要输了。’Windows API要输了?怎么在6年后的今天博客来还有看到精通 Windows API 函数、介面、程式设计实例 在卖,真是令人佩服啊!害我有一度还想学说,看来现在也可以把旧的书丢了吧!

开发者、开发者、开发者、开发者

有个结论‘如果你想要卖作业系统,最重要的就是让软体开发者愿意替你的作业系统写软体’,所以微软的CEO史蒂夫鲍尔默(Steve Ballmer)‘才会跳上舞台大喊“开发者、开发者、开发者、开发者。”’,原来是这样的道理,难怪这么多人想去微软上班。你可以加入微软的合作伙伴(Empower ISV)来开发,甚至也可以用免费的Visual Studio Express来开发。微软就是要赚作业系统的钱。

为什么苹果和Sun不能卖电脑

这里所说的卖电脑是指卖很大量的桌上型电脑。这一节里竟还学到有人在Linux, BSD, Solaris and Mac OS X开发Windows API,真令人惊讶,因为这简直是重写嘛!

微软内的两股力量

这两股力量分成‘Raymond Chen阵营MSDN杂志阵营’,Raymond Chen是努力让Windows可以向后相容的代表人物,而约耳也说这是微软成功的策略之一,你可以回去看蛋鸡的问题,在The Old New Thing部落格中有提到What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS?微软为了向后相容所做的很多努力,“有人指控微软在OS升级时恶意地妨害应用程式时我会觉得很生气。如果有任何程式不能在Windows 95执行,我会视为个人的失败。我有很多个晚上没睡去修正别人的程式,只是为了让它们能在Windows 95执行。”

‘另一个阵营我称之为MSDN杂志阵营,是以某一本开发人员杂志来命名,这本杂志充满了让人兴奋的文章,都在教你用各种在自己软体里结合微软产品的神秘方法来害死自己。’原来这个阵营这么屎,还好我也没花很多时间在上面,不过可能我也会死得很惨。

好了,现在有这两个阵营,我感觉到了一个卖茅跟盾的武器商来了,以子之矛陷子之盾,何如?的戏码又要上演,这个故事警惕我们千万不要包山包海,什么钱都想赚,这是行不通的,难怪说Windows API要输了!

微软失去向后相容的信仰

‘第一个大胜利是让Visual Basic.NET不必向后与VB 6.0相容。’嗯,有一点可以感觉到,确实那时的开发界应该有很大的骚动才对。Windows API快没有了,‘现在要开始准备迎接WinFX:下一代的Windows API’,这什么碗糕啊?原来这是Winodws Vista的API,但是说真的,除了有很炫的画面外,我怎觉得有点材材(台语)的。

因为这样,看来外面的开发商好像很多多转到web平台了,‘在dotcom兴旺初期建立了Yahoo! Store的Paul Graham很有力地总结:“新创公司现在有更多的理由去写Web-based软体,因为桌面软体写起来已经不那么好玩了。现在想写桌面软体就要照微软的规矩,呼叫他们的API还要应付他们多虫的OS。另外如果你真的写出什么热门的东西,可能会发现自己只是在替微软做市场研究。”’,看到这里,ㄚ琪还颇自豪的要为自己鼓掌了,这文是在2004年写,当我2000年的时候重返资讯界,我的目标就已经朝向web的程式了,看来我走对了,现在呢?我希望我可以继续走对未来方向。

自动排档获得最后胜利

这里有提到:‘为什么自动化记忆体管理能大幅提升生产力? 1)因为你可以写f(g(x))却不用担心要如何释放g的传回值,这表示你的函数可以回传很复杂资料型态,而这样的函数能让你以更高阶层的抽象想法来作业。 2)因为你不必花任何时间写程式码去释放记忆体或追查记忆体漏洞(memory leak)。 3)因为你不再需要小心安排函数的离开点以确保记忆体都有释放干净。’看起来Java会令人喜欢不是没有原因的,我也慢慢喜欢上它了,也难怪把这比喻成自动排档,确实自动排档在大部分的情况都很适合每一个人使用,手排的有比较难也没错。

一个Runtime全部搞定

.Net的产生,是我一直没有深入投入时间来学的,虽然微软高唱只用.NET就对了,但是我看见业界还是很多人用C、C++、Visual Basic 6.0以及原本的ASP,甚至是Borland还是不错的。说到这里,已经冒出了‘用.NET的都是在用ASP.NET来开发web应用程式,只会在Windows伺服器上执行并不需要Windows的用户端系统。’所以从这里大家就可以看出来,web应用程式要当道了。

噢,等一下,还有其他东西要出来!

前面的这个WinFX还不是终结版的喔,看这文说甚至还有‘代号Longhorn的系统除了其他东西之外,将会有一组代码为Avalon的全新使用介面API。’微软真的很有钱稿一些乱七八糟的东西,都不怕矛盾啊,而且大公司的灵活度一定很差。

约耳提到他的产品没有随着微软的策略起舞,这个策略在Knowledge Gained by Fire And Motion有提到,所以奉劝微软派的开发人员不要太深入,因为这是个无底洞,在我看起来是这样。

‘有正职的开发人员不会有时间追得上来自Redmond的所有新开发工具,因为微软有太多该死的员工在做开发工具!

这不是1990年代

微软的一些‘勇敢的新策略(.NET、Longhorn、Avalon之类的玩意)试图建立一组API把大家锁住。问题是大家都还在用1998时买来还很好用的电脑,这种策略是不太行不通的。’对啊,所以我看到我们的公司还在用Windows XP说,谁要用Vista或Windows 7啊,不需要用吧,很多软体厂商的程式也没那么快的跟进了,害
得我的电视盒只能在Windows XP上跑,我升了一周的Windows 7完之后,我把它冰封起来了,因为我还是需要一点娱乐的,而且要买个正式授权的,也要花费不少。

进入Web

已经快写完了,大家再忍耐一下吧,其实这一篇写到这里,也花了我两天的时间了,现在要讲到这个方便软体了,wen版的程式跟"rich client"应用程式其基本的优缺点很单纯:Web应用程式比较容易部署,而rich client应用程式反应较快所以使用介面比较有趣。

web版的程式就是方便,不需安装,但是还是有一些做不到的地方:

  1. 创造一个快速绘图的程式
  2. 写一个能标示红色波浪底线的即时拼字检查程式
  3. 在使用者按到浏览器的关闭盒时,警告使用者将会遗失其工作成果
  4. 不必连到伺服器来回沟通一遍,就能依据使用者的变更来更新小部份的显示,
  5. 建立一个不需滑鼠的快速键盘驱动介面
  6. 让大家在没有连上Internet时继续作业

OK!我想现在有些项目已经可以被聪明的Javascript开发人员解决了,所以像我爱用的Gmail,我还拿来收我的Yahoo信件,Hinet信件说,Oddpost这个我没听过的应用程式,听说都是可以解决上面很多问题的软体。

Web的繁荣‘表示微软的API突然间已经不那么重要了。Web并不需要Windows。’到这里又是一个矛盾的地方了,微软大力倡导IE免费,现在打到Windows API了,所以微软‘他们不再在未来计划里承诺像HTA和DHTML这类的新技术。Internet Explorer团队似乎也消失了;他们有好几年似乎完全没有动作。’咦?有吗?怎么IE8、IE9还是一直在演进?真的没有Internet Explorer这个团队吗?可能这一点约耳有点预言错了吧!

‘微软最近的重大思想基因(memo)是:“微软把公司的未来赌在rich client上。”’这我倒是第一次听到。

来自Avalon团队的Joe Beda说道:“Avalon(大体上还有Longhorn)是微软的基石。这句话表示我们相信你桌面的威力,能够完成各种了不起的东西,而且是不可或许的。我们正在持续投入桌面,我们认为这会是个好地方,而且我们希望自己能启动一波振奋…”

嗯,我想现在已经见证了吧!

我本身对这有一点点难过

约耳注意到这个关键:‘我注意到(而且也和求才业的朋友确认)纽约市这里会C++和COM程式设计的Windows API程式师年收入约十三万美元,而一般用可控代码语言(Java、PHP、Perl、甚至ASP.NET)的普通web程式师年收入是八万美元。这可是很大的差别,而当我和从事微软顾问服务的朋友谈到这事情时,他们承认微软已经失去整个世代的开发人员了。要花十三万雇一个有COM经验的人,是因为过去约八年来没有人自找麻烦去学COM程式设计,所以你得找个很资深的人来(通常都已经晋身管理阶层),说服他们再做个普通程式师去处理marshalling、monikers、apartment threading、aggregate、tearoff,还有其他一百万件基本上只有Don Dox会的东西。事实上连Don Box都无法忍受再回来看这些东西。’

有很多开发人员确实已经移到web开发了,像ㄚ琪就是一个其中的移民,ASP.NET很出色,而PHP也不赖啊,但是这些东西都是伺服器技术,所以真的可以不要有Windows桌面了,难怪Google也要做桌面系统,因为他们的桌面系统是以浏览器为导向的。

写到这里,所有的东西都直指Windows API被看衰了,好吧,我就不要再花时间摸这一块了!

Comments are closed.