![[中英对照] 软件设计实例:基于 Python 工具的入门指](/storage/uploads/4362_b079ded2-445e-47e8-88c1-7c8c39cd334e.jpg)
![[中英对照] 软件设计实例:基于 Python 工具的入门指](/storage/uploads/4362_ed65a23e-c67e-4245-9e0c-4d951301f573.jpg)
![[中英对照] 软件设计实例:基于 Python 工具的入门指](/storage/uploads/4362_fd428511-f259-4280-a45c-229606e90b23.jpg)
![[中英对照] 软件设计实例:基于 Python 工具的入门指](/storage/uploads/4362_fbf73847-f7c8-4af6-a3db-46c965c0e4eb.jpg)
资源介绍
南(双语对照版电子书)
书籍核心定位与受众
(一)核心定位
学习任何领域的设计,最佳途径都是研究实例,而软件设计领域的优质实例,很多源自程序员日常工作中使用的工具。基于此,本书通过构建程序员常用工具的简化版本,揭开软件设计的神秘面纱,帮助读者洞悉资深程序员的思考方式。
书中从文件备份系统、测试框架,到正则表达式匹配器、浏览器布局引擎,再到小型编译器等工具的构建入手,深入探讨常见设计模式,展示如何让代码更易于测试,进而更易于复用,同时助力读者理解调试器、性能分析器、包管理器和版本控制系统的工作原理,以便更高效地运用这些工具。
(二)适用受众
自学人群:适合希望自主学习软件设计,通过实践掌握相关技能的读者。读者只需熟悉现代 Python 基础,书中在介绍 Python 高级特性时,会同步进行解释和举例说明。
高校学生:可作为本科软件设计课程的教材,帮助学生将理论知识与实际工具构建相结合,加深对软件设计的理解。
在职程序员:能作为程序员密集型一周工作坊的核心内容,助力在职人员提升软件设计能力,解决工作中的实际问题。
三、书籍内容架构
本书共 27 章,涵盖从基础概念到复杂工具构建的丰富内容,各章节逻辑连贯,逐步深入软件设计领域。
(一)基础入门(第 1-2 章)
第 1 章 “引言”:阐述软件设计的核心观点,如系统复杂度增长速度快于规模增长、学习设计的最佳方式是研究实例等,介绍书籍受众、核心理念、格式规范、使用方法以及他人对作者相关作品的评价,并给出初步练习,帮助读者搭建软件设计认知框架。
第 2 章 “对象与类”:讲解对象和类的关键概念,包括对象无需类也可发挥作用,但类能让对象更易理解;设计良好的类会定义使用其实例的代码可依赖的契约;遵循相同契约的对象具有多态性等,还介绍了对象和类可视为具有特定行为的字典,以及多数语言支持函数和方法接收可变数量参数,继承可通过多种方式实现等内容。
(二)工具构建与设计实践(第 3-26 章)
这部分是书籍核心,每章围绕一个具体工具或设计主题展开,结合 Python 实现,同时配备不同规模和难度的练习(从几行代码到一整天的工作量)。
文件与数据处理相关:第 3 章 “查找重复文件” 介绍哈希函数的应用,用大 O 符号估算算法运行时间,通过构建重复文件查找工具,展示如何利用哈希函数提高文件比较效率;第 10 章 “文件归档器” 讲解版本控制工具如何利用哈希唯一标识每个保存的文件,如何通过清单记录文件快照,以及使用模拟文件系统进行测试的方法,同时提及避免竞争条件的重要性;第 16 章 “对象持久化” 探讨持久化框架如何保存和恢复对象,处理别名和循环引用问题,以及用户如何扩展持久化功能以处理自定义类型对象。
文本处理与解析相关:第 4 章 “模式匹配” 介绍使用通配符和正则表达式进行文本模式匹配,利用继承使匹配器可组合和扩展,通过对象委托工作简化代码等;第 5 章 “文本解析” 讲解解析如何将人类易读的文本转换为计算机易处理的对象,语法定义解析器可识别的文本模式,多数解析器会先对输入文本进行标记化,再分析标记等内容;第 12 章 “模板扩展器” 阐述静态网站生成器如何从模板、指令和数据创建 HTML 页面,静态网站生成器与编程语言具有相同核心特性,以及特殊用途的迷你语言可能变得复杂等。
测试与调试相关:第 6 章 “运行测试” 说明函数可作为对象存储在数据结构中或传递给其他函数,Python 用类似字典的结构存储局部和全局变量,单元测试对测试对象执行操作并产生不同结果,程序可通过内省在运行时查找函数和其他对象;第 26 章 “调试器” 介绍交互式程序可通过模拟输入和记录输出来测试,将输入输出替换为模拟对象能简化交互式程序测试,调试器通常通过临时替换实际指令为特殊指令实现断点功能,使用查找表进行函数或方法分派可使程序更易扩展。
语言与执行相关:第 7 章 “解释器” 讲解编译器和解释器本质也是程序,基本算术运算可视为具有特殊符号的函数,程序可表示为树并存储为嵌套列表,解释器通过递归分派操作到实现低级步骤的函数等;第 25 章 “虚拟机” 介绍每台计算机都有具有特定指令集的处理器、一些寄存器和内存,指令本质是数字但可表示为汇编代码,指令可能涉及寄存器、内存或两者皆有,处理器通常按顺序执行指令,但可根据条件是否成立跳转到其他位置。
(三)总结与拓展(第 27 章及附录)
第 27 章 “结论”:从工业设计角度反思软件设计,指出当前软件设计在制造和维护便利性方面的不足,呼吁建立软件设计的共享词汇和典型示例,希望推动软件设计领域的发展,让人们能更深入地探讨软件设计的价值与美感。
附录部分:包含参考文献、补充材料、教学大纲、许可协议、行为准则、贡献指南、术语表和索引等内容。补充材料拓展核心章节知识,如函数属性使用、延迟计算等;教学大纲为课程教学提供参考;许可协议明确内容和软件的使用权限;行为准则和贡献指南规范社区交流与贡献行为;术语表和索引方便读者查询关键概念和内容位置。
四、书籍特色与价值
(一)特色
工具驱动教学:以构建程序员日常使用的工具为核心开展教学,让读者在实践中理解软件设计原理,避免单纯理论讲解的枯燥,增强学习的实用性和趣味性。
注重实践练习:每章配备不同难度的练习,读者可通过完成练习巩固所学知识,将理论转化为实际能力,且练习难度梯度合理,适应不同水平读者的需求。
开放共享理念:文字内容和软件分别基于开放许可协议,允许读者自由复用、修改,鼓励知识共享和社区协作,同时书籍销售收益用于慈善,体现社会责任感。
内容循序渐进:从基础的对象、类概念,到复杂的虚拟机、调试器构建,内容难度逐步提升,符合认知规律,帮助读者逐步深入软件设计领域。
(二)价值
知识传递:系统传授软件设计知识和 Python 编程技巧,帮助读者理解各类软件工具的工作原理,掌握软件设计的核心模式和方法。
能力培养:通过实践项目和练习,培养读者的软件设计能力、Python 编程能力和问题解决能力,使其能独立设计和实现软件工具,应对实际工作和学习中的挑战。
行业推动:倡导建立软件设计的规范和共享体系,为软件设计领域的发展提供思路和参考,助力推动整个行业在软件设计理念和实践方面的进步。Software Design by Example