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,多線程,應該全力深入這些核心,有閑功夫就到多在社區活動下 ,貢獻源碼,發文回貼都很好,讓有限的精力得到最大化的利用。