自学是门手艺
- 01 前言
想写一本关于自学能力的书,还真的不是一天两天的事,所以肯定不是心血来潮。
- 02 如何证明你真的读过这本书?
如何证明你真的读过这本书?
- Part.1.A 为什么一定要掌握自学能力?
为什么一定要掌握自学能力?
- Part.1.B 为什么把编程当作自学的入口?
为什么把编程当作自学的入口?
- Part.1.C 只靠阅读习得新技能
习得自学能力的终极目标就是:
- Part.1.D 开始阅读前的一些准备
关于 Python 编程的第一部分总计 7 章,主要内容概括为:
- Part.1.E.1 入口
“速成”,对绝大多数人a href='fn1' name='fn1b'sup[1]/sup/a来说,在绝大多数情况下,是不大可能的。
- Part.1.E.2 值及其相应的运算
从结构上来看,一切的计算机程序,都由且只由两个最基本的成分构成:
- Part.1.E.3 流程控制
在相对深入了解了值的基本操作之后,我们需要再返回来对流程控制做更深入的了解。
- Part.1.E.4 函数
函数,实际上是可被调用的完整的程序。它具备输入、处理、输出的功能。又因为它经常在主程序里被调用,所以它总是更像是个子程序。
- Part.1.E.5 字符串
在任何一本编程书籍之中,关于字符串的内容总是很长 —— 就好像每本英语语法书中,关于动词的内容总是占全部内容的至少三分之二。这也没什么办法,因为处理字符串是计算机程序中最普遍的需求 —— 因为程序的主要功能就是完成人机交互,人们所用的就是字
- Part.1.E.6 数据容器
在 Python 中,有个数据容器(Container)的概念。
- Part.1.E.7 文件
我们需要处理的数据,一定是很多,所以才必须由计算机帮我们处理 —— 大量的数据保存、读取、写入,需要的就是文件(Files)。在这一章里,我们只介绍最简单的文本文件。
- Part.1.F 如何从容应对含有过多 “过早引用” 的知识?
如何从容应对含有过多 “过早引用” 的知识?
- Part.1.G 官方教程:The Python Tutorial
官方教程:The Python Tutorial
- Part.2.A 笨拙与耐心
自学的过程,实际上需要拆解为以下四个阶段,虽然它们之间常常有部分重叠:
- Part.2.B 刻意练习
在自学的过程中,总是有一些部分需要刻意练习。就好像小时候我们学习汉字,有些人总是把 “武” 这个字上加上一个撇 —— 对他们来说,不去写那个不该有的撇,就是需要刻意练习的。另外一些人倒是不在这个字上出错,但候和侯傻傻地分不清楚(类似的例子不
- Part.2.C 为什么从函数开始?
读完第一部分之后,你多多少少已经 “写” 了一些程序,虽然我们总是说,“这就是让你脱盲”;也就是说,从此之后,你多多少少能够读懂程序,这就已经很好了。
- Part.2.D.1 关于参数(上)
之前就提到过,从结构上来看,每个函数都是一个完整的程序,因为一个程序,核心构成部分就是输入、处理、输出:
- Part.2.D.2 关于参数(下)
可以接收一系列值的位置参数
- Part.2.D.3 化名与匿名
在 Python 中,我们可以给一个函数取个化名(alias)。
- Part.2.D.4 递归函数
递归(Recursion)
- Part.2.D.5 函数的文档
你在调用函数的时候,你像是函数这个产品的用户。
- Part.2.D.6 保存到文件的函数
写好的函数,当然最好保存起来,以便将来随时调用。
- Part.2.D.7 测试驱动的开发
写一个函数,或者写一个程序,换一种说法,其实就是 “实现一个算法” —— 而所谓的 “算法”,Wikipedia 上的定义是这样的:
- Part.2.D.8 可执行的 Python 文件
可执行的 Python 文件
- Part.2.E 刻意思考
随着时间的推移,你会体会到它的威力:
- Part.3.A 战胜难点
无论学什么,都有难点。所谓的 “学习曲线陡峭”,无非就是难点靠前、难点很多、难点貌似很难而已。
- Part.3.B.1 类 —— 面向对象编程
注意:当前这一小节所论述的内容,不是专属于哪个编程语言(比如 Python、JavaScript 或者 Golang)。
- Part.3.B.2 类 —— Python 的实现
类 —— Python 的实现
- Part.3.B.3 函数工具
这一章要讲的是迭代器、生成器和装饰器,这些都是函数工具。有人把它们称为 DIG(Decorator,Iterator,Generator)—— 它们都是真正掌握 Python 的关键。
- Part.3.B.4 正则表达式
正则表达式本质上是个独立的语言,短小却格外强悍 —— 乃至于,如果你竟然没学会它的话,你的之前学的编程技能干脆与残疾无异。
- Part.3.B.5 BNF 以及 EBNF
通常情况下,你很少会在入门书籍里读到关于 Backus-Naur Form(BNF,巴科斯-诺尔范式)和 Extended Backus-Naur Form(EBNF)的话题 —— 它们都被普遍认为是 “非专业人士无需了解的话题”,隐含的另
- Part.3.C 拆解
在学习编程的过程中,你会不由自主地学会一个重要技能:
- Part.3.D 刚需幻觉
在前言之中,就举过一个例子,人们一不小心就把自己搭了进去…… 只不过因为没搞明白,道理就是道理,跟讲道理的老生其实全然没什么关系。
- Part.3.E 全面 —— 自学的境界
之前提到过那些 “貌似一出手就已然是高手” 的人,也为此做过一番解释:
- Part.3.F 自学者的社交
很多人有莫名其妙的误解,以为 “自学”(self-teaching)就一定是 “自己独自学”(solo-learning),殊不知,自学也需要社交。也有另外一些人,因为 “专心” 到一定程度,觉得社交很累,所以开始抵触一切社交。这些都不是全
- Part.3.G 这是自学者的黄金时代
历史上,自学者从未像今天这样幸福。
- Part.3.H 避免注意力漂移
注意力漂移,是我杜撰的一个词,用来作为 “注意力集中” 的反义词 —— 因为更多的时候,我们并不是 “注意力不集中”,而是…… 而是更令人恼火的一个现象:
- Q 如何成为优秀沟通者
一般认为,“手艺人” 的普遍特征之一就是缺乏沟通能力,或者沟通能力差 —— 也许是因为平时把所有的时间精力都投入到磨练手艺上去了罢。
- R 自学者的终点
…… 磨练自学手艺的你,早晚会遇到这种情况:
- S 下一步干什么?
理论上,下一步你的选择很多。自学是门手艺,你可以用它去学任何你想要掌握的其它手艺。如果,你有意在编程这个领域继续深入,那么,以下就是一些不错的线索。
- Appendix A: Visual Studio Code 的安装与配置
Visual Studio Code 的安装与配置
- Appendix B: Git 简介
-- You should've learned Git yesterday.
- Appendix C: Jupyterlab 的安装与配置
Jupyterlab 的安装与配置
- Appendix D: 这些符号都代表什么?
以下的表格你可以用很多次 —— 每次学一门新语言的时候,都可以拿它整理一遍思路……