对于入门 Python 来说, 很多初学者通过一些编程书籍或市面上的各种入门课程视频, 对于 Python 的语法与结构有所了解, 也开始尝试做一些小的程序, 但在进一步尝试的路上却陷入了近似深渊一样的体验——
当自己去
参照其它的
开发者的
程序
时, 完全不知如何下手,
或者明明知道这一段代码
是用于何种用途的,
却迟迟无法
运用得当....
进而开始怀疑自己, 我到底会不会用 Python,
到底有没有学会 Python
?
困难总是存在的, 这
就像那些编程学习之路上, 你所踩过的, 将踩的以及默默在等候着你的坑一样, 无法逃避.
在往期的课程每周例会上, 有学习 Python 入门的蟒营同学提出一个问题:
当我知道我要实现什么功能, 然后我去 Google 搜索, 可以找到相关语句支撑。
但对于语句本身是怎么运作的, 我了解得很少。
所以, 当满足复杂功能的一整段语句(其中涉及到结构和单个语句)出现时, 我基本上看不明白。
这个问题, 在编程初学者中极具典型性, 小白学会了搜索大法, 但面对搜索到的信息仍
无法理解和入门
, 怎么破? 就如同婴儿面对大餐却无法自己动手吃一般.
对小白来说, 要
如何阅读别人的代码,
如何理解进而自己写好代码
?
那蟒营怎么「看」这个问题呢?
首先, 是关于阅读别人的代码这一点——
这种感觉在
进入任何一个陌生领域知识时, 其实都是相似的
:
好比开始学习英文时:
刚刚知道字母以及如何查字典,
掌握的单词还没超过 42 个时,
看英文名著当然是根本看不下的。
几乎每一句什么意思, 都要查字典..
那么, 我们如何跨过这一阶段的? 以往的学习经历告诉我们:
是的,
非常非常
笨
以及
老土
的方法.
对于编程来说, 也一样.
具体到 Python 这门语言的学习,Python 对国人有着非常友好的一面:
-
Python 是已知语言中最接近自然英文的开发语言之一
-
如果将变量名设计好, 脚本几乎能视为一篇比较怪的作文来看
-
回溯到源头, Python 原型 ABC 语言的设计目标就是儿童教育...
总而言之,
阅读代码本身就是编程的一个重要环节
.
在阅读他人代码的过程中, 吸收软件设计/工程管理/行业惯用/命名学/... 的知识.
当然, 在代码的选取方面, 我们应当优先去阅读的, 是优秀 Python 作品的代码.
有同学可能会问, 什么样的代码才称得上「
优秀
」呢?
粗暴的说, GitHub 中 star 超过 1000 的一般可以算是.
又其实, 当前蟒营 Py 班同学间互访问代码分支, 也是一种锻炼阅读代码的能力.
因为, 同学们完成的代码都是为实现相同功能:
-
只是各自用了自己掌握知识点的组
-
可以说就是回字的 4 种写法
这对你来说, 可能就不是看细节, 而是多看整体: 大家如何组织代码的? 如何切分函式的? 如何设计变量名的?...
所谓「
三人行必有我师
」, 从阅读同学的代码中, 了解到相同功能的不同实现方式, 也会无意识的思索哪种方式好在哪里, 不足在哪里, 我选择用哪种, 各种决断能力「嗯哼」.
我们回过头来, 再来审视一下本文开头那个问题所提到的难点:
所以, 当满足复杂功能的一整段语句出现时, 我基本上看不明白。
这里其实隐含着一点, 这段满足复杂功能的语句, 也有可能并不是友好易懂的「优秀代码」, 或者其实是非常好的代码, 但回答者并没有通俗易懂的呈现出来, 看不明白不一定是小白的锅. 但小白确实是看不出来这整段语句是否是好代码.
到底什么是好代码? 如何写出别人也容易看懂的好代码? 在此, 需要明确的是:
代码第一读者是人, 而不是机器.
简洁直白的代码才是好代码.
但是, 「直白」的定义, 是随着学习在变化的, 就好比说英文学习历程中:
开始时, 只有 this is, that is, 这种 4 个单词以内固定句式的对自己算直白.
但随着经验/语感的积累, 感觉直白的句子,其实在逐渐变得复杂起来..
所以, 当前这种「看不明白」状态是自然的, 必然的, 不可以忽略的...
那, 问题又来了, 自己作为一个初学者 , 如何快速冲破这种拘束状态?
蟒营 Python 课程
, 在学员学习时可以提供的切实辅助就是:
在这个坚持学习编程的过程中, 任何自己无法理解的知识点/形式/模块/概念/...., 都可以及时来问,
以 Issue 的正式形式
来驱动问题的解决.
此处, 重要的事情再重复三遍:
-
以 Issue 的正式形式
-
以 Issue 的正式形式
-
以 Issue 的正式形式
... 是的, 正如
Eric Steven Raymond
在《
提问的智慧
》 中给出的经验.
但是切记, 前提是:
认真的力量是很惊人的,
试过就知道.
除此之外, 无它.
一个十分开放的课程, 开放到它只给你一个框架, 内容完全由自己来填写, 任何形式任何方法都可以得到包容, 也没有人说「哎呀这个应该这样做」, 他完全靠自己实际操作来触发一系列隐藏任务, 而大妈则是「和蔼」的站在背后不时的看看你, 指引你, 帮助你把这个发现的问题狠狠的踩下去, 推动你去弄个明白. 这就是蟒营.