- Boost程序庫完全開發(fā)指南:深入C++”準(zhǔn)”標(biāo)準(zhǔn)庫(第5版)
- 羅劍鋒
- 1621字
- 2020-05-22 18:05:56
十周年紀(jì)念·前言
我們的十年
每日埋頭忙于工作和生活,等到寫下這些文字時(shí)才驀然發(fā)現(xiàn),十年的光陰已經(jīng)悄悄從身邊溜走,不由得發(fā)出“逝者如斯夫,不舍晝夜”的感慨。
十年前大多數(shù)人還在用電話線“小水管”撥號(hào)上網(wǎng),而十年后光纖寬帶100M/200M已是常態(tài)。十年前IE瀏覽器還是上網(wǎng)主流,而十年后Chrome成了絕對(duì)霸主……
十年前功能手機(jī)正處巔峰,iPhone是剛嶄露頭角的“貴族”,而十年后智能手機(jī)已經(jīng)普惠大眾。十年前3G甫出,手機(jī)只能打電話發(fā)短信,而十年后5G已經(jīng)“登場(chǎng)亮相”,各類App爭奇斗艷,移動(dòng)互聯(lián)網(wǎng)滲透到了生活的方方面面……
十年前電影《阿凡達(dá)》剛剛上映,掀起了3D/IMAX的熱潮,而十年后3D/IMAX已經(jīng)比比皆是,但《阿凡達(dá)2》依舊遙遙無期……
十年前我的大女兒只有一歲半,而十年后二女兒都已經(jīng)三歲了……
時(shí)間過得好快呀。
C++的十年
十年里的變化實(shí)在是太多太多,C++和Boost程序庫也是這樣。
在這十年里,C++推出了具有里程碑意義的C++11,開啟了快速迭代的進(jìn)化歷程。從C++14、C++17一路走來,最新的攜帶諸多重磅新特性的C++20即將正式發(fā)布,令人十分期待。
在這十年里,C++也受到了諸多其他語言的挑戰(zhàn),D、Rust、Go、C#、Java等新老對(duì)手輪番上場(chǎng),在C++的各個(gè)應(yīng)用領(lǐng)域都發(fā)起了“猛攻”。但C++作為昔日的“龍頭老大”,依然堅(jiān)守住了一些“陣地”,維持著名聲不墜。從TIOBE等編程語言排行榜來看,C++雖然已經(jīng)不復(fù)當(dāng)年的“王者榮耀”,但還是穩(wěn)穩(wěn)地占據(jù)著前五名之內(nèi)的位置,這對(duì)一個(gè)有著三十多年歷史的“老”語言來說算得上是相當(dāng)難得了。
可以預(yù)見,在下一個(gè)十年里,C++依然會(huì)在底層、系統(tǒng)編程等領(lǐng)域具有優(yōu)勢(shì),它的生命周期還很長,學(xué)習(xí)、使用C++還是有價(jià)值的。
Boost的十年
Boost作為C++的“‘準(zhǔn)’標(biāo)準(zhǔn)庫”,從十年前本書第1版時(shí)的1.42版本,發(fā)展到如今的1.72版本,中間經(jīng)歷了30個(gè)版本,基本保持著三四個(gè)月更新一次的頻率。
作為一個(gè)“程序庫”,它的改變沒有語言標(biāo)準(zhǔn)那么“激進(jìn)”,總體上保持著穩(wěn)定的態(tài)勢(shì),僅移除了很少的幾個(gè)舊組件(coroutine、minmal test、signal、tr1),同時(shí)其內(nèi)部不斷重構(gòu)、優(yōu)化、提升性能,還增加了數(shù)十個(gè)新組件。
通過這種嚴(yán)謹(jǐn)務(wù)實(shí)的做法,Boost一方面繼續(xù)兼容不同的C++標(biāo)準(zhǔn),另一方面又持續(xù)地?cái)U(kuò)充著C++的能力,為廣大程序員提供了一個(gè)龐雜而可靠的“編程武器庫”。無論你使用什么操作系統(tǒng)、編譯器、語言標(biāo)準(zhǔn),總能在Boost里找到稱心如意的好東西。
十年的時(shí)間再次充分證明,“‘準(zhǔn)’標(biāo)準(zhǔn)庫”的名頭絕非浪得虛名,而是實(shí)至名歸。
不過隨著C++標(biāo)準(zhǔn)和vc、gcc、clang等編譯器的發(fā)展,越來越多的Boost組件都開始要求啟用C++11了,這也算是件好事,畢竟C++98太“古老”了,適當(dāng)?shù)赝苿?dòng)一下語言標(biāo)準(zhǔn)升級(jí),對(duì)于你我來說,今后敲鍵盤的工作也能輕松一點(diǎn)。
本書的十年
本書第1版主要的開發(fā)環(huán)境是Windows和VC。到了第2版開發(fā)環(huán)境變成了Windows與Linux并重。隨后的第3版和第4版,因?yàn)槲业墓ぷ髦饾u轉(zhuǎn)移到了Linux,所以就放棄了Windows,全面采用了Linux和gcc。這些變化也反映了C++應(yīng)用場(chǎng)景的變遷:由客戶端轉(zhuǎn)向服務(wù)器端開發(fā)。
關(guān)于本書的內(nèi)容,因?yàn)榫帉懕緯?版時(shí)C++11還未發(fā)布,只能使用C++98,所以第1版中重點(diǎn)介紹了Boost庫里模擬C++11各種新特性、能夠簡化代碼的組件,如typeof、foreach、result_of。編寫本書第2版的時(shí)候C++11剛發(fā)布不久,編譯器的支持還比較弱,只適當(dāng)加入了少量C++11的內(nèi)容。而在編寫本書第3版和第4版的時(shí)候,各大編譯器對(duì)C++11的支持已經(jīng)很完善了,就完全采用了C++11,刪去了舊版里許多過時(shí)的內(nèi)容。
隨著時(shí)代的前進(jìn),C++變得越來越“大”,Boost也變得越來越“大”,想在一本書(即使它很厚)里囊括所有內(nèi)容已經(jīng)成為一個(gè)“不可能的任務(wù)”。所以這次的修訂我放棄了全面翻新的想法,而是盡量讓這本書保持穩(wěn)定,不引入過于復(fù)雜、高深的組件,只介紹Boost里最基本、最有用、最常用的知識(shí)。
希望本書能夠成為Boost世界的“新手村”,無論是誰,都可以在這里磨煉、休息,在積累足夠的經(jīng)驗(yàn)后,再邁向外面的廣闊天地。
十年感言
“十年之前,我不認(rèn)識(shí)你,你不屬于我。十年之后,我們是朋友,還可以問候。”
無論是新讀者還是老朋友,我都衷心地感謝您對(duì)這本書的支持,祝愿我們都能在下一個(gè)十年里取得更大的進(jìn)步,贏得更多的成功!
2020年2月20日于 北京 798園區(qū)
- 黑客攻防從入門到精通(實(shí)戰(zhàn)秘笈版)
- TypeScript Essentials
- GeoServer Cookbook
- Rust實(shí)戰(zhàn)
- 兩周自制腳本語言
- JavaScript 網(wǎng)頁編程從入門到精通 (清華社"視頻大講堂"大系·網(wǎng)絡(luò)開發(fā)視頻大講堂)
- Java設(shè)計(jì)模式及實(shí)踐
- ElasticSearch Cookbook(Second Edition)
- MINECRAFT編程:使用Python語言玩轉(zhuǎn)我的世界
- 從零開始學(xué)Android開發(fā)
- 深度實(shí)踐KVM:核心技術(shù)、管理運(yùn)維、性能優(yōu)化與項(xiàng)目實(shí)施
- 精益軟件開發(fā)管理之道
- HTML5+jQuery Mobile移動(dòng)應(yīng)用開發(fā)
- 交互設(shè)計(jì)語言:與萬物對(duì)話的藝術(shù)(全兩冊(cè))
- Java王者歸來:從入門邁向高手