页面顶部
已进入:书籍页

开源书籍

自学是门手艺

以编程为载体,系统讲解如何掌握自学这项人人都需要的手艺。

全 46 章GitHub 原文仓库 ↗

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