转自: http://blog.csdn.net/tietao/article/details/10128283
忘了名字的书,
《C语言程序设计》(老谭版)
《高质量程序设计》
《C陷阱与缺陷》
《C专家编程》
《程序员成长计划》
《UNIX环境高级编程》
《深入理解计算机系统》
《代码大全》
《编程精粹》
《重构》(在读)
按照自己的阅读顺序罗列了以上书籍,
基本都全部看完的(重构是正在看,已经看了三分之一)。
第零本,忘记名字的书,当时就是按照书中的代码,敲到VC中,看执行结果。这样做了两个多月(下晚自习后去,大一强制自习)。虽然现在看,当时这样做效率很低。有时候敲代码都会敲错,但这个过程教会了自己如何敲程序,如何找到程序中的错误。同时提高了自己敲代码的速度。
第一本《C语言程序设计》(老谭版)是自己当时为了准备考二级时,看的。后来上C语言课时,也对应学校的教材一起翻翻。对于这本书,应该说就是入门的。据说这个上边,关于一些东西讲的有些问题,但是没有去求证过,不得而知。
第二本书是《高质量程序设计》(林锐博士),据说这本书最后的附录中的测试题,有可能出现在应届生的招聘笔试题中,这个可以确认。当时自己毕业时,参加的一个笔试中,就有从哪些题中选出来的,几乎没有变动。这本书,让自己知道了C还有哪些入门后不知道的东西,印象深的是,变量命名,以及预编译,程序优化等一些技巧。由于这本书是讲c/C++,所以只看了一部分,关于c++部分没有看。
这两本书,都已经送人。
第三本是《C陷阱与缺陷》,阅读时对里边很多地方印象很深,对自己以后程序设计,起到了一些潜移默化的作用。一本薄薄的100多页的书,不到两天就读完了,后来也陆陆续续回头看过一些。
第四本是《C专家编程》,这本书第一次没怎么看懂,,懵懵懂懂。应该说是第一次看的时候,找不出问题。不知道自己哪里不了解,需要了解哪里。以至于就泛泛看看。后来看了《深入理解计算机系统》,又回头将里边关于函数调用,连接等看了看,发现有理解了很多。后来在实际工作中,遇到指针与数组访问时间的困惑,以及指针数组的异同,又在这本书中找到了答案。这本书,适合通读一边后,有困惑的时候回头看看。每一次都会有不一样的收获。
第五本是《程序员成长计划》,在自己刚开始实习的时候通过这本书了解了,Linux下编程的一些知识。对于初入编程的人,有很大的帮助。能教会我们很多平时想不到的用法。能够从应用的角度,理解C的编程思想。这里边了解C的回调函数,函数指针,隔离变化,以及使用面向对象的思想编写C程序,介绍了makefile的一些基础东西。讲的都挺实用的。
第六本是《UNIX环境高级编程》,在看完《程序员成长计划》后,发现对于Linux编程环境还不是很了解,于是看是看这本书。这本书让自己了解到,C程序在类UNIX环境中,执行的过程。从最初加载code到memory,到C程序的内存分布,code,bss,data,以及库在内存中的放置的位置,解决了很长时间困扰的问题。同时了解了很多在UNIX下的系统调用,了解了多线程以及使用。还有就是关于一些标准,对于Linux下编程感觉有必要了解下。
第七本书是《深入理解计算机系统》,这本书让自己对于计算机系统有一个顿悟式的理解。解决了很多以前长期困扰的问题:为什么需要cache;内存溢出为什么可能会导致程序崩溃;函数是如何调用的;malloc了一块内存,在系统是如何保存大小,以及释放时怎么获取大小;为什么需要多核;如何优化多线程下的代码。如果是用C,如果要理解计算机系统组成,这本书是很值得推荐的。
第八本书《代码大全》,这本书是让我们从一个代码写给自己看的成长为一个代码写给大家看的一本书。这本书,以程序构建为主线,实现可读性,降低程序复杂度为目标。展示了如何写出易读代码 ,如何降低复杂度,以让别人更容易阅读,理解,与维护我们的代码。对于步入工作,或者提高程序规范性而言这个本书,是首选。让我们从一个门外汉的角度,看一些专业的编程者,是如何进行他们的工作的。这本书更优秀的一点是,它推荐了很多书,通过阅读这本书,我们就会知道接下来我们将要看什么书。
第九本书是《编程精粹》,这本书就是通过《代码大全》的推荐发现的。有人称这本书是“被遗忘的珍珠”。这本书,确实是一本能够帮助我们提高编程质量的书。借助于作者在Mircosoft时office系列的工作,总结了如何编写高质量程序的经验。很多总结都是很实用的,避免了我们自己再去通过无数的实践去总结,也就变相的帮助了我们节省了很多成本(时间,精力,还有心情)。
第十本是《重构》,这本书也是《代码大全》推荐的。对于这本书,在编程阶段的优势还没有感触很深,但是对于维护代码已经是获益匪浅。通过书中的一些方法,将程序变得更易阅读更易理解,也更易于维护。书中的一些总结,也能帮助我们在编程过程中,逐步改变代码质量。
由于自己是电子方面专业,对于计算机一些书的了解是通过同学介绍的,在初期想看关于C更深入的书,但是无从得知。在网上能找到的就是《C陷阱与缺陷》,《C专家编程》,《C和指针》当时似乎没有加C的就不是应该看得。。
因此,错过了《深入理解计算机系统》,错过了《代码大全》,两本十分优秀的书。直到工作中,才慢慢体会到他们的益出。这两本书,让我明白了什么是程序,如何写程序,深入语言编程,而不是在语言上编程。
从以上罗列的书籍中,发现自己更多的是对于C的工程应用,并没有深入很多人说的算法内容,这里之所以没有提到关于算法的书,因为对于自己专业就有很多理论的东西去琢磨。对于C会先考虑应用与专业的结合。
《代码大全》定义的专业程序员:
第一级:入门级,入门者会利用某语言的基本功能,编写类,子程序,循环和条件语句,会使用语言的许多特性。
第二级:中级,中级的程序员已经度过入门期,能利用多种语言的基本功能,并会得心应手地使用至少一种语言。
第三级:熟练级,熟练级的程序员对语言或环境有着专业技能。
第四级:技术带头人,技术带头人具有第三级的专业才学,并明白编程工作中只有15%用来和计算机交互,其余都是与人打交道的。
当然每一个人,都有自己的成长环境,总会有当时的理解与不理解。在学习中没有弯路与捷径,只有收获的多少。这个过程是一个学会学习的过程。在以后的学习中,也会获益更多。
附:
《大数据时代》之后
将要到来的三大技术革命与联系