序(Foreword) 
C++社区正在发生着一些美妙的事情。尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用。不信么?容我慢慢道来。

当前版本的标准C++是在1998年最终确定下来的,它为传统的过程式编程(procedural programming)以及面向对象和泛型编程(generic programming)提供了强有力的支持。正如老的(1998年以前的)C++单枪匹马地把面向对象引入软件开发者日常工作可及的范围那样,C++98针对泛型编程做了同样的事情。1990年代中期标准模板库(STL)被整合到标准C++代表了一种编程范式(paradigm)的转移,它的意义不亚于Bjarne Stroustrup在1980年代早期把类引入C语言。现在,大多数C++从业人员对于STL的概念已经非常熟悉,是时候再一次提升我们的技术水准了。

如何发挥C++的威力仍然在不断地被发掘。现今的许多C++库(尤其是一些数学计算库)都受益于模板元编程(template metaprogramming)原本所具有的优势,这是一个偶然的并且未被预见到的结果,它得益于C++模板的杰出设计。随着高阶的工具和技术在C++社区不断出现,开发日益复杂的应用程序正在变得更加直接了当和令人愉悦。

如何强调Boost库对于C++世界的重要性都不为过。从C++98的标准通过以来,除了ISO的标准C++委员会(叫做WG21),没有其他的组织像Boost这样对C++的发展方向产生了如此巨大的影响,Boost的许多出资者都是WG21的著名成员,包括它的创建者,我的朋友Beman Dawes。成千上万经验丰富的Boost志愿者以没有任何私心的、专家评审(peer-reviewed)的方式,开发了许多有用的库,这些库提供了C++98所未能提供的解决方案。其中的10个库已经被认可并打算集成到就要到来的C++0x库,而且还有更多的库处于考虑之中。当确实欠缺某个被提议的库的时候,Boost和WG21之间的相互交流和影响(cross-pollination)所迸发出来的智慧暗示了需要一些谨慎的语言上的改进,这些东西正在考虑之中。

退一万步说,假设你从没听说过Boost,那我问问你。。。。。。你需要在文本和数字之间做转换么?或者(好一点的情况)在以流的方式进行输入输出的(streamable)类型之间进行转换。没问题,使用Boost.lexical_cast就好了。哦,你需要进行更复杂的文本处理?或许可以试试Boost.Tokenizer或者Boost.Regex,如果你需要做更加全面的解析,可以试试Boost.Spirit。Boost.Bind对于函数进行投影和组合的能力可能会让你瞠目结舌。对于函数式编程(functional programming)可以使用Boost.Lambda。静态断言(Static assertions)?当然没问题。如果你对数学有偏好,扔掉铅笔吧,你可以使用Boost.Math, Graph, Quaternion, Octonion, MultiArray, Random, 以及Rational。如果你有幸体会到了使用Python的乐趣,你可以在Boost.Python的帮助下把它和C++一起使用。对于上面提到的这些库,你可以根据实际需要选择开发平台。

Björn Karlsson是一个狂热的Boost拥护者,也是C++社区忠心耿耿的支持者。他在C/C++ Users Journal上发表了许多有用而且好读的文章,最近,他也为The C++ Source写了一些文章,The C++ Source是一个传递C++社区声音的新的在线资源(请访问www.artima.com/cppsource)。在本书中,他提倡并且描述了Boost的一些关键组件,然后展示了它们是如何与C++标准库一道工作并且扩展C++标准库的。不要仅仅把本书看成是一本深入Boost的教程,还可以拿它来品尝一下将来版本的标准C++。爽一下吧!

《超越C++标准库:Boost库导引》:序的更多相关文章

  1. 《Java JDK 8 学习笔记》序

    摘录自<Java JDK 8 学习笔记> 翻开一本书,无非是想从书中得到知识,只是为何你要得到书中的知识,才是我想知道的答案,而这个答案决定了你在取得知识的过程中是否快乐! 多数人在取得知 ...

  2. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  3. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势

    0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...

  4. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

  5. Java:NIO 学习笔记-2

    Java:NIO 学习笔记-2 上一篇 NIO 学习笔记-1 看了 尚硅谷 的相应教程,此处又对比看了 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 前言 在 Java 的软件设计开 ...

  6. Java:NIO 学习笔记-1

    Java:NIO 学习笔记-1 说明:本笔记是根据bilibili上 尚硅谷 的课程 NIO视频 而做的笔记 主要内容 Java NIO 简介 Java NIO 与 IO 的主要区别 缓冲区(Buff ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. Java多线程技术学习笔记(二)

    目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...

  9. Java安全防御学习笔记V1.0

    Java安全防御学习笔记V1.0http://www.docin.com/p-766808938.html

  10. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

随机推荐

  1. cmd 开启热点

    开启热点,需要先打开Wifi,ssid 为 WiFi 名称,key 为密码 netsh wlan set hostednetwork mode=allow ssid=123 key=12345678 ...

  2. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  3. HTML第五耍 表格标签

    HTML标记语言中可以使用table标签创建表格. 表格由 <table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),字母 tr 指表格数据(table row ...

  4. windows server 禁用智能卡服务的步骤

    许多用户对于系统中的很多功能都不太了解,其中智能卡服务更是少有人知.智能卡服务就是对插入的智能卡进行管理和访问控制,大多数用户都无需使用此项功能.那么在Win7系统中要怎么取消智能卡服务呢? 1.首先 ...

  5. java四种权限修饰符(public > protected > (default) > private)

    权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个 ...

  6. 数据建模工具系列 之 让Oracle Data Modeler支持Vertica

    引子 在上篇博客中重点介绍了几个建模工具的评估, 并选定了SQL Power Architect作为最终的建模工具, 在评估过程中也对Oracle Data Modeler支持Vertica做了点研究 ...

  7. Spring boot 使用多个RedisTemplate

    问题描述 想在一个JAVA Class 向同一个Redis实例的不同 dbindex 写入数据,非常类似于StackOverflowe上的[How can select dbIndex when I ...

  8. JS创建对象之稳妥构造函数模式

    所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象 function Person(name, age, job) { // 创建要返回的对象 var o = new Object() ...

  9. SSH中使用延迟加载报错Exception occurred during processing request: could not initialize proxy - no Session

    17:40:17,249 ERROR DefaultDispatcherErrorHandler:42 - Exception occurred during processing request: ...

  10. MVC异步AJAX的三种方法(JQuery的Get方法、JQuery的Post方法和微软自带的异步方法)

    异步是我们在网站开发过程中必不可少的方法,MVC框架的异步方法也有很多,这里介绍三种方法: 一.JQuery的Get方法 view @{ Layout = null; } <!DOCTYPE h ...