Qt:Qt 的昨天,今天,明天

本文的作者 toartist 是一名 Qt 開發者,非常瞭解 Qt 的版本歷史和演進,ifanr 邀請到他寫了一篇 Qt 的回顧和展望文章。此外,作者也將參與諾基亞開發競賽,一起期待他的作品在 N8 上有出色的表現吧。

2010 年 10 月 21 日,諾基亞宣佈,決定將 Qt 作爲 Symbian 和 meego 唯一的應用程序開發框架。

那麼人們不禁要問,Qt 是什麼,爲什麼受到諾基亞如此重視,要將其作爲自己手機平臺的“唯一”開發框架?

Qt 爲什麼叫 Qt,不叫OT,不叫MT呢?

我們要先追溯到上個世紀末一個關於 Qt 的鮮爲人知的典故。話說在北歐挪威苦寒之地,這地方一年只有兩個月的太陽,平時都是極晝,所以那邊人因爲曬太陽比較少,於是都是金黃的頭髮,藍色的眼睛,皮膚白白黃毛特多。於是難得曬太陽就是件很享受的事情,就有兩個無聊的大學生很舒服地躺在桌子上嗮太陽,正嗮得舒服,兩小夥想了,閒着也是閒着,幹嘛不接點私活呢,於是就去接了個給一個什麼公司用 C++ 開發一個 Unix 用戶界面的程序,沒成想錢收得不多那公司還要求移植到別的系統別的電腦下,這兩費盡千辛萬苦終於搗出了一個可以跨平臺的程序。

其實這程序很小,就是一個按鈕,難得的是它能在好多系統下都能按,還是個C++ 的按鈕,後來他們把程序放到了網上,有人覺得有意思就參與一起開發了,那會兒 IT 人士過得都很滋潤啊,於是沒事就做做,之後很快就發展成了一套完整的 C++ 類庫。爲什麼大家叫它 Qt ,大概是因爲很可愛,很 Cute(QT的讀音)吧。

那麼那兩位大學生呢,時光流轉,幾年過去了,大學生也不再是大學生了,他們想 Qt 發展得不錯了,乾脆開家公司賣它吧,於是他們在奧斯陸合夥開了家公司叫 Trolltech,專門開發 Qt ,一開始不順利,怎麼也賣不出去,原來 Qt 在開源社區經過一幫牛人的鍛造,整得太高級了,一般人都用不動啊,於是他們嘗試將接口簡化,變成傻瓜式的開發工具,這也就是 Qt 一直宣傳的優點:

Code Less, Create More and deploy everywhere.

就這樣,一家做醫療儀器的公司有個技術總監在初步研讀了 Qt 的源碼後,終於讓他們賣出了第一個 Qt 的商業許可證。所以啊這偉大的產品都是經過很多磨難才慢慢形成的,而且要走得長遠,必須一開始就有很好的理念,看看同時期的 MFC 吧,真是氣死了多少 C++ 程序員啊,先天不足,難以爲繼。後來還有個小插曲,當那位技術總監年老色衰被公司趕出山門,Trolltech 收留了他並奉爲上賓,由此可以看到 Qt 創始人的一絲人性光輝以及能夠想象得到的當年 Trolltech 和諧的公司文化。

那麼由於 Qt 在開源社區走了那麼一遭,與開源社區結下了不解之緣,免費開源的軟件都可以免費使用 Qt ,於是 Qt 繼續在開源社區發揮無限的潛力,創就了一個又一個偉大的開源軟件,其中就包括了一個巨無霸,一整個圖形系統的 KDE 。看到這裏,聰明的人就領悟到了,Qt 還有另一個極大的優勢呢,便是有衆多的開源支持,使得開發更加容易。

爲什麼諾基亞要收購 Qt ?

說到這裏,大家還是不明白爲什麼諾基亞要收購 Qt , 因爲這時候 Qt 還只是在桌面平臺上混,不緊不慢地發展了好幾年,PDA 開始出來了,風靡一時,本着deploy everywehre 的原則,PDA 也是要跨的,於是開始開發嵌入設備版本的Qt ,在這裏 Qt 又一次藉助了開源社區的力量,整合了一套嵌入式的 KDE ,便是嵌入式程序員都知道的 Qtopia 。這個偉大的產品甚至從某種程度上超越了 Qt 本身,國內的老 Qt 程序員們倒有一大半是與其打交道的,其普及之廣是其他嵌入式操作系統所無法企及的。於是乎正遭到 iPhone 巨大打擊的手機業大哥大諾基亞便是因爲 Qtopia 而對 Qt 青睞有加,正好同在北歐的挪威芬蘭一家親,收購了 Qt 一起嗮太陽,看美女。

那麼諾基亞收購 TrollTech 之後,讓 Qt 又發生了多大變化呢,說到這裏,諾基亞不愧爲大哥大,國際大公司,出手便是不凡,從 4.5 開始,首先完全整合了Qt 嵌入式版本,並加入了 Symbian 支持,針對 Qt 運行速度不夠快的缺點大力優化底層,讓 Qt 性能有了質一般的提升,提高了一倍以上的速度,同時提出了個先進的 Kinetic 的項目計劃,也就是當前 4.7 裏的 QtQuick ,說到這個,就要提到微軟爲 .net 大力打造的先進的 UI 組件 WPF 了,設計與代碼分離,數據驅動式的開發,令美工與程序員可以無縫合作,這東西讓微軟得意了好幾年。不過由筆者看來, Qt 的這個組件更加引人注目,原因有三,

  • 基於 C++ 完全開源的開發模式令衆多喜歡刨根問底的 C++ 開發者受益非淺,熱情高漲。

  • 加入了強化了的 javascript 作爲動態語言契合了當前流行的開發模式,而且 javascript 這種類 C 式語法也令 C++ 程序員平滑過渡,比起其他類似 Ruby,python 之類的更加應用自如,而額外加入的數據綁定,與 C++ 擴展無縫集成等等方面比起WPF也是更加地方便易用。真正做到了快速開發而不失程序的高效。

  • 由於 Qt 的跨平臺性,QtQuick 在未來將有着更爲廣闊的應用,除了諾基亞主打的手機,平板電腦平臺,QtQuick 由於腳本文件式的開發方式甚至可以用到 web 應用程序上,當真是潛力無限,筆者作爲一名開發者,深深地要向 QtQuick 的設計者們致以崇高的敬意。


方纔介紹了諾基亞爲 Qt 帶來的最重要的東西,那麼還有什麼呢,讓筆者爲您一一道來。Qt 4.5 加入了一個叫 phonon 的組件,這個東西來自 KDE 的一個開源項目,強大的開源社區又爲 Qt 貢獻了一個設計優良的庫,在此之上開發多媒體程序只需幾十行代碼便可搞定,Qt 一直以來所追求的精神又一次得到了完美的體現,但諾基亞的開發人員卻不滿足,又在 4.6 加入了一個 multimedia 的庫,用以更底層的多媒體開發。真是面面俱到,令 Qt 的程序員們爲之瘋狂。

還有一個不得不提到的 webkit,這個在 Apple 的瀏覽器上大放異彩的開源瀏覽器引擎,Qt 理所當然地不能放過,Qt 版的 webkit 令 Qt 的開發者無論是打造自己的瀏覽器還是做與 web 相關的程序都只需輕輕幾行代碼便可做到,筆者不禁要感嘆,有了 Qt ,寫代碼真正是變成了樂趣。


而在手機方面,諾基亞做得更多,一個 Mobility 的 Qt 組件正逐漸完善,它封裝了諾基亞手機操作系統的底層,提供了一個統一的接口操作手機的各個方面,包括攝像頭,短信,以及智能手機的各種傳感器,在這方面 Qt 又超越了 google 猶抱琵琶半遮面的 Android 以及 Apple 完全封閉的 iPhone 的開發框架。所以擁有巨大開源勢力支持的 Qt 的野心又豈止在諾基亞本家,Qt 有兩個分支版本針對 iPhone 的 Qt-iPhone 和針對 Andriod 的 Android-Lighthouse 正在悄然無息地開發之中。

到了這裏,筆者作爲一名 C++ 開發者不禁要竊喜,正當 Android 選擇了 java,而 iPhone 使用着 object-c ,我們藉助偉大的 Qt ,必將凌駕於所有平臺之上。

從過去看到現在,那麼我們再展望下在諾基亞強大實力支持下的 Qt 又將有着如何輝煌的未來吧。

諾基亞已經爲 Qt 設置了 Roadmap,其它全方位的支持筆者就不多說了,除了一直承諾的代碼優化在開源社區的支持下會做得更好以外,下一代的 widget 將架構在 QtQuick 之上,一直認爲 Qt GUI 並無新意的程序員們可以看到 Qt 的努力了。這方面 Qt 並不遜於 iPhone 和 Android 的開發框架,未來也將做得更好,這點從 QtQuick 大膽而又優秀的設計上就可以看到,Qt 將 UI 變成了一門藝術。如果你是一名 C++ 程序員,Qt 就是你夢想中的開發工具,能爲你的開發效率提高何止 5 倍。而 Qt 也不僅僅屬於 C++,早在諾基亞收購之前就有了java 版的接口,python 的接口等等。那麼正在面對衆多混亂的開發工具而迷茫無助的你,還有什麼理由拒絕由諾基亞發出的 Qt 邀請?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章