之所以看这本书,是想了解一些跟汇编相关的知识,打开这本书后就被作者的观点——“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. 读论文《Distilling the Knowledge in a Neural Network》——蒸馏网络 —— 蒸馏算法 —— 知识蒸馏 中的温度系数到底怎么用, temperature怎么用?

    论文地址: https://arxiv.org/pdf/1503.02531.pdf 蒸馏网络的重要公式: 其中,\(p^g\)为Teacher网络,\(q\)为Student网络. 个体神经网络(C ...

  2. Google在放弃Tensorflow后推出Google版本的Pytorch框架 —— Jax

    相关: 谷歌放弃TensorFlow了 虽然在某种上来说,Google已经放弃了Tensorflow框架,但是由于Tensorflow的历史地位所造成的遗留应用,因此Tensorflow框架已经处于维 ...

  3. 如何将python的pip源设置为阿里云

    为python的pip源设置为阿里云,pip源的设置操作: pip config set global.index-url https://mirrors.cloud.aliyuncs.com/pyp ...

  4. OpenALMusicPlayer.cpp:164:22: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]

    编译时报错: OpenALMusicPlayer.cpp:164:22: error: invalid conversion from 'char' to 'const char*' [-fpermi ...

  5. 多线程之park()与interrupt()的理解

    1.背景 其他不多说,很多时候面试会问 2.代码 package com.ldp.demo01; import com.common.MyThreadUtil; import lombok.exter ...

  6. 同一块石头搬到了两次的List<Map> 转List<dto>的问题

    不多比比 it is shame to talking about this List<Map<String, Object>> maps = reader.readAll() ...

  7. Linux下编程常用基本命令

    Linux常用命令 基本操作命令 ls命令 ls -l # 列出文件和目录的详细信息 ls -R # 列出所有文件 ls -a # 列出隐藏文件 l;s # 列出 mv命令 mv example.tx ...

  8. Windows添加软件开机自启动

    两种方式 1.添加快捷方式到开始菜单 打开我的电脑找到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夹, 如果难找的话可 ...

  9. Feign 动态设定服务器名称 与 调用接口

    1. 新增编码器(由于使用了动态的Feign,所以不能像正常使用Feign一样指定configuration配置编码器) import feign.RequestTemplate; import fe ...

  10. 五子棋AI:实现逻辑与相关背景探讨(下)

    前文回顾 在上篇文章中,我们约定了一种衡量格子价值的方式,如下表. 综合价值排序 己方价值 敌方价值 对应的奖励数值 1 Lv1 ? \(2^{20}\) 2 ? Lv1 \(2^{16}\) 3 L ...