程式設計師2013精華本

圖書信息

書名:程式設計師2013精華本
宣傳語:《程式設計師》雜誌2013年12期雜誌精華,講述成功產品背後的技術、人和事
作者:《程式設計師》雜誌社 編
ISBN978-7-121-22456-0
出版時間:2014年2月出版
定價:59.00元
頁數:472頁
開本:16開

編輯推薦

1、《程式設計師2013精華本》內容涉及產品設計、大數據、前端、雲計算、深度學習、SDN、移動網際網路、硬體、遊戲、高性能網站架構、微信、智慧型硬體、運維等,一本書盡覽IT熱點和最新技術,內容飽滿程度前所未有。
2、《程式設計師2013精華本》由《程式設計師》編輯部精心打造,對《程式設計師》雜誌2013年的內容再次進行了最佳化整合,內容更加聚焦,是一份濃縮的饕餮盛宴,值得閱讀。

目錄

專題篇
產品設計 1
產品設計 1
創新中國——中國設計體驗談 1
由點到面的用戶體驗設計 4
從產品設計流程中尋找好的設計 5
以痛點為中心的設計 7
Weico 背後的故事 8
大數據 10
大數據,且行且思 10
騰訊數據銀行TDBank 11
海量數據存儲最佳化實踐 14
基於Trident 構建大規模實時流數據處理系統 16
從存儲、計算和數據挖掘談流式處理 18
淺析騰訊TDW 對Hive 的套用和最佳化 20
百分點大數據與個性化實踐 22
生命科學中的大數據 25
前端 28
開源前端框架縱橫談 28
Web App 和HTML5 給Web 前端帶來的變化 30
前端模組化開發的價值 33
前端工程師如何應對移動Web 時代的套用開發 35
TypeScript :更好的JavaScript 38
CoffeeScript :陰霾天空的一抹藍 41
ClojureScript :前端世界的Lisp 42
針對應用程式設計的Web 程式語言Dart——《Dart 語言程式設計》作者Chris Strom 專訪 44
Node.js 高實時套用開發 45
為什麼Discourse 使用Ember.js 48
CSS 預處理器:Sass、LESS 和Stylus 實踐 50
中國雲計算大勢圖 53
中國IaaS 現狀與趨勢 54
IaaS 在中國落地的難點 56
PaaS,用還是不用,這是個問題 58
隔海觀潮看SaaS 59
國外雲計算創新與趨勢 62
安全:雲時代的定海神針 66
新浪雲計算SAE 的技術演變 67
又拍雲存儲CDN 技術探秘 70
Mobile, GO! 73
移動醫療,讓“個性化”服務用戶 73
移動支付走入線下商家 74
移動電商如何把握微信平台 76
移動位置服務的春天來臨 78
移動網際網路改變租房江湖 80
本地生活服務產品的移動化突圍 82
企業軟體如何做好移動化 84
雲+ 端:個人健康設備的未來之路——咕咚網CEO 申波專訪 86
Deep Learnning 88
深度學習: 推進人工智慧的夢想 88
Deep Learning 大家談 91
DNN 與微軟同聲傳譯系統背後的故事 92
DNN 並行計算框架 94
視頻分析中的深度學習 96
九問SDN 99
SDN 99
SDN 的前世今生 100
SDN : 網路創新的利器 103
SDN : 數據中心運維難題的終結者 106
SDN :“信息安全”定義網路——OpenFlow 安全分析 108
理性看待SDN 111
硬體 114
開源硬體、創客與硬體黑客——Andrew“bunnie”Huang 訪談錄 114
從教育到創意——Raspberry Pi 設計者Eben Upton 訪談 117
開源硬體:快捷的產品實現 119
硬體社區經驗談 122
創客空間,開源硬體和新山寨 124
硬體創業的各種傷——咕咚運動手環誕生的艱難歷程 125
我有一個夢想——3D 列印筆的創業之路 127
設計師的創客夢 129
Game Go Mobile! 130
移動遊戲,誰的天下? 130
二十年遊戲江湖——端游、頁游到手遊之路 132
以App Store 為例談遊戲成功的持續性 134
解讀遊戲設計的奧秘——《The Art of Game Design》作者Jesse Schell
訪談 136
數據驅動的移動遊戲最佳化 138
《瘋狂猜圖》的移動社交之路 140
《小小帝國》的探索之路 141
聽“宮爆老奶奶”講那運營的故事 142
高性能網站架構 144
網際網路系統架構的演進 144
大眾點評網的架構設計與實踐 147
Google Reader 關閉的機遇與挑戰——Feedly 與NewsBlur 擴展經驗談 150
高訪問量系統的靜態化架構設計 152
用Scala 構建19 樓社區 155
從暴走漫畫談創業團隊如何運用技術 157
高性能網站MySQL 資料庫實踐 159
高性能圖片伺服器zimg 162
微信 166
微信:顛覆者的力量 166
中小型電商如何玩轉微信公眾平台 166
國博微信公眾號一天漲出一個“小道訊息” 168
當《航班管家》遇上微信公眾賬號 171
智慧型硬體 173
智慧無處不在 173
極路由的硬體之路 175
走近“智慧型汽車”——寶馬集團中國技術中心主管Carsten Isert專訪 176
友寶售貨機,跨界正當時 178
運維 180
網際網路運維發展的三個階段 180
運維人員需要有產品觀 181
PPTV 監控平台演進 183
唯品會大規模日誌平台實戰經驗談 187
CDN 頻寬動態調整與跨節點調度 191
玩轉DevOps 194
Puppet 的“另一半” 197
回顧·展望 201
2013 年雲計算:讓創業更聚焦 201
對2013 年大數據技術的五個體會 202
2013 年前端技術發展與思考 205
2013 年移動Web 技術發展盤點 208
2013 年移動網際網路平台現狀與方向 210
2013 年手機遊戲行業八大趨勢 212
2013,創客崛起與發展 214
關於技術團隊管理的胡言亂語 215
2014 年,傳統企業軟體路向何方? 217
反病毒技術發展四部曲 219
對話篇
C++ 語言和軟體產業的發展——《C++ Primer》作者Stanley B.Lippman 專訪 222
自由比創新更重要——Richard Stallman 談自由硬體 224
頭戴顯示技術將顛覆電子產業——Epic Games 創始人Tim Sweeney 專訪 226
壓力益於成長——MemSQL CTO Nikita Shamgunov 專訪 228
釋放Erlang VM 的能量——Elixir 語言設計者José Valim 訪談錄 229
你所不知道的Facebook——《打造Facebook》作者王淮專訪 230
美團的奧秘:與王興聊技術的力量 232
王者之劍,來自我心——藍港線上CEO 王峰專訪 233
螞蜂窩,移動旅遊那點事兒——螞蜂窩CEO 陳罡專訪 235
與林仕鼎聊雲計算:——技術將重構整個社會 236
在挑戰和機遇中前行——新浪雲計算SAE 總監王利俊專訪 238
突破瓶頸需要由內而外——蘑菇街技術負責人岳旭強專訪 239
PDF 里的中國力量——福昕軟體總裁熊雨前專訪 240
管理篇
軟體方法 243
以哲學思辨的方法重新審視軟體開發 243
系統架構全生命期管理 245
敏捷:工程方法論的自最佳化機制 248
如何實現團隊的自組織管理 249
一種改善引導技術的看板方法 251
UML 六大誤解 252
研發實踐 255
門內門外看招聘 255
如何打造合作型團隊
——阿里內貿團隊敏捷實踐 257
高效能技術團隊的七個探索 258
打造高效協同的小而美團隊——大眾點評研發管理實踐 260
個人成長 263
技術團隊新官上任之基層篇 263
技術團隊新官上任之中層篇 265
技術團隊新官上任之高層篇 267
程式設計師學習能力提升三要素 269
努力成為優秀的工程師 271
謀定而後動:應屆生該如何了解意向公司 272
一分鐘先生 275
創業公司如何應對大公司抄襲 275
如何提高團隊協作的效率 277
如何招聘到合適的工程師 280
產品篇
選座位 282
借和用的預期 282
來點兒時尚 283
屌絲設計 283
可穿戴式設備的挑戰 284
乾貨 284
做不了 285
微信的體驗設計 286
考量“好產品”的三個維度 288
頁面仔和他的小創新 290
從網頁重構看移動客戶端重構——客戶端為什麼需要重構? 291
移動篇
遊戲 294
從遊戲研發和運營解析玩家歸類問題 294
關聯提示在用戶遊戲留存中的運作問題 295
故事元素在用戶遊戲沉浸中的效能分析 297
解構現有遊戲中常見的樂趣元素 299
遊戲中的順勢而生和逐勢而死 301
探究遊戲中的人文元素和視聽覺元素 303
遊戲中的資源、空間及用戶行為的探索 305
全球化發行下山寨遊戲將面臨大困境 308
策劃的許可權、視野與產品的最終高度 310
手機遊戲從業者,走在患得患失的邊緣 313
手遊行業當前的媒介行銷策略分析 314
開發 317
iOS 7 給開發者帶來的變化 317
ARM64 移動處理器解惑 319
Android 系統性能調優工具介紹 321
Android 應用程式性能最佳化 323
再談Android 軟體的安全開發 326
詳解Android 中的數字著作權管理 328
Android Says Bonjour 331
如何在Android 中使用MTP 333
UDK 讓小團隊挑戰iOS 大作 336
Cocos2d-x 數據驅動的遊戲開發實踐 339
為什麼Web App 的運行速度慢 342
雲計算篇
推薦技術 346
兩種基本的協同過濾算法比較 346
個性化推薦算法中的相似性指標 349
個性化推薦系統的測評體系 352
個性化推薦系統的缺失值處理 355
個性化推薦算法的分類 357
個性化推薦系統的調度框架 360
興趣圖譜與社交圖譜的個性化推薦 362
圍繞產品的個性化推薦系統設計 364
Hadoop與大數據 367
Impala :新一代開源大數據分析引擎 367
基於YARN 構建多功能分散式集群 368
深入剖析阿里巴巴雲梯YARN 集群 371
雲梯的多NameNode 和跨機房之路 373
Tez :運行在YARN 上的DAG 計算框架 375
大眾點評的大數據實踐 378
厚德載物:騰訊高一致性數據服務解決方案 382
探秘淘寶愚公數據平滑擴容和遷移平台 384
Spark :大數據的“電光石火” 387
構建彈性可擴展的資料庫集群 390
低延遲流處理系統的逆襲 392
分散式海量數據分析系統的設計 395
Redis 經驗談 397
網易雲資料庫架構設計實踐 398
基於MySQL 的L2 Cache 解決方案 401
NTSE :面向大型網際網路套用最佳化的MySQL
存儲引擎 403
TokuDB 在網易生產環境中的套用實踐 407
秒殺場景下的MySQL 實踐 409
架構 412
私有雲的細節 412
走近Google 基於SDN 的B4 網路 414
雲計算套用系統架構實踐三字訣 417
從一擴展到無窮大:架構藝術與工程實踐的華爾茲——讀“Scaling Memcache at Facebook”有感 418
Just Works 的力量——Google 科學家Jeff Dean 史丹福大學演講的啟示 421
技術篇
語言與工具 424
Clojure 實戰 424
HTTP 平台的安全穩定性架構 426
你該選擇Rails 4 嗎? 430
擁抱Gradle :下一代自動化工具 431
從UEditor 談Web 編輯器技術 434
不為人知的z-index 436
百度開源前端架構FIS——可持續發展的前端架構 438
如何選擇伺服器性能測試工具 440
使用HHVM 構建高性能PHP 伺服器 443
技術實戰 445
Google Glass 套用開發探索 445
Magic Arm——基於表面肌電信號的臂環互動方式解析 447
利用HTML5 監控網站性能 449
淘寶網前台套用性能最佳化實踐 452
Leap Motion 體感套用開發初探 454
對象存儲服務的技術選型 455
當電影遇上UNIX 藝術 461

精彩節摘

對2013 年大數據技術的五個體會
文/ 吳甘沙
2012年寫大數據文章,必先談網際網路的一分鐘、過去兩年數據占90%、一天數據產生量等於數萬年、IDC的多少ZB,很唬人;2013年初拿舍恩伯格的三大思維說事,有品位;後來人人都說全量數據、相關性!=因果性時,意興闌珊。所以轉而專心關注技術文章。這一年接觸了不少大數據的新技術,也形成了一些新的認識和體會,總結為五個方面:範式、捨得、安全、人機、價值。
範式
托馬斯·庫恩指出科學革命的結構起始於前科學,而範式的誕生使其進入常規科學。範式是一系列公認模型的集合體。大數據經過多年的積累和發展,現已存在一些模式、抽象和范型。我們從高層抽象、計算模型到底層架構,來看這些範式。
在高層抽象上,是數據管理與數據分析的融合。前大數據時代兩者是分開的,事務型RDBMS(OLTP)與分析型RDBMS(OLAP)各行其道,打通兩邊還需ETL。EDW有數據管理但分析能力有限;R、SAS、SPSS這樣的工具分析強,但能處理的數據通常為單節點的記憶體容量所限。大數據時代融合成為趨勢,SAP ANA和NewSQL為代表的記憶體資料庫平台採用列存儲,在一套數據上實現OLTP和OLAP。所謂的Big SQL或SQL-on-Hadoop集大數據管理和簡單分析能力於一身。對於更複雜的分析,以線性代數計算為代表,R、SAS、SPSS這樣的分析工具紛紛寄生在大數據管理和處理平台上(如Hadoop)。Stonebraker等在英特爾大數據科學技術中心搞起了SciDB,稱為數組DBMS,可以在資料庫上原生地跑線性代數運算。
在計算模型上,以數據流為代表的範式大行其道。其中包括數據動、計算不動的流式計算,和數據不動、計算動的批量計算。對於後者,又分為二階段的MapReduce、三階段的BSP和DOT、更複雜的DAG和多疊代計算(如Spark和Tez)。另一個維度是並行特性,數據並行最容易、套用最廣,而流式計算是任務並行、流水線並行。流式計算又分單記錄和小批量,其中小批量又引入了數據
並行。
數據流表現為計算圖,節點之間有數據依賴,同節點的數據間獨立運算;而圖計算工作於具有圖結構的數據之上,數據間有局部的計算依賴,同時多疊代又呈現計算步之間的數據依賴。大數據為圖計算帶來的機會是圖並行:因為圖結構的稀疏性,多數頂點只有較小的鄰域,這樣,在一個疊代中整個圖可以劃分為很多並行處理的鄰域。圖並行中的複雜依賴必須有一致性保證,如GraphLab的多種一致性模型。其在分散式計算中的挑戰是計算跨伺服器的劃分,具體來說:劃分儘量均勻,套用哈希劃分和圖的邊切割時注意data skew;通過鏡像、最小切割等機制減少跨伺服器依賴和通信;通過輕量級的任務調度和通信,例如U.T.Austin的
Galois可高效實現圖計算。另外,計算模型的不同顆粒度和同步/異步模型也會影響性能。較之BSP的粗粒度、同步模型,GraphLab的異步、細粒度顯著加速多疊代算法的收斂。單記錄流式計算同樣是異步、細粒度,延遲也低於同步、粗粒度的小批量流式計算。最近細粒度任務作為一種底層實現機制頗受青睞,例如伯克利的Tiny Tasks(可能會用在Spark上)和上述Galois。
流式、批量和疊代計算模型之間形成融合,如T w i t t e r ummingbird在編程接口層面融合,Lambda架構在套用框架層面通過增量計算和批量快取實現融合,而Spark在實現框架層面完成融合,在這一層面微軟也提出了Naiad和REEF來支持多計算模型。
在最底層的架構上,最熱的範式是數據在存儲層次上的上移,即記憶體計算。無論是分散式記憶體快取、記憶體檔案系統(如Tachyon)、記憶體資料庫,還是記憶體計算框架(如Spark),記憶體是獲得低延遲的主要途徑。目前記憶體計算主要的問題是容量、容錯和低延遲互聯。未來三年,下一代非易失記憶體將登上舞台,與DRAM相近的性能、位元組定址、更大的容量和可持久性,預計將引發大數據軟體棧的大變革,很多中間層將會被拿掉,容錯更簡單,虛擬記憶體、檔案系統等都可能發生巨變。基於矽光的互聯也將根本性改變大數據架構的風景,英特爾與康寧合作的MXC技術已經實現了單個lane 1.6Tb/s的頻寬,結合英特爾的Rack Scale Architecture,有望實現計算、通信、存儲和記憶體的完全分散化(disaggregated)架構,靈活地適配前文中不同高層范型。同時,新的互聯結構也將改變目前過深的軟體棧。希捷的Kinetic存儲已經預示了這一方向,將原有架構中的作業系統層和存儲層軟體大幅簡化;將硬碟設備IP化,置於乙太網的另一端,在客戶端直接呈現K/V式的對象存儲接口。
架構的捨得
天下沒有免費的午餐,突然偌大的數據洪流奔涌而來,原有的架構無法通過漸進最佳化應對。因此必須大膽舍,才能得。捨得的一種體現是舍大得小,例如以下幾個方面。
■■ 數據壓縮已成為所有大數據架構的標配,除Hadoop採用的幾種壓縮算法,2013年初Google開源的Zopfli以2-3個數量級的計算增量使壓縮率提升3%~8%,更適合變化性較小的數據(壓一次就行)。對多數系統,壓縮解壓縮發生在記憶體和I/O之間,記憶體里已是解壓的數據。也有少數系統,如IBM的Netezza,數據在記憶體中仍保持壓縮狀態,在CPU讀取時經由FPGA實時地流式解壓,進一步提升了記憶體空間效率。
■■ 數據的列存儲能夠使壓縮率獲得數量級的提升,而它本身也是舍大得小的辦法,因為往往查詢並不需要訪問所有列,所以數據載入時無需讀入不相干的列。好的SQL最佳化器也對行存儲做pruning。
■■ 採樣和近似在精確度要求不高的情況下很有效。例如,BlinkDB通過離線和線上的兩重採樣,在100個節點的集群上對數十TB的數據進行查詢,獲得小於2秒的延遲,但同時誤差率達到2%~10%。Shark和Facebook的Presto都有望集成BlinkDB。另一個例子是Druid採用HyperLogLog算法加速count distinct。
■■ 快取機制也是天然的舍大得小。例如,分散式快取根據數據的活性和局部性識別出活躍數據,並將其置於記憶體中。
為了得到計算的實時性,常常要舍舊數據、冷數據和靜態數據。流式處理便是這樣。2013年應該說是流式計算大熱的一年,除老將Storm之外,Google的MillWheel、LinkedIn的Samza、伯克利的Spark Streaming和Twitter的Summingbird相繼進入視野。此處的舍可以通過增量計算彌補,早幾年有Google的Percolator,今年百度大數據首席架構師林仕鼎在《架構設計與架構師》中揭示百度存儲中類似的實現,Storm作者Nathan Marz的書雖然跳票,但Lambda架構已經名滿天下。反過來,捨實時的更新數據,只專注於較舊的惰性數據,也是得低延遲的辦法。例如Google的Dremel,對唯讀的PB級數據實現秒級的即席查詢。
以NoSQL資料庫為代表的大數據架構多採用舍一致性來獲得回響性和擴展性的設計。基於CAP理論,分散式系統既然不能舍P(分區容錯),就必須在A(可用性)和C(一致性)有所取捨。七八十種NoSQL資料庫,多數採用弱一致性獲得高擴展性下的快速回響。典型的如BASE(英文意思為“鹼”),舍嚴格一致性,得最終一致性,與ACID(英文意思為“酸”)針鋒相對。在具體實現上,也有不同的選擇。BigTable類對於讀是強一致性,對查詢是最終一致性。而Amazon的DynamoDB提供可選擇的一致性,根據服務/價格水平提供強一致性或最終一致性。Google的Megastore採用分層的一致性,在Entity Group內部採取滿足ACID語義的強一致性,在Group之間則選擇弱一致性。
一致性的取捨已經從NoSQL資料庫延伸到更多的領域,例如2013年比較火的分散式機器學習和線上/流式機器學習。有些機器學習算法推出了並行實現,例如並行Gibbs Sampling採用colored ields或Thin Junction Trees。但更多的機器學習算法具有比較強的串列計算/數據依賴,無法適用於大規模分散式計算環境。Google的DisBrief嘗試將細粒度的、頻繁的依賴(如單次疊代間的依賴)打破,變成粗粒度的、多個疊代周期發生一次的依賴。它對樣本數據切分,對子集獨立訓練模型副本,定期地將副本更新到全局參數伺服器,或從參數伺服器獲得其他副本的更新。它背後的邏輯是:放鬆數據同步中的一致性,固然會導致訓練過程中丟失數據,從而降低精度;然而,大數據集的學習可以彌補單個數據精度的丟失,而且放鬆的一致性允許學習在大規模集群上並行進行。CMU進一步把這種機制抽象成SSP(Stale Synchronous Parallel),把參數伺服器和參數的有限過期(bounded staleness)模型化。GraphLab提供了靈活的一致性選擇:如果算法允許丟失個體訓練中的精度,則選擇放鬆的一致性;如果算法選擇放鬆的一致性可以取得與串列一致性同樣的效果,就不必用全一致性。例如,並行Gibbs Sampling在第一步做並行圖著色時邊一致性就足夠了,而第二步做並行Gauss-Seidel調度時,只要更放鬆的點一致性就行。
線上/流式機器學習是另一個問題。流式機器學習並非指流式數據的one pass近似算法(如快速k-means),而是指新數據流入時可以線上學習、更新模型,同時又能不間斷地利用新模型進行分類或預測。這裡同樣涉及一致性的取捨。例如Jubatus的mix同步機制在更新全局模型的同時允許訓練和分類/預測並發進行,雖有數據的丟失,但基於上面同樣的邏輯,更多的數據可以彌補。
還有一種捨得是數據量與算法複雜度的權衡。Peter Norvig早在2009年就用機器翻譯的演進揭示“大的相對低質量數據集+簡單算法”優於“小的優質數據集+複雜算法”,推廣到其他基於Web文本的機器學習。簡單的統計算法(如n-gram和線性分類器)配上百萬以上的特徵,要比試圖涵蓋通用規則的精心設計的語言模型有效。基於此,Chris Anderson隨即喊出極具爭議的“理論的終結”,認為數據的充沛使得簡單的統計算法和套用數學可以取代科學理論方法。這種數據帶來的不可名狀的效力,以及理論的缺位,在今年大熱的深度學習里展現無遺。深度學習的成功被認為是源於分散式計算和大規模數據處理的大跨越加上機器學習的tricks,在理論上還是說不清道不明。但深度模型也一定程度上說明Norvig的上述結論也許過於簡單化。大數據,尤其是非結構化數據里蘊含的豐富信息維度,需要複雜的、高容量的、具有強大表達力的模型。
在Norvig的結論上略作推論得知,大數據背景下諸多簡單算法加起來優於單個的複雜算法。這在IBM Watson主機上得到了展現,該系統運用了上百種算法,從不同維度分析數據/證據對備選答案的支持程度,通過“Society of Mind”、眾愚成智的方式獲得更高的準確度。
數據安全和隱私
當跟客戶忽悠全量數據的理念時,碰到最多的反饋是沒有全量數據。數據的孤島化沒有改觀,主要有兩個原因:一是沒有經濟上的激勵機制,二是數據安全和隱私的憂慮。前者需要研究數據定價、個體經濟學的價值交換機制;後者需要法律和技術的雙管齊下。法律上,必須釐清數據權利/權力,例如數據擁有權(作為資產的所有權)、隱私權(什麼不給別人)、許可權(什麼給別人)以及許可後的撤銷和轉移權、審計權(有權知道被許可方怎么使用數據)和分紅權(數據具有外部性、持續產生價值、擁有者分享價值的權利),本文不作細談。這裡只說技術上的一些進展。
首先是靜態數據的安全,主要是訪問許可權控制。目前有趨勢科技在HBase上做的表級安全,以及美國國安局神器ApacheAccumulo做的cell級安全。英特爾也在HBase上實現了cell級安全。
其次是動態數據的安全,主要是加密和動態審計能力。目前動態審計能力主要還是在企業內表現為數據泄露防護(DLP)技術。業界也在考慮如何允許個人在更廣範圍內控制自己的數據。再者就是從單個企業封閉環境的安全到多方的可控數據共享和安全計算。關於多方安全計算,圖靈獎得主姚期智老先生1982年就提出了“百萬富翁困境”問題:兩個百萬富翁要比富,但誰也不願說出自己有多少錢。反映到時下的熱點,就是美國國土安全部有恐怖分子名單,航空公司有乘客飛行記錄,原來國土安全部霸王硬上弓強索數據,“稜鏡門”後航空公司硬氣了說涉及客戶隱私不給。但最終雙方還是有共同的目的,即發現恐怖分子的行蹤。這就需要可控的、確保數據保密性和完整性的數據共享。現在的技術解決方案有加密協定、支持直接查詢的加密資料庫和可信計算環境等。
最後就是隱私保護的開放數據。目前開放數據的匿名化並不成功。例如健康數據開放時把姓名、地址拿掉了,但還是被人通過性別、出生年月和郵編反推出個人。又如電信公司開放數據時也拿掉了個人識別信息,但根據數據中“某時某基站發出tweet”的信息,硬是在Twitter上識別出了個人。英特爾支持普林斯頓大學在這一領域獲得了進展,通過differential privacy插入噪聲,在保留數據集統計特徵的前提下實現匿名化的不可逆。人與機器的此消彼長在前大數據時代,即使機器的計算能力是數據分析的基礎,但人起到至關重要的因素:人提出假設、精挑細選獲得數據、建立模型最後檢驗結果。數據科學家的直覺和靈感是數據分析成功的基礎。在大數據時代,數據不再是稀缺資源,數據收集能力進入基礎設施,社會個體在無意識中被數據化(datafied),機器無需人的介入直接訪問散落各處的數據。這時候人的關鍵性作用被削弱了。人的假設或許以偏概全,人挑選數據可能帶有主觀色彩(像《Raw Data Is an Oxymoron?》里說的),而機器可以做到不偏不倚不漏。更重要的是,其以機械化的數據挖掘尋找相關性來替代主觀假設,讓“數據自己找到數據、相關性主動找到你”。Google Correlate可以發現任意關鍵字之間的相關性,或關鍵字與任意輸入曲線的相關性,這是傳統的人主導的數據分析無法實現的。
有人說在涉及“曉意”的領域,人是無法替代的。這在前大數據時代是事實。《點球成金》講的是數量化分析和預測對棒球運動的貢獻,它刻意或無意忽略了球探的作用。從讀者看來,奧克蘭競技隊的總經理比利·比恩用數量化分析取代了球探。而事實是,在運用數量化工具的同時,比恩也增加了球探的費用,軍功章里有機器的一半,也有人的一半,因為球探對運動員定性指標(如競爭性、抗壓力、意志力等)的衡量是少數結構化量化指標無法刻畫的。大數據正在改變這一切。人的數字足跡的無意識記錄,以及機器學習(尤其是深度學習)曉意能力的增強,可能逐漸改變機器的劣勢。今年我們看到基於大數據的情感分析、價值觀分析和個人刻畫,當這些套用於人力資源,已經或多或少體現了球探承擔的作用。在技術層面,人在機器學習中扮演的角色也在弱化。傳統機器學習是特徵加模型,模型大同小異,關鍵在特徵。而特徵抽取是人工工程,經驗豐富的團隊可以發掘出更好更多的特徵,但也
面臨邊際效益遞減的情況,最後就無法提高了。數據樣本的增加超出了人工提取有效特徵的能力時,機器特徵工程的優勢就出來了。相比傳統淺層學習,深度學習使得機器能夠做特徵的學習,從海量數據中構造海量的冗餘特徵,以數十億計,加上非線性模型,優勢一下體現了出來。當然,目前深度學習仍然需要人的經驗,亟待理論上獲得發展,未來機器的優勢更將明顯。
可以預見,在數據科學家的巨大缺口下,人與不斷發展的機器分析工具將會磨合和重新分工。如果說一兩年前國外的大數據技術公司主要著力於以Hadoop為主的基礎設施,2013年能看到更多的產品是在數據分析工具上。傳統的數據分析工具,如R、S、SAS、SPSS、WEKA,也努力與大數據基礎設施結合,突破數據容量和單節點的限制。在研究界,MLBase作出了很有價值的嘗試,幫助終端用戶(機器學習的小白)選擇最佳的特徵和模型。大數據的可視化也越來越強調互動式,即可視化不只是展示答案,它還是激發問題的過程,需要人與機器的協同。人與機器的合作還體現在眾包,例如Google的reCAPTCHA和伯克利的CrowdDB,還有國內麵包圈(Moboq)的眾包問答服務。
大數據的價值維度
技術最終要落地為價值服務。北京理工大學大數據搜尋與挖掘實驗室主任張華平提出了大數據“見微、知著、曉意”的價值維度,我將其映射到3V和時空象限中,並加以擴展,如圖1所示。
圖1 大數據的價值維度
“見微”與“知著”在Volume的空間維度。小數據見微,作個人刻畫,我曾用《一代宗師》中“見自己”形容之;大數據知著,反映自然和群體的特徵和趨勢,以“見天地、見眾生”比喻之。“著”推動“微”(例如把人群細分為buckets),又拉動“微”(例如推薦特定人群的偏好給個人)。“微”與“著”又反映了時間維度:數據剛產生時個人價值最大,隨著時間decay最後退化為以集合價值為主。
專題篇
“當下”和“皆明”在Velocity的時間維度。當下在時間原點,是閃念之間的實時智慧,結合過往、預測未來,可以皆明,即獲得perpetual智慧。《西遊記》里形容真假孫悟空,一個是“知天時、通變化”,一個是“知前後、萬物皆明”,正好對應。為達到皆明,需要全量分析、預測分析和處方式分析(為讓設定的未來發生,需要採取什麼樣的行動)。
“辨訛”和“曉意”在Variety的空間維度。基於大體量、多源異質的數據,辨訛過濾噪聲、查漏補缺、去偽存真。曉意達到更高境界,從非結構數據中提取語義、使機器能夠窺探人的思想境界、達到過去結構化數據分析不能達到之高度。
結語
回望大數據的歷史:1992年出現TB級數據倉庫,1998年“big data”一詞出現在ACM學術期刊,2001年Doug Laney提出3V(Volume,Velocity,Variety),緊接著Jim Gray等揭示第四範式、Google發表三大論文、Hadoop橫空出世,2008年《自然》雜誌推出“big data”專輯,2010年《經濟學人》和《科學》雜誌點燃火箭推進器,大數據蟄伏20年終於一飛沖天。然而,這兩年對大數據過度消費了,理念上的高調不能掩飾實踐上的蒼白。Gartner的2013 ype Cycle聲稱大數據進入“幻滅期”。確實,跟企業交流中發現太多問題,全量數據沒有、存儲成本與商業回報不平衡、老數據失去辨識度成為負擔、Hadoop太難用、數據採集與分析的脫節、業務與數據分析的脫節、數據交換的安全憂慮等。2014年,期待大數據技術真正接地氣,在推動國家治理和產業升級中華麗轉身。

作者簡介

《程式設計師》是中國影響力最大的開發者專業期刊,創辦於2000年10月,以產業化、專業化、人文化、個性化的獨特定位來關注程式設計師專業群體,同CSDN網站形成良好的資源互補。其讀者群包括開發者、項目經理、技術總監(CTO&CIO)、IT專業人士、編程愛好者等。《程式設計師》創刊以來,以其高質量的內容受到廣大讀者的好評。第一期至今,每期讀者調查滿意度都超過90%。

前言

馬年新春,《程式設計師2013精華本》如期而至。這期精華本緊緊圍繞雲計算、大數據、移動、智慧型硬體、產品設計等熱門話題,進行了全面而深入的解析和討論。
基於原有欄目和本年度熱點,《程式設計師2013精華本》的結構分為以下七個篇章。
專題篇:綜合了2013年1-12月刊《程式設計師》封面報導,內容包括產品設計、大數據、前端、中國雲計算大勢圖、Mobile GO!、Deep Learnning、SDN、硬體、Game Go Mobile!、高性能網站架構、微信、智慧型硬體、運維、回顧·展望等14個主題。
對話篇:由《程式設計師》記者直接採訪軟體業大師級人物以及知名公司CEO、CTO、技術負責人,在思想、實踐等方面進行深刻碰撞。
管理篇:主要是來自軟體方法、研發實踐、個人成長等方面的真知灼見。
產品篇:主要分享產品設計方面的方法和理念。
移動篇:匯聚移動開發領域的觀點和技術。
雲計算篇:雲計算熱門技術和觀點,包括推薦技術、Hadoop與大數據、架構等。
技術篇:包括程式語言、開發工具、技術實戰等幾方面內容。
《程式設計師2013精華本》內容飽滿程度前所未有,希望您能喜歡。順祝2014年馬到功成!
《程式設計師》編輯部
2014年1月

熱門詞條

聯絡我們