之所以看这本书,是想了解一些跟汇编相关的知识,打开这本书后就被作者的观点——“If you don't understand something the first time, reread it. If you still don't understand it, it is sometimes best to take it by faith and come back to it later(第一遍看不懂,那就看第二遍;还是看不懂,记住它,回头再看)”吸引了,从2024年6月30到2024年10月11日,期间断断续续的抽空阅读,大概花了11天读完。

这是一本关于通过汇编语言(AT&T语法)入门编程的书。总共十三个章节,介绍了计算机基本结构、汇编语言语法、常用指令、函数、文件操作、内存管理、优化等基本内容,虽然整本书只有300多页,但编程的各个方便也基本涵盖了,和《The C Programming Language》一类书一样,属于非常精简的书。

既然这是一本通过汇编语言入门编程的书,那么是否适合无基础的人作为编程的入门教材?

我的观点是:不那么适合。这本书出版于2004年,当初32位的电脑很普遍,所以里面的汇编代码使用的指令大部分适用于32位的电脑,而如今是2024年,大部分的电脑都是64位的,那么关于寄存器、指令的这两部分的内容,稍微显得有点过时——当然,这并不是说里面的内容没有意义,也不是说里面的代码无法运行。本书的作者为了解决这个问题,在2021年又写了一本书——《Learn to Program with Assembly : Foundational Learning for New Programmers》,介入时间关系,我还没有开始阅读,各位感兴趣的读者不放先从后面一本书读起。

这本书对自己有什么帮助?

看完了一本技术类书籍,不能看完了就完了。有什么收获?于我而言,有一下几点收获:

1.锻炼了英文阅读能力。这本书比较简短,所以阅读起来相对来说没有那么困难。同时尽量将范围局限在技术之内,没有过多的涉及国外的历史、人文等知识。不想有些书,不像某些书,每个章节的开始都引用一段其它书的内容——个人真的很不喜欢这种话风格,去掉了对阅读完全没有影响。

2.掌握了AT&T的汇编语法

3.学习了一些优秀的思维方式。应该说,这是本书让我最满意的一点,作者的很多观点。本人觉得很有指导意义:(1)“If you don't understand something the first time, reread it. If you still don't understand it, it is sometimes best to take it by faith and come back to it later(第一遍看不懂,那就看第二遍;还是看不懂,记住它,回头再看)”。(2)Therefore, the time to optimize is toward the end of development, when you have determined that your correct code actually has performance problems(在开发即将结束时进行优化,因为这已经确定了代码的正确性,同时也确定了代码确实存在性能问题)。(3)As a programmer, you will need to be

prepared to be constantly learning and pushing your limits。

最后的最后,推荐一下郭晴霞老师的中译本《深入理解程序设计:使用Linux汇编语言》,看完英文版后,去看了下中文版,中文版翻译质量很高,不想看英文版的,可以直接看中文版。

参考资料

1. 编程

(1)Jonathan Bartlett,《Programming From The Ground Up》:https://book.douban.com/subject/1787855/

欢迎搜索及关注:编程人(a_codists)

《Programming from the Ground Up》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. 【MySQL】替换件需求

    先上个表结构吧: CREATE TABLE `tm_part_replace` ( `ITEM_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', ...

  2. 【SpringBoot】01 快速上手

    环境搭建: JDK8 + IDEA 2018 + SpringBoot + Maven 3.0 + 创建Boot项目 2020.6.1更新补充: 最近才发现SpringBoot用IDEA构建项目会发生 ...

  3. 如何修复ubuntu的uefi启动——如何将Ubuntu安装入移动硬盘中

    交代一下使用场景,个人平时经常使用Ubuntu系统,由于不喜欢总在一个地方呆但是来回搬电脑又不是十分的方便,于是想到了一个好的方案,那就是把Ubuntu系统安装到移动硬盘中,这样不论是在家还是在实验室 ...

  4. python语言绘图:绘制一组二项分布图

    代码源自: https://github.com/PacktPublishing/Bayesian-Analysis-with-Python ============================= ...

  5. 强化学习中Q-learning,DQN等off-policy算法不需要重要性采样的原因

    在整理自己的学习笔记的时候突然看到了这个问题,这个问题是我多年前刚接触强化学习时候想到的问题,之后由于忙其他的事情就没有把这个问题终结,这里也就正好把这个问题重新的规整一下. 其实,这个DQN算法作为 ...

  6. 代码随想录Day11

    150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式. 请你计算该表达式.返回一个表示表达式值的整数. 注意: 有效的算符为 '+'.'-'.' ...

  7. 消息队列初见:一起聊聊引入系统mq 之后的问题

    消息队列前文目录 消息队列初见:一起聊聊引入系统mq 之后的问题 https://www.cnblogs.com/yizhiamumu/p/16573472.html 分布式事务实战方案汇总 http ...

  8. R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024

    大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性.然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源.论文提出新 ...

  9. 宿舍管理系统——单链表+结构体实现入住、退房和查询功能(C语言版)

    本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评论区留言,也欢迎直接加QQ:2961439733,备注博客园或CSDN即可): 编辑工具:Dev-C++(版本:5.11.0.0) 编译器:TD ...

  10. 我对互联网和网站运作的理解 – Domain, DNS, Hosting 介绍

    前言 一直没有写过关于互联网和网站运作的原理相关文章. 这篇就稍微介绍一下它们. 1. 电脑文件 网站是由许多网页组成的, 网页就是电脑里的 file. extension 是 .html 类似于 . ...