《Visual C++并行编程实战》译者序
说来凑巧,当开始着手这本书的翻译时,我刚刚入手了自己第一台四核计算机,而翻译工作临近完成之时,我又为自己添置了一台iPad 2(这是一台双核计算机)。由此可见,多核计算机已经完全进入了我的日常生活。鉴于自己是一个远远落后于时尚的家伙(例如我对双核手机就不太感冒),我毫不怀疑多核计算机已经走入了千家万户。这似乎也意味着多核应用的时代真正到来了!
先别高兴得太早。如果你仔细观察,就会发现自己并没有真正进入多核世界。因为我们计算机上的大部分应用都依然是单核的。也就是说,很多时候我们只是在一台多核计算机上跑着一堆单核程序罢了。或许,你的操作系统会为这些程序进程分配单独的执行内核,但是这种粒度上的多核优势是相当有限的,我们必须为自己开发出真正意义上的多核应用程序。
是的,这意味着要让程序自己具备多核处理的能力。也就是说,我们现在要并行化的不是进程,而是线程。相信很多有经验的程序员看到这里都会像我一样皱起眉头,这毫无疑问是一件非常麻烦的事,操作繁多,极易出错。最要命的是,这里的绝大部分bug都是难以重现的,更别提运用什么异常处理机制了。 除非能大大地简化这一过程,否则并行编程永远都是高手们的玩具而已。
有趣的是,如果你问一个C++程序员,什么库用起来是最简单的?他十之八九会说是STL。而你要是再问他,STL有什么缺点?他十之八九又会说,它太基本了,缺少模式化应用。而这就是这本书的优势所在。
这本书所介绍的并行模式库(简称PPL),实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分, 它已经完全被"内置"到了这一版本的C++语言中。这意味着你可以像使用std::for_each那样使用它的并行算法,像使用std::vector<T>那样使用它的并行容器。除此之外,它还很好的兼容了最新的C++ 0x标准(现在叫C++ 11了)的部分特性,例如lambda表达式。这将帮助我们写出更像C++的代码。
然而,这本书令人兴奋的地方远远不止如此,更重要的是它模式化了并行编程。在PPL的帮助下,我们可以更多地从"设计"的角度来进行并行编程,这样一来,你只要考虑如何并行化你的数据流或控制流。不用太担心数据共享的安全,或者操作同步的细节问题。当然前提是你选对了设计模式。
不过,设计模式毕竟不是设计模版,不能生搬硬套。你不能"手里有把锤子,就看什么都像钉子",设计模式只是一组设计方案的高度抽象,有着很多种变化(我们叫它模式变体),我们必须要学会灵活运用。这需要建立模式化的编程思维,而这就是这本书的终极目标。
作为译者,我从这本书中学到了不少东西,我的朋友高博(此人是《设计原本》和《研究之美》的译者)曾这样总结他的翻译心得:"译者应该从他的翻译中首先获益!",我非常认可,因而我对自己的这些工作深感荣幸。
当然,这是我第一次独立完成一本书的翻译,经验不足使我对这项工作战战兢兢,有收获也有遗憾,希望它至少已经做到了"正确性"。在翻译过程中我得到了很多朋友的帮助,下面对他们致以最高的谢意。
首先要感谢的是机械工业出版社的陈翼康编辑和盛大创新院的项目经理高博先生,没有他们的帮助和鼓励,我恐怕永远都不会有机会翻译这样一本好书。
接下来,必须感谢凯捷咨询的姚浩工程师、微软亚洲研究院的徐宁工程师、EMC的朱磊工程师以及思科的金瓯工程师,他们都仔细地阅读了全书的初稿,并给出了大量的修改意见,使我避免了很多灾难性的错误。甚至朱磊工程师和金瓯工程师还帮助我翻译了前言序言部分的稿件,对他们的帮助我铭刻在心,希望这本书也能给他们带来快乐。
凌杰
2012年3月31日
于新安江畔
《Visual C++并行编程实战》译者序的更多相关文章
- 《Python算法教程》译者序
在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案.也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述.这需要我们 ...
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Python快速教程 尾声(转)
原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...
- python快速教程-vamei
2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...
- Python 简明教程 ---10,Python 列表
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...
- Python快速教程 尾声
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...
- 改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
随机推荐
- iOS 键盘
http://blog.sina.com.cn/s/blog_7018d3820101djut.html 一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboa ...
- XMPP学习记录之实战篇
在学习iOS以来一直想要研究即时聊天方面的技术,因工作原因此计划一直搁浅,近日偷得时闲开始着手与XMPP的学习.在学习之前我一直认为XMPP对我来说是一个很有难度的挑战,在了解了协议的具体形式后,才发 ...
- SQL基础--完整性约束
完整性约束是保证用户所做的修改不会破坏数据的一致性,是保护数据正确性和相容性的一种手段. 常见的5种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE ...
- (六)ICMP、ping
ping命令是ICMP协议 127.0.0.1 ifconfig -all
- Linux shell中运行命令后加上字符“&”的作用
上午登录服务器编译运行服务端程序的时候,学到了在命令后加上字符“&”后,退出shell,运行的命令可以继续运行.不解原因,并到网上搜索了以下,明白了点! 以下是搜索到的片段: & 放在 ...
- Spring+Mybatis 手动控制事务
public boolean testDelete(String jobCode) throws Exception { boolean flag = false; //1.获取事务控制管理器 Dat ...
- osg,qt编译的一些问题
osg编译例子的时候,打开文件就出问题,可能是一些不兼容的问题 qt编译的是时候要添加qt和vs2010的整合工具,这样才能把 vs2010里面的QTDIR变量和环境变量QTDIR关联起来 同是右击文 ...
- SSM框架学习之高并发秒杀业务--笔记2-- DAO层
上节中利用Maven创建了项目,并导入了所有的依赖,这节来进行DAO层的设计与开发 第一步,创建数据库和表. 首先分析业务,这个SSM匡济整合案例是做一个商品的秒杀系统,要存储的有:1.待秒杀的商品的 ...
- 自定义控件之 TextBox
//textbox typevar boxType = { WaterMarkBox: 0, ValidateBox: 1, SearchBox: 2}var textBoxObj = functio ...
- linux maven安装配置
1.Run the wget command from the dir you want to extract maven too. wget http://mirrors.cnnic.cn/apac ...