NC3:看不懂 Python 代码陷入自我怀疑?有人却学得不亦乐乎?¶
一次彻底的心智训练
对于入门 Python 来说, 很多初学者通过一些编程书籍或市面上的各种入门课程视频, 对于 Python 的语法与结构有所了解, 也开始尝试做一些小的程序, 但在进一步尝试的路上却陷入了近似深渊一样的体验
------当自己去参照其它的开发者的程序时, 完全不知如何下手, 或者明明知道这一段代码是用于何种用途的, 却迟迟无法运用得当....
进而开始怀疑自己, 我到底会不会用 Python, 到底有没有学会 Python?
困难总是存在的, 这就像那些编程学习之路上, 你所踩过的, 将踩的以及默默在等候着你的坑一样, 无法逃避.
在往期的课程每周例会上, 有学习 Python 入门的蟒营同学提出一个问题:
当我知道我要实现什么功能, 然后我去 Google 搜索, 可以找到相关语句支撑. 但对于语句本身是怎么运作的, 我了解得很少. 所以, 当满足复杂功能的一整段语句(其中涉及到结构和单个语句)出现时, 我基本上看不明白.
冲突¶
这个问题, 在编程初学者中极具典型性, 小白学会了搜索大法, 但面对搜索到的信息仍无法理解和入门
, 怎么破? 就如同婴儿面对大餐却无法自己动手吃一般.
对小白来说, 要如何阅读别人的代码, 如何理解进而自己写好代码?
点解?¶
那蟒营怎么'看'这个问题呢?
首先, 是关于阅读别人的代码这一点--- 这种感觉在进入任何一个陌生领域知识时, 其实都是相似的: 好比开始学习英文时:
刚刚知道字母以及如何查字典,
掌握的单词还没超过 42 个时,
看英文名著当然是根本看不下的.
几乎每一句什么意思, 都要查字典..
那么, 我们如何跨过这一阶段的? 以往的学习经历告诉我们:
多查字典
多看文章
多写文章
多背名句
...
是的, 非常非常笨以及老土的方法.
对于编程来说, 也一样.
读代码¶
具体到 Python 这门语言的学习,Python 对国人有着非常友好的一面:
- Python 是已知语言中最接近自然英文的开发语言之一
- 如果将变量名设计好, 脚本几乎能视为一篇比较怪的作文来看
- 回溯到源头, Python 原型 ABC 语言的设计目标就是儿童教育...
总而言之, 阅读代码本身就是编程的一个重要环节
.
在阅读他人代码的过程中, 吸收软件设计/工程管理/行业惯用/命名学/... 的知识.
当然, 在代码的选取方面, 我们应当优先去阅读的, 是优秀 Python 作品
的代码.
好代码如何好¶
有同学可能会问, 什么样的代码才称得上'优秀'呢?
粗暴的说, GitHub 中 star 超过 1000 的一般可以算是. 又其实, 当前蟒营 Py 班同学间互访问代码分支, 也是一种锻炼阅读代码的能力.
因为, 同学们完成的代码都是为实现相同功能:
- 只是各自用了自己掌握知识点的组
- 可以说就是回字的 4 种写法
这对你来说, 可能就不是看细节, 而是多看整体: 大家如何组织代码的? 如何切分函式的? 如何设计变量名的?...
所谓'三人行必有我师', 从阅读同学的代码中, 了解到相同功能的不同实现方式, 也会无意识的思索哪种方式好在哪里, 不足在哪里, 我选择用哪种, 各种决断能力'嗯哼'.
好代码如何写¶
我们回过头来, 再来审视一下本文开头那个问题所提到的难点:
所以,
当满足复杂功能的一整段语句出现时,
我基本上看不明白.
这里其实隐含着一点, 这段满足复杂功能的语句, 也有可能并不是友好易懂的'优秀代码', 或者其实是非常好的代码, 但回答者并没有通俗易懂的呈现出来, 看不明白不一定是小白的锅. 但小白确实是看不出来这整段语句是否是好代码. 到底什么是好代码? 如何写出别人也容易看懂的好代码? 在此, 需要明确的是:
代码第一读者是人, 而不是机器.
简洁直白的代码才是好代码.
但是, '直白'的定义, 是随着学习在变化的, 就好比说英文学习历程中:
- 开始时, 只有 this is, that is, 这种 4 个单词以内固定句式的对自己算直白.
- 但随着经验/语感的积累, 感觉直白的句子,其实在逐渐变得复杂起来..
- 所以, 当前这种'看不明白'状态是自然的, 必然的, 不可以忽略的...
- 那, 问题又来了, 自己作为一个初学者 , 如何快速冲破这种拘束状态?
作为一个初学者 , 如何快速冲破这种拘束状态?
- 坚持...每天尝试写/运行/理解找来的代码
- 坚持...每天尝试写/运行/理解找来的代码
- 坚持...每天尝试写/运行/理解找来的代码
- ...直到你习惯 Python 的形式
蟒营如何教?¶
蟒营™Python入门班课程
, 在学员学习时可以提供的切实辅助就是:
在这个坚持学习编程的过程中, 任何自己无法理解的知识点/形式/模块/概念/...., 都可以及时来问, 以 Issue 的正式形式
来驱动问题的解决.
此处, 重要的事情再重复三遍:
以 Issue 的正式形式
以 Issue 的正式形式
以 Issue 的正式形式
... 是的, 正如 Eric Steven Raymond 在"提问的智慧" 中给出的经验.
但是切记, 前提是:
"
只有你认真, 大家才可能认真.
"
认真的力量是很惊人的, 试过就知道.
除此之外, 无它.
什么是蟒营?¶
所以, 什么是蟒营呢?
正如隔壁队长说的:
一个十分开放的课程, 开放到它只给你一个框架, 内容完全由自己来填写, 任何形式任何方法都可以得到包容, 也没有人说'哎呀这个应该这样做', 他完全靠自己实际操作来触发一系列隐藏任务, 而大妈则是'和蔼'的站在背后不时的看看你, 指引你, 帮助你把这个发现的问题狠狠的踩下去, 推动你去弄个明白. 这就是蟒营.
综合来说, 蟒营可以激发学员获得各种价值 ---
- 在职非 Python 程序员 <- 实用工程经验, 包含团队管理体验
- 在校大二/三学生 <- 完备软件经历,
无论是否专业相关, 都能独立用 Python 完成实用脚本开发
- 真小白无基础人士 <- 切实编程自信, 真正理解什么是编程, 并熟悉 Python 技术生态,能基于工程思维来解析具体问题..
- 以及所有学员能获得的:
- 高效问题讨论习惯
- 实践自学社区协作
而这一切的技能与成果, 都在 6 周里即可达成.
PPS: 14 岁~72 岁都能学, 嘦:
0: 想学编程
1: 有个人电脑
2: 每周能挤出10+小时自主学习时间
3: 英文能查字典看懂
自怼圈/年度番新
关于 ~ DebugUself with DAMA ;-)
点击注册~> 获得 100$ 体验券:
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼:
蟒营®编程思维提高班Python版
**2021.01.11** 因大妈再次创业暂停定期开设, 转换为预约触发:- + 扫描预约入群, 学员每满 42 人即启动新一期训练营 ;-)
-
+ 任何问题, 随时邮件提问可也:
askdama@googlegroups.com