程序员2013精华本

来自站长百科
跳转至: 导航、​ 搜索

程序员2013精华本

图书信息[ ]

书名:程序员2013精华本

宣传语:《程序员》杂志2013年12期杂志精华,讲述成功产品背后的技术、人和事)

作者:《程序员》杂志社 编

ISBN:978-7-121-22456-0

出版时间:2014年2月出版

定价:59.00元

页数:472页

开本:16开

编辑推荐[ ]

1、《程序员2013精华本》内容涉及产品设计、大数据、前端、云计算、深度学习、SDN、移动互联网、硬件、游戏、高性能网站架构、微信、智能硬件、运维等,一本书尽览IT热点和最新技术,内容饱满程度前所未有。

2、《程序员2013精华本》由《程序员》编辑部精心打造,对《程序员》杂志2013年的内容再次进行了优化整合,内容更加聚焦,是一份浓缩的饕餮盛宴,值得阅读。

内容提要[ ]

《程序员2013精华本》紧紧围绕云计算、大数据、移动、智能硬件、产品设计等热门话题,进行了全面而深入的解析和讨论。内容包括:产品设计、大数据、前端、中国云计算大势图、Mobile GO!、Deep Learnning、SDN、硬件、Game Go Mobile!、高性能网站架构、微信、智能硬件、运维、回顾•展望等专题,《程序员》记者直接采访软件业大师级人物以及知名公司CEO、CTO、技术负责人,在思想、实践等方面进行的深刻碰撞;软件方法、研发实践、个人成长等方面的真知灼见;产品设计方面的方法和理念;移动开发领域的观点和技术;云计算热门技术和观点;编程语言、开发工具、技术实战等。

《程序员2013精华本》适合开发者、项目经理、CTO&CIO、编程爱好者阅读和收藏。

目录[ ]

专题篇

产品设计 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和时空象限中,并加以扩展。

“见微”与“知著”在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月