Skip to content

为什么把编程当作自学的入口?

2 / 44

很多人误以为编程是很难的事情

…… 实则不然 —— 这恰恰是我们选择编程作为自学的第一个执行项目的原因

一本关于自学能力的书若是真的能够起到作用那么它就必须让读者在读之前和读之后不一样 —— 比如之前可能没有自学能力或者自学能力很差之后就有了一定的自学能力……

然而这很难不但对读者来说很难对作者来说更难 —— 我当过那么多年被学生高度评价的老师出版过若干本畅销且长销的书籍所以更是清楚地知道例子的重要性

道理当然很重要可是在传递道理的时候例子相对来看好像更重要

同样的道理例子不准人就可能会理解错例子不精彩人就可能听不进去例子居然可以令人震惊那就可以做到让听众让读者永生不忘”。

许多年前有位后来在美国读书已经博士毕业了的学生来信大意是说

好多年前我在新东方上课听您讲人学习就好像是动物进化一样…… 很多人很早就开始停止了进化本质上跟猴子没啥区别

那段类比好长我记不太清楚细节了…… 可是当时我是出了一身汗的因为我忽然觉得自己是一只猴子可是突然之间我不想继续做猴子更不想一直做猴子

从那之后我好像变了一个人似的…… 现在我已经博士毕业了觉得应该写封信告诉您我不再是猴子了最起码是大猩猩而且我保证我会一直进化

……

所以啊在我看来写书讲课之前最重要的工作也是做得最多的事情其实就是找到好例子” —— 那即意味着说先要找到很多很多恰当合适的例子而后再通过反复比较试验挑出那个效果最好的例子了解了这一点将来你准备任何演讲都会不由自主地多花一点时间在这方面效果肯定比把幻灯片做得更花哨一些要好太多了罢

后来我选中了一个例子:“自学编程” —— “尽量只通过阅读学会编程”。

选择它的理由首先就在于

事实证明它就是无论是谁都能学会的 —— 千万别不信

它老少皆宜 —— 也就是说,“只要你愿意”,根本没有年龄差异十二岁的孩子可以学十八岁的大学生可以学在职工作人员可以学…… 就算你已经退休了想学就能学谁也拦不住你

它也不分性别男性可以学女性同样可以学性别差异在这里完全不存在

它也不分国界更没有区域差异 —— 互联网的恩惠在于你在北京纽约也好老头沟门头沟也罢在这个领域里同样完全没有任何具体差异

尤其是在中国现状是中国的人口密度极高优质教育资源的确就是稀缺…… 但在计算机科学领域所有的所谓优质教育资源事实上完全没有任何独特的竞争力 —— 编程领域实际上是当今世上极为罕见的教育机会公平之地”。又不仅在中国如此事实上在全球范围内也都是如此

编程作为讲解如何习得自学能力的例子”,实在是太好了

首先编程这个东西反正要自学 —— 不信你问问计算机专业的人他们会如实告诉你的学校里确实也教但说实话都教得不太好……

其次编程这个东西最适合仅靠阅读自学” —— 这个领域发展很快到最后新东西出来的时候没有老师存在任由你是谁都只能去阅读官方文档”,只此一条路

然后也是最重要的一条别管是不是很多人觉得编程是很难的东西事实上它就是每个人都应该具备的技能

许多年前不识字被称为文盲……

后来人们反应过来了不识英文也是文盲因为科学文献的主导语言是英文读不懂英文什么都吃不上热乎的等菜好不容易端上来了吧早就凉了不说味道都常常会变……

再后来不懂基本计算机操作技能的也算是文盲因为他们无论做什么事情效率都太低下了明明可以用快捷键一下子完成的事情却非要手动大量重复……

到了最近不懂数据分析的也开始算作文盲了许多年前人们惊呼信息时代来了的时候其实暂时体会不到什么太多的不同然而许多年过去互联网上的格式化数据越来越多不仅如此实时产出的格式化数据也越来越多于是数据分析不仅成了必备的能力而且早就开始直接影响一个人的薪资水平

你作为一个个体每天都在产生各种各样的数据然后时时刻刻都在被别人使用着分析着…… 然而你自己却全然没有数据分析能力甚至不知道这事很重要是不是感觉很可怕你看看周边那么多人有多大的比例想过这事反正那些天天看机器算法生成的信息流的人好像就是全然不在意自己正在被支配……

怎么办学呗学点编程罢 —— 巧了这还真是个正常人都能学会的技能

编程作为讲解如何习得自学能力的例子最好的地方在于这个领域的知识结构最接近每个人所面对的人生中的知识结构

这是什么意思呢

编程入门的门槛之所以高有个比较特殊的原因

它的知识点结构不是线性的

我们在中小学里所遇到的教科书其中每个章节所涉及到的知识点之间全都是线性关联第一章学好了就有基础学第二章在第二章的概念不会出现在第一章之中……

很遗憾编程所涉及到的知识点没办法这样组织 —— 就是不行编程教材之所以难以读懂就是因为它的各章中的知识点结构不是线性排列的你经常在某一章读到不知道后面第几章才可能讲解清楚的概念

比如几乎所有的 Python 编程书籍上来就举个例子

python
print('Hello, world!')

姑且不管这个例子是否意义非凡或者意义莫名关键在于print() 是个函数而函数这个概念不可能一上来就讲清楚只能在后面若干章之后才开始讲解……

想要理解当前的知识点需要依赖对以后才能开始学习的某个甚至多个知识点的深入了解……

这种现象可以借用一个专门的英文概念叫做Forward References” —— 原本是计算机领域里的一个术语为了配合当前的语境姑且把它翻译为过早引用或者前置引用也行

学校里的课本都很严谨 —— 任何概念未经声明就禁止使用所以学完一章就能学下一章跳到某一章遇到不熟悉的概念往前翻肯定能找到……

在学校里习惯了这种知识体系的人离开学校之后马上抓瞎 —— 社会的知识结构不仅不是这样的,而且几乎全都不是这样的工作中生活里充满了各式各样的过早引用”。为什么总是要到多年以后你才明白父母曾经说过的话那么有道理为什么总要到孩子已经长大之后才反应过来当初自己对孩子做错过很多事情为什么在自己成为领导之前总是以为他们只不过是在忽悠你为什么那么多人创业失败了之后才反应过来当初投资人提醒的一些观念其实是千真万确的?—— 因为很多概念很多观念是过早引用”,在当时就是非常难以理解……

自学编程在这方面的好处在于在自学的过程中其实你相当于过了一遍模拟人生” —— 于是面对同样的过早引用”,你不会觉得那么莫名其妙你有一套你早已在模拟人生中练就的方法论去应对

另外一个把编程作为讲解如何习得自学能力的例子最好的地方在于你在这个过程中将不得不习得英语 —— 起码是英文阅读能力它能让你在不知不觉中脱盲”。

学编程中最重要的活动就是阅读官方文档”。 Python 更是如此。Python 有很多非常优秀的地方其中一个令人无法忽视的优点就是它的文档完善程度极好它甚至有专门的文档生成工具Sphinx

Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license.

It was originally created for the Python documentation, and it has excellent facilities for the documentation of software projects in a range of languages. Of course, this site is also created from reStructuredText sources using Sphinx!

最好的 Python 教程是官方网站上的 The Python Tutorial读它就够了我个人完全没兴趣从头到尾写一本 Python 编程教材不仅因为人家写得真好而且它就放在那里

虽然你在官方网站上就是很难找到它的中文版虽然就不告诉你到底在哪里也显得很不厚道但是我建议你就只看英文版 —— 因为离开了这个教程之后还是要面对绝大多数都是英文的现实

为了照顾那些也想读完本书但因为种种原因想着读中文可以快一些的人链接还是放在这里

我曾经专门写过一本书发布在网上人人都能用英语》。其中的观点就是大多数人之所以在英语这事上很矬是因为他们花无数的时间去 “学”但就是 “不用”学以致用用以促学可就是不用无论如何就是不用那英语学了那么多年能学好吗

自学编程的一个副作用就是你不得不用英语而且还是天天用不停地用

当年我上大学的时候最初英语当然也不好不过因为想读当时还是禁书的动物庄园》(Animal Farm),就只好看原版当时好不容易搞到的是本英法对照版)…… 然后英语阅读就基本过关了

这原理大抵上是这样刚开始英语就好像一层毛玻璃隔在你和你很想要了解的内容之间然而由于你对那内容的兴趣和需求是如此强烈乃至于即便隔着毛玻璃你也会挣扎着去看清楚…… 挣扎久了其实没两天就不一样),你的视力就进化了毛玻璃还在那里但你好像可以穿透它看清一切……

自学编程也算是一举两得了

当然把编程作为讲解如何习得自学能力的例子”,实在是太好了的最重要原因在于自学编程对任何人来说都绝对是

  • 现实的(Practical)
  • 可行动的(Actionable)
  • 并且还是真正是可达成的(Achievable)

最重要的就是最后这个可达成的”。虽然对读者和作者来说一个做到没那么容易另一个讲清楚也非常难但是既然是所有人都可达成的”,总得试试吧但是请相信我这事比减肥容易多了 —— 毕竟你不是在跟基因作斗争

这只是个起点

尽量只靠阅读学会编程哪怕仅仅是入门这个经历和经验都是极为宝贵的

自学是门手艺只不过它并不像卖油翁的手艺那样很容易被别人看到也不是很容易拿它出来炫耀 —— 因为别人看不到么然而经年累月就不一样了那好处管他别人知不知道自己却清楚得很

你身边总有些人能把别人做不好的事做得极好你一定很羡慕可他们为什么能做到那样呢很简单啊他们的自学能力强所以他们能学会大多数自学能力差的人终生学不到的东西而且他们的自学能力会越来越强每学会一样新东西他们就积累了更多自学经验难以对外言表的经验再遇到什么新东西相对没那么吃力

另外自学者最大的感受就是万物相通他们经常说的话有这么一句:“…… 到最后,都是一样的呢。”

最后一个好处一句话就能说清楚并且随着时间的推移你对此的感触会越来越深

在这个领域里自学的人最多……

没有什么比这句话更令人舒心的了相信我,你并不孤独