当前位置: 首页 > article >正文

《CPython Internals》读后感

一、 为什么选择这本书?

Python 是本人工作中最常用的开发语言,为了加深对 Python 的理解,更好的掌握 Python 这门语言,所以想对 Python 解释器有所了解,看看是怎么使用C语言来实现Python的,以期达到对 Python语言的掌握达到精通的程度,。

关于 Python 解释器的书不多——Anthony Shaw写的《CPython Internals》,陈儒写的《Python源码剖析》。

因为《CPython Internals》在2021年出版,使用的是Python3,比较新。而《Python源码剖析》在 2008 年出版,使用的是Python 2.5,比较古早。所以先阅读《CPython Internals》。

二、这本书写了什么?

这本书以 CPython 3.9 为例,讲解了编译基本操作(configure, make),内存管理(引用技术、垃圾回收), 并行和并发,基本数据类型(builtin types, dict),测试(unitest),调试(debug), 基准测试(timeit,pyperformance),性能分析(cProfile)。

从2025年1月6日至2025年1月26日,期间花了20天阅读完《CPython Internals》。

三、这本书特点

这是一本写得很混乱,阅读起来让人感到很痛苦的书。

当我在"About the Author"章节看到“Anthony has been programming since the age of 12 and found a love for Python while trapped inside a hotel in Seattle, Washington, 15 years later”——当看到这里,我是很兴奋的:作者 12 岁开始学习编程,27 岁接触 Python,具有这么丰富的编程经验的人那妥妥的是个大佬。但是,阅读完这本书后,我只能说和我想的不一样。

整本书充满很多无意义的口水话。例如:p13,CPython gives the developer writing Python code the platform to write scalable and performant applications。这句话包含形容词 scalabe 和 performant,这种形容词用在哪里都可以,说了等于没说。

整本书很多内容没有说到本质。例如:The first is profile, a pure-Python profiler, and the second, cProfile, a faster profiler written in C. In most cases, cProfile is the best module to use——在大多数情况下,cProfile是最好的模块,既然如此,那么为什么还要使用 profiler 呢?仅仅因为 cProfiler 是 C 语言写,更快?

很多概念没有明确定义。示例:The benchmark suite is the tool to use when comparing the complete performance of Python. The Python Benchmark suite is a collection of Python applications designed to test multiple aspects of the Python runtime under load.如果按照作者所给的定义“The benchmark suite is the tool to use when comparing the complete performance of Python.”,那么 timeit 也算一个 benchmark suite, 但是,timeit 不能算作 benchmark suie,可以算一个 benchmark tool。

总而言之,没必要把时间浪费在这本书上面。

四、这本书适合什么样的人?

不建议阅读。

五、推荐指数

按照5 星的标准,本书推荐指数 1 颗星。

六、参考资料

1. 编程

(1) Anthony Shaw,《CPython Internals》:https://book.douban.com/subject/35405785/

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

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


http://www.kler.cn/a/522755.html

相关文章:

  • C#高级:常用的扩展方法大全
  • decison tree 决策树
  • C++17 std::variant 详解:概念、用法和实现细节
  • Fullcalendar @fullcalendar/react 样式错乱丢失问题和导致页面卡顿崩溃问题
  • 第3章 基于三电平空间矢量的中点电位平衡策略
  • 您与此网站之间建立的连接不安全
  • 使用Python和Qt6创建GUI应用程序--关于Qt的一点介绍
  • WordPress event-monster插件信息泄露漏洞复现(CVE-2024-11396)(附脚本)
  • 【MySQL】 数据类型
  • Hive详细讲解-各类函数速通
  • GO 库与框架篇
  • Vue 3 30天精进之旅:Day 06 - 表单输入绑定
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》027-组件的高级配置和嵌套
  • Java数据库操作指南:快速上手JDBC【学术会议-2025年数字化教育与信息技术(DEIT 2025】
  • 如何利用AI工具来进行数据分析
  • 落地 轮廓匹配
  • 数据结构课程设计(三)构建决策树
  • 当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib)
  • unity商店中的A* Pathfinding Project插件,判断两个点之间能否正常导航通行?
  • Airflow:精通Airflow任务依赖
  • 如何解决小尺寸图像分割中的样本不均衡问题
  • 指针的介绍2前
  • 【JavaEE进阶】应用分层
  • 使用Ollama 在Ubuntu运行deepseek大模型:以DeepSeek-coder为例
  • 包管理工具随记
  • 构建1688自动代采系统:PHP开发实战指南