深入理解程序设计

[美] Jonathan Bartlett

出版时间

2013-12-31

ISBN

9787115337887

评分

★★★★★
书籍介绍
这本书真正的价值,不在于教会你多少汇编指令,而在于它提供了一种重新理解程序的方式。作者把源码称作“可读性良好”的产物,主张写程序既是向计算机传递信息,更是向未来的修改者与使用者传递信息——这一视角让汇编脱离了“晦涩难懂”的刻板印象,成为训练工程审美的入口。从读者反馈看,它上手友好、以实例驱动,适合零汇编甚至零编程基础的初学者;但也有人指出它偏薄、内容略旧、个别代码无法直接运行。正因如此,它更像一本引导你建立“计算机思维”的敲门砖,而非包罗万象的权威手册。若你希望理解程序究竟如何在内存中运作、为何某些指令更快、如何写出可维护的代码,它会为你打开一扇门。
作者简介
Jonathan Bartlett New Medio技术总监,负责为各公司定制Web应用、移动应用或企业软件解决方案。在此之前,他曾在EDS担任因特网开发经理一职,为Web团队和Wolfram Research提供技术支持。另外,他常在IBM DeveloperWorks社区撰文,介绍从高性能Playstation 3编程到高级元编程技巧等主题。
AI导读
核心看点
  • 本书以Linux平台为背景,采用AT&T语法深入讲解汇编语言编程,从计算机体系结构、内存管理及CPU构造等底层原理讲起,帮助读者建立从硬件视角理解程序运行的思维模式,彻底打破汇编语言晦涩难懂的刻板印象,为成为优秀程序员夯实基础。
  • 内容涵盖函数调用约定、递归实现、文件处理、缓冲区分析及记录读写等核心编程技能,并特别强调如何开发健壮的程序,包括错误处理、测试策略及文档规范。作者主张编程不仅是让计算机执行指令,更是向其他开发者传递清晰意图的艺术,倡导编写风格良好、易于维护的代码。
  • 书中详细探讨了程序优化原则,明确指出除非极端情况,否则代码的可维护性和可读性远高于优化,反对过早优化。同时提供二进制运算加速技巧及内存布局知识,引导读者理解计算机计数原理,并通过实际案例演示如何构建模块化、安全的程序,最后推荐了经典的计算机学习书目。
读者共识
  • 读者普遍认为本书是极佳的汇编入门读物,尤其适合零基础用户,其通俗易懂的讲解方式降低了学习门槛。书中强调的编程伦理、代码规范及安全意识受到高度评价,认为其有助于培养良好的编程习惯。尽管存在翻译瑕疵,但其传达的从底层理解程序的思想被广泛认可,被视为提升编程素养的重要读物。
  • 多数读者指出书中代码存在错误且部分示例无法运行,翻译质量参差不齐,甚至出现方向性错误。然而,读者仍肯定其教学价值,认为通过修正错误能更好地掌握知识。同时,读者强烈建议直接阅读英文原版或参考官方勘误,以避免被错误代码误导。对于已有汇编基础者,本书内容过于浅显,不建议购买。
  • 读者高度赞赏书中关于‘编程如诗’的理念及最后章节推荐的书单,认为其提供了正确的学习方向。尽管内容老旧且薄,但其对Linux汇编、系统调用及内存管理的讲解仍具启发性。读者共识是:此书适合初学者建立底层思维,但不适合深入钻研,应作为跳板,结合其他权威教材共同学习,切勿仅依赖此书。
精彩摘录
  • "One of the greatest programmers, Donald Knuth, describes programming not as telling a computer how to do something, but telling a person how they would instruct a computer to do something. In our case, the kernel is Linux. Now, the kernel all by itself won't do anything. You can't even boot up a com"
  • "Source code is the human-readable form of a program. In order to transform it into a program that a computer can run, we need to assemble and link it. The first step is to assemble it. Assembling is the process that transforms what you typed into instructions for the machine. The machine itself only"
  • "存储在内存中的地址也成为指针"
  • "与修复相比,试图诊断出了什么问题导致更多的问题。因此仅通过报告错误代码和消息,让用户通过不同的资源进行故障排除是更好的做法。"
  • "计算机将一切都作为1和0的序列来存储。计算机内存只看到数字,具体表达方式和意义需要程序员去解释。 不同指令执行速度不同,可以通过二进制运算符(布尔运算符:AND, OR, NOT, XOR, 移位与循环移位)来加速。"
  • "语言只是工具,程序员不应该惧怕使用学习和使用新的工具。 每个语言都各有千秋,懂得的语言越多,就越能胜任程序员的工作。"
  • "我热爱编程,编写不但能运行而且风格良好的程序是我最喜欢的挑战。变成如同写诗。它不仅是在向计算机传递信息,也是向修改和使用程序的人传递信息。有了程序,你就能用一套规则构建自己的世界,按自己对问题的理解和自己构思的解决方案来创造自己的世界。高明的程序员可以用诗歌或散文般简明的程序来构建世界。 作为最伟大的程序员之一,Donald Knuth这样向我们描述编程:编程并非告诉计算机如何做某件事,而是告诉人们程序员如何指示计算机做某件事。这里的关键在于:程序不仅仅是给计算机看的,更是给人看的。当你转向其他项目后,你的程序将由其他人修改和更新。因此,编程并非只需要和计算机交流,更意味着要和接替你的程序员沟"
  • "I love programming. I enjoy the challenge to not only make a working program, but to do so with style. Programming is like poetry. It conveys a message, not only to the computer, but to those who modify and use your program. With a program, you build your own world with your own rules. You create yo"
目录
第1章 引言  1
1.1  欢迎加入编程大军  1
1.2  工具  2
第2章 计算机体系结构  5
2.1  内存结构  5

显示全部
用户评论
直接上手,用实例的方式教你学汇编,对初学者友好。美中不足的是有点薄,讲的东西不可能系统。而且内容也有点老了。
以优雅的方式展现了汇编语言思维,原来读汇编程序也可以赏心悦目,最后一章《学无止境》推荐的书目值得关注。
讲得不错的,大一的时候元旦假期从学校图书馆借来读,结果去超市买食品的时候脑子里都全都是MOV, PUSH, POP这些东西
入门书, 适合没有基础的读
汇编代码手把手教学,照着码就是了。算是基础入门吧,就是Linux的汇编代码照抄编译。
终于理解了函数调用
精髓在参考文献
下载
收藏