Win8一天天临近,几天前消费者预览版发布,发现自己提不起什么关注的热情。我曾一度想去参加Metro应用线下讲座,报名后又注销。WPF还没推广,又推出了WinRT。Metro,WinRT,还有mac和android的,学这些都是浪费青春,web开发才是人间正道。不是这些技术不好,就像买衣服,商店里琳琅满目,或者更恰当的比喻是买房子,对多数人来说,就算买得起,这是要用几十年的东西,我们不能朝三暮四,要追求投资效益最大化,成功概念最大化。
当今世界日新月异,技术革命一波接着一波,一浪高过一浪, 这场技术大潮永不退潮,身处其中,我们要明白这样的道理:
1. 如果你有能力,可能在某一阶段站在风口浪尖,引领时代。
90年代的微软,00年代的谷歌,是其中的代表。下一个可能是fackbook。
2. 没有谁能永远站在风口浪尖之上。
虽然这很酷,所以这么做凶险莫测,天气预报永远不可能100%精确,。微软谷歌的成功,踩着无数的尸体。
3. 我们不能追上所有的浪头。
除非你有流星赶月的能力,虽然乘风逐浪也很酷。趁年轻可以尝试一些新奇,但每一次都要有付出和成本的,未来,迟早你会期望投入的回报。
4. 每波来潮中,一定有一支主流。
潮流的方向,是由主流决定。虽然其他支流,不断涌现,有些支流看上去气势澎湃,比主流还壮观,但几乎都将逐渐消逝,或汇入主流。
5. 一定会一支支流,以雷霆之势发展壮大,成为主流,引起新一波革命浪潮。
VC,又称风投,没有风险不投,就是靠猜这个吃饭。
世界在改变,没有永远不变的方向,不要想着一劳永逸。虽然我们绝大多数人,都只能跟随潮流,只要看准主流,我们就会应付自如,才不至疲于奔命。
回到与我们息息相关的软件产业中,过去数十年间,虽然新技术风起云涌,好戏不断,但是总有一个主线。80和90年代是PC时代,那时计算机早已经出现许多年,编程语言也早已发展到第三代。其中有许多还耳熟的名字Cobol, Fortran, Pascal等等,先后淡出了人们的视线。C语言原来是Unix系统的脚本语言,随着Unix推广而流行,后来成为跨平台的标准。简洁高效,移植性好,又具有所有其他结构化语言的特点,所以在众多竞争者中脱颖而出。不但至今占据编程排行榜第一宝座,而且排行榜前六,也都由一堆源于C语言“C系”语言占据。
回顾这段历史,我们可以看到主流技术的发展规律:本来是某个特定平台的解决方案,由于其先进特性而被人们注意,开放的特性使其可能被移植到其他平台,从而被更多人使用,又被移植到更多平台,最后形成标准,直至没有人抗拒。
当初如果两个大学生,都看到软件行业的前景,一个考Basic,一个考C语言,虽然后者难一些,却是有眼光的选择。
PC时代,软件开发领域,主流是C以及之后发展起来C++,应用于不同领域,各有所长。Visual Basic和Delphi都很酷, 但是,五年后、十年后,你的代码在哪里,你的程序谁在用?
90年代互联网开始萌芽,Java应运而生,2000年时,.NET作为Java的竞争者诞生。新一代,基于互联网的语言,也包括Python, Ruby, node.js将是主流,C/C++仍然不可或缺,领域或日益缩小。
当局者迷,旁观者清,虽然现在信息途径畅通,仍然很难预测技术的走向。但我们至少可以大致描述技术的趋势,什么技术顺应了这种趋势,什么技术是倒退(即使看上去酷)。互联网时代,要求彻底的开放性和一致性,空前地扩展性和兼容性。
苹果就是这方面极端的反例,Mac和IPhone系列上的技术,封闭又霸道。这种模式,再成功也只是苹果一家公司的成功,而不能惠及业界,带动整个互联网发展。这种成功,是难以持续的。
微软是矛盾结合体,我们看到,.NET是朝这个方向走的,尽管.NET是微软的产品,但遵循的标准是跨平台的。.NET Framework的初衷也是统一开发体验,比如ADO.NET提出的数据访问模式,这种体验会不断完善,比如在ADO.NET基础上的Entity Framework。但是在UI方面,统一得不好,先是Winform,再WPF,到现在的Metro/WinRT,而MFC依然发挥作用,变化太快,选择虽然多,但都没有形成跨平台标准(Winform 有Mono实现,WPF就没有)。
谷歌是主流方向的坚定执行者,Web开发才是主流,Html5才是主流。桌面上的应用迟早有一天会网络化,桌面开发和Web开发将融为一体。虽然前面路还很长,未来会遇到许多障碍和阻力,但历史潮流是阻挡不了的。
我们应该坚定地支持Google,选择地跟随微软,坚决地远离苹果。不是说苹果的产品不要买,是对苹果的技术敬而远之,不要做水果忍者里的一只苹果。像WinRT和Metro这些东东,周末无压力时可以玩一下,对于.NET程序员,特别是新人来说,Asp.NET,WCF,多线程,应该全力深入这些核心,有闲功夫就到多在社区活动下 ,贡献源码,发文回贴都很好,让有限的精力得到最大化的利用。