孟岩谈《C++程序设计原理与实践》

孟岩谈《C++程序设计原理与实践》

十年以来,Bjarne Stroustrup在不同的场合多次表示过,C++最大的弱点就是它的教学,因此,他许诺要亲自写一本教授C++的书——不同于The C++ Programming Language那样的、真正面向学习者的教程,来正本清源,以一种他认为正确的方式来教C++。《C++程序设计原理与实践》 这本书就是他实现诺言的作品。

 

 

 

这本书并非零起点,对于完全没有编程基础的人来说,恐怕并不适合。从技术点的组织来看,也是一如Bjarne Stroustrup一直以来的风格,以一种娓娓道来的方式分布在书中各个地方。光看目录,你很难知道他会在哪里讲到什么技术点。但如果读者有一定基础,知道编程是怎么回事,然后愿意以从头到尾细细品读的方式来学习C++,那么这本书应该是不错的选择。但知识点的分散也有很大问题,也不是所有人都有那个耐心从头到尾精读,所以这本书也不能取代其他一些经典的C++书,比如可以当字典查的C++ Primer和The C++ Standard Library,比如可以当博客读的Effective C++。但是有了这本书以后,学习C++的时候确实可以拿它当主干,其他的作参考和补充。

为什么这么说呢?因为C++这个语言有个大陷阱,就是存在很多诱惑和可能性,很容易让学习者早早就走到那些有趣的底层细节和奇技淫巧上,只见树木不见森林。比如你在一个类的设计阶段就在考虑是否要让它的某个成员函数内联,或者本来要设计一个类,然后动手时成了一个模板类,重构时变成了一个多参数模板类,这都是疑似坠井的信号。实际上以今天C++语言的成熟程度来讲,绝大多数情况下,程序员可以依赖高级的基础设施完成工作,只在非常罕见的地方需要用到高度技巧化和底层化的技术。因此,按理来说,一个C++学习者也应该是先掌握这个语言的主体部分,然后才在必要的情况下进入细节的学习。这个应该是正途,也是这本书采取的思路。这本书讲授C++的最大特色,就是把C++当做一个真正高级的语言去讲,从头至尾充分调动了C++标准库以及其他高级的基础设施。全书处理的非常平和,看不到技巧的炫耀和故作高深的叫卖,一切看上去都挺自然的。从C++自身的发展来讲,这本书的出版,标志着C++教学度过了长达20年的青春期,进入了成熟期。

然而,就现实而言,这本书恐怕是来得太晚了。且不说C++的应用领域较之十年前已经大幅度萎缩了,即使是仍然在使用 C++的领域里,也早就充斥了大量的传统遗留代码。这些传统的存在,强迫你必须按照奇技淫巧的方式来撰写你自己的代码,无论你多么不情愿。所以我不认为这本书,以及C++0X的标准能够总体上改变C++应用的现状。悲观点的说法是,C++到死,也就是这个样了,难以有大的改观。但是如果有人还是以很认真很严肃的态度来学习C++,也能够有机会在一些领域来做一些全新的工作,这本书应该是可以好好读一下的。

很多人可能觉得C++不行了,我相信在未来一段时间里,C++还有一定的用武之地。云计算兴起之后,服务端的竞争可能还会使得C++在某些领域复兴,所以C++还是可以学一学的。C++这个语言最好也是最差的地方,就是它万金油,怎么写都能工作,好多种风格都支持,你用着用着总会有个好恶。比如对我来说,C++这个语言最强的地方在于它的模板技术提供了足够复杂的程序库开发机制,可以把复杂性高度集中在程序库里。做得好的话,在应用代码部分我连一个for循环都不用写,犯错误的机会就少,效率还不打折扣,关键是看着代码心里爽。那么它最烂的地方是面向对象基础设施,简直不入流,根本不配称为面向对象语言。从高的层面来讲,C++可以写组件,但是想做周全了挺麻烦的,算不上好的组件语言。从底层来说,C++跟C差不多是完全兼容,狗急跳墙了,我可以回去写C代码。别人可能有不同的看法,不过有一点经验的人,对于C++的长长短短多少都会有个感觉、有个偏爱。但是我现在觉得,用C++,最重要的一条,就是心态平和,别较劲,别非要让程序统一到某个你最信仰的风格下,更不用为此花一大堆精力去攒包装(wrapper),什么直接就用什么。你写程序时第一个想到的路子,也就是你读程序时最容易理解的路子。用始皇帝张艺谋的话说,就是手中无剑,心中也无剑,就是不杀,就是和平。以前的C++程序员们,多少都有些杀气,有嗔念,要走过很久才回得来。也许这本书能够帮助后来者比较快地获得一颗平常心?没准儿。至少我希望是这样。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16502878/viewspace-669571/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16502878/viewspace-669571/

告别复杂配置!用GuidosToolbox 3.0做MSPA景观格局分析,从安装到出图全记录 本文详细介绍了如何使用GuidosToolbox 3.0进行MSPA景观格局分析,从安装配置到出图全流程。涵盖环境准备、数据预处理、参数设置、结果解读及可视化技巧,帮助用户快速掌握这一生态安全评估工具。特别针对安装教程中的常见问题提供解决方案,提升分析效率。 阅读详情

相关推荐

RocketMQ 为什么要自己做一个 NameServer ?RocketMQ 5.x 版本中的 proxy、controller 和 container 分别有什么用 ?

1.独立运行的分散结构 2.简化实现,容忍部分数据不一致 Proxy:多语言支持、简化开发 Controller: 提高 Broker 的性能 Container:提高资源利用率,平衡负载

xaiobit_hl的博客 1490

用C设计,用C++编码

      昨天晚上看到刘江的blog又补充了好几大段,今天早上又看到云风的人肉trackback,果然还是这种话题引人关注。      云风先是提了一下所谓C++带来的思想包袱(文言文曰“心智包袱”)问题,然后重重地引用了Linus的话:“关键是设计”,其实他是在暗示:好的设计C同样能做出来,不劳C++大驾;而C++一旦出面,就要让人背上额外的思想包袱。      我明确地表个态,在系统级程

孟岩 5万+

遗传病变异注释预测工具安装系列之------Exomiser 安装及bug处理

Exomiser是一个Java程序,它从全外显子组或全基因组测序数据中发现潜在的致病变异。 Java 版本必须为1.8以上。 Exomiser 最新版本下载 wget -c https://github.com/exomiser/Exomiser/releases/download/11.0.0/exomiser-cli-11.0.0-distribution.zip unzip ...

qq_37329349的博客 1537

孟岩的c++ 的学习方法,这何尝有不是做人做事的方法呢?

“(孟岩)我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对 于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可 以留给实践去零敲碎打。 “原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重 大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重 要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理...

weixin_34109408的博客 281

手把手教你用Python+Playwright实现抖音/B站/视频号三平台自动上传(附完整配置流程)

本文详细介绍了如何使用Python和Playwright构建一个多平台视频自动化上传系统,涵盖抖音、B站和视频号三大平台。文章从环境搭建、身份验证持久化、平台特异性上传引擎设计到任务调度与错误处理,提供了完整的配置流程和实战代码,帮助开发者实现高效、稳定的批量上传功能。

weixin_29294975的博客 1150

C# + NAudio:构建支持实时音频处理的语音聊天应用(含回声消除)

本文介绍了如何利用C#和NAudio库开发实时语音聊天应用,重点实现回声消除功能。首先概述了NAudio库在音频处理中的作用,包括音频录制、播放和实时处理能力。然后详细讲解了构建基础语音聊天应用的过程,包括麦克风录制和扬声器播放的实现。接着深入探讨了回声消除的原理和实现方法,提出通过比较麦克风输入和扬声器输出的音频信号来消除回声,并给出了核心代码示例。最后,文章还讨论了性能优化方向,如多线程处理和网络传输扩展。该方案为开发高质量实时语音应用提供了实用参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1012

孟岩的C++培训课

        因公司安排参加了2天C++的培训,孟岩老师的主讲。        课讲的很好,第一天是一些C++的一些原理,如对象内存布局,多重继承,等等,第二天主要是STL和范型。内容不少,讲的也很透彻,很久没有这么探究C++的理论,咋听之下,感觉还是不错的。        唯一的遗憾是,好像现在C++领域除了这些东西以外,好像真的是找不到新的课题了。关于C++的对象布局,在lipman的书里,

dengyunze 2396

timing window file中的S L T指什么意思

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 774

SGI STL 安装

就是用nmake,到侯捷站,只要你能编译通过它里面的例子就可以确定你已经装上了 在 Borland C++ 及 Visual C++ 环境中使用 STLport 孟岩  侯捷注:本文承作者孟岩先生应允,  转载於此以飨台湾读者,非常感谢。 未得孟岩先生之同意,任何人请勿将此文再做转载。 以下红色为译注,紫色为侯捷个人认为宜再斟酌之处。  浅蓝色是侯捷个人阅读时的神秘标

wangluozhangleilei的专栏 1653

015、PCIE带宽计算:理论vs实际——调试手记

最近在调一块图像采集卡,主控抱怨数据吞吐量上不去。规格书上写着PCIE 3.0 x4,理论带宽接近4GB/s,实际测试却卡在2.5GB/s左右。硬件同事拍胸脯说链路训练正常,软件同事咬定DMA配置没问题——这种场景是不是很熟悉?

z534437748的博客 883

全面解析智能座舱芯片参数:高通 (SA8295)vs 联发科,真实案例一行行讲给你听!

使用场景推荐芯片中低端车型 + 1屏导航语音SA8155P / MT8628(性价比高)中控+副驾+仪表+全景影像SA8255P / MT8678(性能强)高阶自动驾驶+域控融合SA8295P(顶级安全+算力)

weixin_43199439的博客 2079

《C++程序设计原理与实践》笔记 第6章 编写一个程序

接下来的两章将从一个最初不清晰的想法开始,经过分析、设计、实现、测试、再设计、再实现等步骤开发一个计算器程序,目的是帮助读者了解在编写代码的过程中如何去思考。在这个过程中将讨论程序结构、用户定义类型和输入处理。

zzy979481894的博客 1198

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1493

从《编程的未来》这篇文章想到C++和Java语言的爽与不爽

 从编程的未来这篇文章http://utensil.iteye.com/blog/367415 想到C++和Java语言的爽与不爽: 事实上Java的面向对象模型要比C++要好,C++是一个追求效率而不惜牺牲其他空间和优美方面的语言。一、C++没有interface的概念,这是面向对象概念的很大的一个缺失,当然纯抽象类就是interface,但至少是概念上的一种缺失。因为interface和抽象...

fuliang 361

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

c++ 孟岩推荐 书籍

c++ primer 中文版本 是 教程+参考书 扛梁之作c++ 标准程序库 对于c++熟手来说更为快捷effective c++ 永远是初学者必读的,但是c++11标准后的第四版,还未发布c++ concurrency in action 是学习c++开发并发程序的最佳选择linux 多线程服务端编程 转载于:https://www.cnblogs.com/porter/p/5000371...

weixin_33980459的博客 242

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

看孟岩对C++ PRIMER第四版所写的书评

     很多人可能还记得2002年C++ Primer第三版在国内计算机图书市场上创造的辉煌成绩,当时这本书在价格相对较高的情况下仍然受到了广大C++学习者的热烈欢迎。几年过去,相信已经有不少读者通过这本书掌握了C++基础语言。在日常的程序设计实践中,该书也是相当出色的参考手册。关于C++语言本身的各种问题,几乎都可以在这本书里找到答案。全面,被认为是C++ Primer的特色。但事实上,第

小不忍则乱大谋,忍无可忍无需再忍 3875

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

孟岩:什么是高级C++?

<br />什么是高级C++?<br />——软件工业化时代的C++价值观<br /> 孟岩<br /> 《程序员》杂志社<br /><br />开门见山<br />主要论点:<br />     1. C++本质上是一种重“创新”而轻“生产”的语言,到目前为止仍然是主流语言中最适合技术创新的一个;<br />     2. 1995年之前,整个软件产业处于“创新为王”的阶段,C++是最适合这个阶段的语言,这是C++红极一时的大背景和根本原因。<br />     3. 1995年发生

Programer From Scrach 1057

C++ 标准程序库--序言--孟岩

孟岩译序E 技术书辖市场,历来是春祉战圈。一般来说,同一个技术领域里且会杳那么盘本、十世本、甚至盘十本):Ë位相fl:(的书籍相互撒用竞争b 其中会有一些大师之作脱颗而出,面南背北,黄抱加身,通常还会杳后来者不断挑战,企固且跑到特色赢得自己的一片天地-比如说在算桂与盘据结构牺辑. D.E. Knuth 的那套E 四e Art afO呻uter p1咱阳四"的~>>一至三巷,当...

weixin_30337157的博客 263

读Linus Torvalds发表批评C++的文章和孟岩BLOG回帖有感

 Torvalds可能是愤然于缺乏规范开发的程序员所写的糟糕代码进而迁怒于C++,并且积怨可能从他从前用C++开发Linux失败开始。我想说的是抛开你具体的应用环境来讨论语言啊,设计方法啊什么的没什么实际的意义。我们都是为了更好的做好自己的事,编程不是什么大不了的事,也不高深。但究其具体应用就有不同的选择。OO很好,但不是放之四海而皆准的万能之法。对于孟岩的说法我比较认同:“C++语言主要是用来支

HawkWolf的专栏 3941

c++程序设计原理与实践

第三章 对象、类型和值 1、五种类型 int 整数 double 浮点数 char 单个字符 string 字符串 bool 逻辑变量    

supermoon920的博客 740
上一篇: Web前端开发之“常见模块你真的很了解吗?”
下一篇: 测试驱动开发简介
cuad2192
博客等级 码龄12年 6粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值