C/C++程序员必读的十本书(上)

在Gmail TopLanguage  Group 中看到一篇文章“C/C++程序员必读的十本书(上)”,大家的讨论都很激励,大家都觉得这篇文章写得很棒,我想在Group里的朋友都能在Lookgirl的这篇文章里获益不少,为此斗胆在此转载该文,供更多朋友交流、学习。

 

C/C++程序员必读的十本书(上)

 

这个题目大的有些离谱,实话说,只是想推荐一下自己觉得很好、值得收藏的一些技术方面的图书。如果不是程序员,或者关心的方向是网页开发、数据库开发,或者只是想了解一下开发流程,这些书不都是适合你,但也很值得收藏了。

这篇文字的针对目标是,微软平台下的c/c++程序员,学过计算机基础学科,有一定的英语阅读能力。建议购买的顺序也是从上至下。

(1)建议大家阅读的第一本书是《编码的奥秘》(英文名《code》)(本书由机械工业出版社华章公司出版),这本书中文版应该已经绝版了,但好像有英文影印版。这本书没有讲该如何编程,如何写一个hello world。它深入浅出的介绍了计算机是如何组成的,比如二进制,比如逻辑门电路的实现,都是很浅显的。看了这本书,会对计算机有个知其所以然的了解,也就是机器如何实现的一加一等于二,如何能执行程序。《编码的奥秘》是计算机专业或者是初中高中对计算机感兴趣学生,应该一上学就读的一本书。

(2)第二本也是建议大家看到了立刻买下来,保证物有所值,就是程序设计实践》(英文名The Practice of Programming)(本书由机械工业出版社华章公司出版)。有了这本书,基本上《代码大全》、《程序员修炼之道》这几本后面推荐的书可以不买了,因为精华基本上都浓缩到这本书里面,当然,不同的作者写出来的还是不一样,如果有钱,还是都买了最好。《程序设计实践》的两位作者Brian W.Kernigham / Rob Pike,在计算机领域,就是大师级的人物,高山仰止,写出如此通俗易懂的计算机工程实践书,让我还能说什么仰慕的话啊。你不知道他们是谁?去搜wiki 吧。里面每一章节都非常经典,甚至每章后面推荐延伸阅读的书籍,都是经典中的经典。一定要慢慢读反复读,如果这本书看完了以后,基本上就是一个计算机中级编程水平了。

程序设计实践

 


(3)第三本书比较难选择一些,还是推荐这本好了《C程序设计语言,第2版》,也就是传说中的K&R,如果你是一个计算机专业的学生,还没有这本书,那你在学校里学了什么就很值得怀疑。这本书272页,每页都很经典,基本上你碰到的所有c语言问题在这本薄薄的小书里都有涉及,但是限于篇幅,有些会简单带过。里面代码例子不多,但还是包含了一个相当完整的语法分析器程序。不多说了,如果没有这本书,赶快去买吧。

 

C程序设计语言,第2版

(4)现在大部分企业使用的是c++而不是c(比如google),除非是嵌入式或者操作系统内核级的程序,c++的性能与强大语法基本上可以满足各方面的需求,c++的入门书很多,选择也比较容易,推荐大家买奥莱理O‘Reilly的或者是c和c++经典著作这个系列的。第四本要推荐的不是c++编程方面的,而是一般类似于八卦c++历史的书《c++语言的设计与演化》,豆瓣链接http://www.douban.com/subject /1096216/。编程工作其实就是一个在不同的方案中进行选择权衡的一个过程,是该选择vector还是list,是该使用多线程还是多进程,是该使用xmlrpc还是dcom,是使用数据库还是注册表,有心的人会研究不同选择背后的深层技术问题,有些人基本上就是一套方案打天下。这本书就介绍了c++之父设计c++语言时选择的一些考量,为什么不用GC,为什么没有这个那个特性,为何不内置某某keyword。在我看来,这些考量的过程,对于一个编程人员来说要比如何使用c++更有价值。


(5)我选择了《unix编程艺术》,它击败了《代码大全》《c专家编程》等诸多经典占据了这个位置,主要也是占了unix操作系统的光。豆瓣链接http://www.douban.com/subject/1467587/。之所以选择这本书,是因为对于一个windows平台上的程序员来说,尽量开阔眼界是非常必须的事情。我们经常说混血或者说杂交会让基因更加优秀,编程也是如此,windows平台的程序员,如果只懂mfc,只会注册表保存配置,只知道COM或者DotNet,是一件非常悲哀的事情,用成语来说就是井底之蛙坐井观天,只认为天就是这么大一片,编程就应该用这些东西。


      unix操作系统虽然不像windows占据了桌面平台,但是在其他方面,使用非常广泛,比如苹果的mac osx系统,比如sun的solaris,比如继承了unix精神的linux。尤其在当今桌面系统网络化的潮流下,unix系统天生的网络特性、多用户管理特性、安全特性,更是体现了超越时代的杰出思想。读一读这本书,体验一下不同的设计理念和不同的操作系统哲学,对于日常的编程工作都有非常大的帮助。 Windows程序员尤其要学习的是:unix系统上script的使用,使用纯文本作为数据格式,使用管道,最最重要的一点就是,Keep it simple and stupid,一个程序只做一件事,只需要把这件事做到完美。这与windows的大而全思想有着本质上的不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LSGO软件技术团队2015~2016学年第六周(1005~1011)总结

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

Silverlight反编译系列二常见代码(自动生成属性CompilerGenerated,代码)

在Silverlight有一些编译后自动生成的代码,最常见的是CompilerGeneratedAttribute和DebuggerNonUserCodeAttribute,下面介绍一下这俩种属性 1.CompilerGeneratedAttribute 自动属性 使用自动属性后,你可以不用手工声明一个私有成员变量以及编…

frontcon函数用不了_真香警告!用了XLOOKUP再也回不去VLOOKUP了

作为一名社畜,Excel是必备技能。如果你不会vlookup函数,都不好意思跟别人说你会用Excel。但vlookup也有很大的局限性,比如:首列必须为查找依据列 无法简单的多条件匹配 横向查找等等往往需要进行一些复杂操作的时候我们都需要修改…

LSGO软件技术团队爬山活动

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

HDOJ 2526 HDU 2526 浪漫手机 ACM 2526 IN HDU

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid2526题目描述:浪漫手机Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 362 Accepted Submissi…

2引擎帮助文档_Simcenter Amesim 16液压部分帮助文档中英文对照(2)

10/49 Hydraulic Component Design Library10/49液压元件设计库The simplest possible check valve consists of a ball which is free to move over a limited displacement.In one extreme position it is fully closed and completely blocks the flow, and in the other ex…

ArcGIS Engine Runtime 10 Setup步骤

首先安装ArcGIS License Manager 10 Setup 其次安装ArcGIS Engine Runtime 10 Setup 再次,拷贝service.txt文件到ArcGIS\License10.0\bin文件夹下,替换原有文件。 运行ArcGIS 许可服务管理器 - 10.0,启动服务。 最后,运行ArcGIS管…

修改Fiddler实用插件JsonViewer

在Web开发中,Fiddler是我们常用的工具,JSON是我们常用的数据格式。本文所要说的JsonViewer就是一款在Fiddler中查看JSON对象的小插件(当然它不仅仅是作为Fiddler的插件,还有独立运行版和Visual Studio的插件)。关于它的…

matlab用regress方法求ln函数_数学篇|高中数学48条秒杀型公式与方法,一定要掌握!...

「 致于学教育 」高中数学48条秒杀型公式1.适用条件:[直线过焦点],必有ecosA(x-1)/(x1),其中A为直线与焦点所在轴夹角,是锐角。x为分离比,必须大于1。注上述公式适合一切圆锥曲线。如果焦点内分(指的是焦点在所截线段上…

LSGO软件技术团队对外技术交流

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

大型项目使用Automake/Autoconf完成编译配置

使用过开源C/C项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修…

java中数组的返回值是什么类型_Java数组也是一种数据类型

Java 的数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据。因为 Java 语言是面向对象的语言,而类与类之间…

LSGO软件技术团队内部技术交流

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

LSGO软件技术团队2015~2016学年第七周(1012~1018)总结

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

idea查询类_Spring Security入门(三): 基于自定义数据库查询的认证实战

0 引言在笔者的上一篇文章中Spring Security入门(二):基于内存的认证一文中有提到过Spring Security实现自定义数据库查询需要你实现UserDetailsService接口,并实现loadUserByUsername(String username)抽象方法。我们可以在UserDetailsService接口的实现…

python计算小数点后有几位_python的数字类型

python的数字类型分为三种,分别是整数int、 浮点数float 和 复数complex。数字是由数字字面值或内置函数与运算符的结果来创建的, 不带修饰的整数字面值会生成整数。包含小数点或幂运算符的数字字面值会生成浮点数。在数字字面值末尾加上 j 或 J 会生成虚…

Window服务的创建与删除

Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Windows事件日志。计算机启动时,服务会自动开始运行。它们不要用户一定登录才运行&#xf…

python颜色识别_颜色检测python

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 版权声明:本文为博主原创文章,未经博主允许不得转载。 https:blog.csdn.netu0121626…

LSGO软件技术团队与信息1402班开展真人CS活动

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

写让别人能读懂的代码

随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的代码。 我前几天看了一本书,书中有这么一句…