《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 - Mac OS X 终端设置
Mac OS X 终端设置 1)Finder 中显示资源库 方法一: 在 "终端" 中输入下面的命令: 显示: chflags nohidden ~/Library/ 隐藏: ch ...
- socket初级使用(客户端)
在国庆这段时间里用零星的一些时间看了一下socket的学习资料,由于笔者偏向学习实用方面的内容,因此此篇文章涉及理论知识较少,主要是以实现思路(怎么做)为主,但在实现之前还是需要了解一些基础的理论知识 ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
- jquery中通过全局变量来禁止多次ajax请求
var ajaxstate=false;//定义全局变量,通过这个变量来获得当前的ajax状态 $(function(){ $(document).ajaxStart(function(){ $(&q ...
- View绘制--onMeasure() 、onLayout()
绘制需要经过多次 measure() layout() 过程, measure:测量,不可被子类继承,调用onMeasure()方法 onMeasure():测量,测量结束后每一个View都保存了自己 ...
- CBUUID UUIDString unrecognized selector sent to instance 错误
CBUUID UUIDString unrecognized selector sent to instance 错误 ios7.0,4s 蓝牙出现上述错误! 查看api可知,错误原因,由于CBUUI ...
- 【转】 HTTP 协议简介
一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应用层分别为:物理层.链路层.网络层.传输层和应用层,如下图所示: 从 ...
- Linux 忘记密码解决方法
很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 3 ...
- BZOJ2095 [Poi2010]Bridges
首先二分答案...然后这张图变成了有一些有向边,有一些无向边 然后就是混合图欧拉回路的判断 我们知道如果是有向图,它存在欧拉回路的等价条件是所有点的出度等于入度 对于混合图...先不管有向边,把无向边 ...
- Linux准确获取IP
有时搞一些跨网段的工程和应用,需要尽量准确的知道电信.网通.铁通等电信运营商的IP地址段分配情况,可网上的资料不但很少,而且经常都是N个月前的过期资料…… APNIC是管理亚太地区IP地址分配的机构, ...