课程设计的思路

课程的几个部分

第一部分是以一个博弈论作为开篇,我们不求甚解地去读简单的代码,掌握基础的代码技术也可以增加对世界的理解。
第二部分是一些基础知识的介绍,包括工具与使用方法、DNS 与 Python 基础知识;内容量来看,这部分占了整体的绝大部分,但无需写一行代码。
第三部分开始上手写代码,直接完成一个 DNS 服务器,这个过程需要反复、零散地跳回第二部分,从而真正地掌握 Python 的基础语法。
为了夯实 Python 的入门,有了最后一部分《技》,都是一些实际的例子、思路、代码。

设计思路

一般的 Python 入门课程,大抵有两种设计思路:

  1. 相当于完整的说明书:而我们实际使用 Python 不过取其五六,入门则取其二三足以。
  2. 根据很多个分场景进行学习:授人以渔还是授人以鱼?有些鱼还未必有用,而相当于万能公式,一通百通,一个场景顺了,其它场景就活了。

上面这两种思路,都有可取的地方,但如果我自己再从头重新学习 Python 的话,两者都不适合于。而这样的 『我』并不是一个人,我们需要新的课程设计思路。
本课程,从内容划分,应该也能粗窥基本的设计思路。我们在这个课程中,并不是单纯地 Learn Python,而是 Learn How to Learn Python

其实,还有另外一种教学思路,就是把门槛降低。这是很好的想法,表现形式可能是视频课程、交互式的递进引导。
我们的课程不会如此处理,绝然不会有视频的课程。在 《FirstWeb Pro》 中,或许你已经接触了 复杂度守恒 的想法,如果在自学的领域,可能也有类似的 难度守恒 。如果把 入门 当做一个完整的产品,那么在 1% 的进度时做到 低门槛 是非常棒的,但是,如果到 100% 的进度了,仍然维持着低门槛的状态,那就糟糕了。

终归,理解技能习得技能,还是有区别的。
整个课程的内容浏览过一遍,那对于 Python 的基本概念是会建立的,但要真正上手仍然需要写代码、写代码。具体上手且熟练到什么程度,可以自己决定;到达终点的地图都在这里,想一往无前还是走走停停,都没有关系,起码不会迷路了。
之所以强调不会有视频课程,并非否定它存在的价值。如果要实现的 大体理解,视频的效率远高于文本,它的接收相对被动阅读主动性更高,自然会枯燥很多。而对于『技能的掌握』而言,视频形式则是低效太低了。

课程中出现的代码

课程中出现的 Python 源代码,有两种表现形式:
纯 Python:

print('hello world')

自带运行结果:

>>> print('hello world')  # 我是代码
hello world # 我是信息输出
>>> 

自带运行结果的代码中:以 >>> 开头的,表示代码,不以 >>> 开头的,则表示运行过程中的信息输出。这个时候,也不要直接复制代码去执行,由于 Python 交互环境对缩进的一些特殊要求,自带结果的代码未必能全部运行,大概率会在『缩进 (indent)』 上出现问题。

另外,如果没有 LearnPython.app 的 License,完整的源代码需要自己从课程文档中提取,那么有些 module 的 import,自己整合代码的时候需要特别注意,比如出现 requests.get 那说明应该有 import requests,同理,如果出现 codecs.escape_decode 那说明需要 import codecs