【读书笔记】-《程序员的自我修养-链接、封装与库》

序言:

        《程序员的自我修养》这本书,总是似曾相识,难道是周围人经常说的《演员的自我修养》?说来也巧,本来只是想加深对程序运行时各个段代表着什么,为什么要分为.bbs .data之类的段。查阅资料时摘抄自这本书,使用的白话文,通俗易懂,我觉得有必要领会领会。

        怎么说呢,最近看的书都是理论型的,并且各有侧重,各有交汇,比如说测试,在前面的《华为c编程规范》《重构》《程序员的思维锻炼》以及《程序的修炼之道》都有涉及,并且都处于很重的地位。所以我也开始赞同外国外对测试的定义—要想成为一名资深的测试工程师,先是经过开发与管理的过程,才能达到测试的境界。

        《程序员的修炼之道》重点讲解的是各式的变成经验、编程技巧;《程序员的思维锻炼》告诉我们如何高效的开发,如何善用周围的资源与工具提高工作效率。而《程序员的自我修养》是在解释程序运行需要的资源,这些策略如何演变而来,如何实际应用为话题。从三位作者的自述中,就能看出他们有着极其扎实的功底以及刨根问底的精神,从书中的字里行间就能感受到。也正是那句话,现如今那么多编程语言都在更新,但是唯独底层更新少,并且还能保持它的兼容性,这就归功于底层框架基本确定。不管是作为Windows软件开发人员还是嵌入式开发人员,这本书都适用。

        其实这本书可以当做一本手册使用或者字典使用,作者已经将各个知识分开,耦合性不高,但是知识还是覆盖很全面。就好比如我是如何与它结缘一般,某知识网站中的某个帖子摘录了该本书的3.3小节—挖掘SimpleSection.o,就已经解释了可执行文件在运行时各个段的在内存中的分配。所以我觉得这本书最好的笔记就是它的目录,并且我也摘录作者在最开始的一个例子,为这本书的查阅做个铺垫。

《程序员的自我修养》

1. 从这本书中可以学到什么?

本书将详细的描述现在流行的Windows和Linux操作系统下各自的可执行文件、目标文件格式;普通C/C++程序代码如何被编译成目标文件及程序在目标文件中如何存储;目标文件如何被链接器链接在一起,并且形成可执行文件;目标文件在链接时符号处理、重定位和地址分配如何进行;可执行文件如何被装载并且执行;可执行文件与进程的虚拟空间之间如何映射;什么是动态链接,为什么要进行动态链接;Windows和Linux如何进行动态链接及动态链接时的相关问题;什么是堆,什么是栈;函数调用惯例;运行库,Glibc和MSVC CRT的实现分析;系统调用与API;最后还自己实现了一个Mini CRT。

2. 适用什么样的人群?

如何全面的理解一个程序运行的机制?从最简单的Hello World程序说起。

#include<stdio.h>

int main(void)
{
    printf(“Hello World!\n”);
    return 0;
}

根据这个程序,下面的相关问题是否马上就能有很清晰很明确的答案。如何是,那么这本书就不太适合你;如何不是,这本书就可以给与参考。就我的基础而已可以理解80%,但是很是很明确,只是有个大概的印象。

  • 程序为什么要被编译了之后才可以运行?
  • 编译器在把C语言程序转换成可执行的机器码的过程做了什么,怎么做的?
  • 最后编译出来的可执行文件里面是什么?除了机器码还有什么?它们是怎么存放的,怎么组织的?
  • #include《stdio.h》是什么意思?他stdio.h包含进来意味着什么?C语言库又是什么?它是怎么实现的?
  • 不同的编译器(Microsoft VC,GCC)和不同的硬件平台(X86、SPARC、MIPS、ARM),以及不同的操作系统(Windows、Linux、UNIX、Solaris),最终编译出来的结果是一样的吗?为什么?
  • Hello World程序是怎样运行起来的?操作系统是怎么装载它的?它从哪里开始执行,到哪儿结束?main函数之前发生了什么?main函数结束以后又发生了什么?
  • 如果没有操作系统,Hello World可以运行吗?如果要在一台没有操作系统的机器上运行Hello World需要什么?应该怎么实现?
  • printf是怎样实现的?它为什么可以有不定数量的参数?为什么它能够在终端上输出字符串?
  • Hello World程序在运行时,它在内存中是什么样子的?

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 程序员自我修养是一本技术类图书,通过以文字方式呈现,将核心内容以PDF文件的形式呈现给读者。 《程序员自我修养》一书是由俞甲子、俞甲子联合编写的,该书主要讲述了程序员在技术方面的自我提升与修养。书中详细介绍了程序员所需具备的技能与素质,并通过实例、案例等方式来进行详细解析。 首先,本书着重强调了程序员的技术素养。作为一名合格的程序员,必须具备扎实的编程基础知识,熟练掌握至少一种编程语言,并能够灵活应用于实际项目中。同时,还要不断学习新的编程技术和工具,提高开发效率和质量,不断追求技术的创新与突破。通过深入的技术讲解和实例分析,读者可以更好地理解和掌握这些关键技能。 其次,本书重视程序员的思维与方法。除了技术之外,合理的思维方式和解决问题的方法也是程序员必备的素养。本书通过探讨算法、数据结构、设计模式等内容,引导读者形成良好的编程思想和解决问题的思路。在实际开发过程中,程序员能够运用这些思维和方法,更加高效地解决实际问题。 此外,本书还提到了程序员的团队合作和沟通能力的重要性。现代软件开发往往需要多人合作完成,团队合作和沟通能力至关重要。本书通过讲解项目管理、代码规范、团队协作等方面的内容,帮助读者更好地适应团队开发的环境。 总之,《程序员自我修养》在技术、思维方式和团队合作等多个方面对程序员自我提升与修养进行了全面而详细的讲解。通过阅读文字版PDF,程序员可以更好地了解自身在技术和素养方面的不足,并通过实践和学习不断提升自己。 ### 回答2: 《程序员自我修养》是一本由俞甲子编写的程序员必读经典之一。这本书涵盖了计算机科学的基础知识和程序员在日常工作中所需要的修养和技能。 首先,这本书强调了程序员应具备的基本素质。不仅要有扎实的计算机基础知识,还要有广泛的知识储备和求知欲。书中指出,只有具备全面的知识背景,程序员才能适应不断变化的软件开发环境,并能够快速学习和掌握新的技术。 其次,书中提到了程序员的编程能力。编程是程序员的基本技能,而编程能力的提升不仅仅局限于语法和算法的掌握,更要关注代码的可维护性、可读性和可测试性。此外,书中还提到了代码风格规范、代码重构和代码调试等重要的编程技巧。 此外,这本书还介绍了程序员应具备的工程素养。程序员的工作不仅仅是写代码,还包括需求分析、架构设计、项目管理等方方面面。程序员应该具备良好的团队合作和沟通能力,能够与其他人合作完成一个项目。此外,书中还提到了软件工程的重要原则和方法,如模块化、面向对象设计、测试驱动开发等。 除此之外,书中还特别强调了程序员自我提升和学习能力。程序员应保持持续学习的态度,不断跟进行业的最新发展,并积极参与技术社区和开源项目,与其他程序员互动交流,共同进步。 总之,《程序员自我修养》是一本涵盖广泛知识和技能的书籍,其中介绍了程序员应具备的基本素质、编程能力、工程素养和自我提升等方面的内容。这本书对于程序员的职业发展和能力提升有着重要的指导作用,值得每位程序员认真阅读和实践。 ### 回答3: 《程序员自我修养》是一本由俞甲子编著的程序员修养指南,以PDF文字版的形式呈现。本书旨在帮助程序员们提升自己的理论基础和实践能力,进而追求个人的成长和职业发展。 《程序员自我修养》主要分为理论和实践两部分。在理论部分,作者深入浅出地介绍了计算机系统的基本原理、计算机网络的工作原理、软件工程中的常用设计模式等。通过这些理论知识的学习,程序员们能够更好地理解计算机系统的运行机制,从而编写更高效、稳定的程序。 而在实践部分,本书通过丰富的实例和案例,引导程序员们进行实践和项目开发。它包括了代码调试和优化的技巧、算法与数据结构的实践应用、多线程与并发编程的方法等。通过这些实践指导,程序员们能够更好地应对实际问题,并提高代码质量和效率。 《程序员自我修养》文字版的PDF形式具有以下优点:一是方便携带和阅读,读者可以随时随地进行学习和查阅;二是易于搜索和标注,可以快速定位到自己关注的内容,并进行个性化的学习笔记;三是多平台兼容,可以在各种设备上进行阅读,满足不同读者的需求。 总之,《程序员自我修养》文字版的PDF形式是一本帮助程序员们提升自己的重要工具,通过学习其中的理论知识和实践经验,程序员们能够更好地应对工作中的挑战,提升自身的竞争力,实现个人价值的最大化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值