关于学习的捷径 - 困难之路
原文:https://learnpythonthehardway.org/book/intro.html
By Zed A. Shaw
泛泛的话:
Zed 是 《Learn Python the Hard Way》 的作者,这是他为这本书写的一个说明。
不过里面涉及的关于如何学习编程(甚至任何技能)的建议非常的棒:
- (自律) 持之以恒、亲力亲为的练习
- 关注细节和差异
- 可以跳过不懂的部分,以后再看
通过这本书的帮助,你将学习到所有程序员学习编程语言时都会做的极其简单的事情:
- 按照每个练习逐一进行。
- 精确地输入每个示例。
- 让它运行起来。
就是这样。一开始会非常困难,但请坚持下去。如果你按照这本书的指导,每晚花上一两个小时完成每个练习,你将为进一步学习Python的其他书籍打下良好的基础。这本书不会立刻让你成为程序员,但它将帮助你开始学习如何编写代码的道路。
这本书的任务是教会你作为初学者程序员必须掌握的三个最基本的技能:阅读和写作、注重细节和发现差异。
阅读和写作
如果你在输入时遇到问题,学习编程将会很困难,特别是如果你在源代码中输入相对奇怪的字符时。如果没有这个简单的技能,你将无法学会关于软件工作原理的基本知识。
输入代码示例并使其运行将有助于你学习符号的名称,熟悉它们的输入方式,并使你能够阅读这门语言。
注重细节
区分好程序员和优秀程序员的关键技能是注重细节。实际上,在任何行业中,这也是优秀与平庸之间的分界线。你必须关注你工作的最小细节,否则你将错过你所创建的内容的重要部分。在编程中,这就是为什么会出现错误和难以使用的系统的原因。
通过完成这本书中的每个示例,精确复制每一个,你将训练你的大脑专注于你正在做的事情的细节。
发现差异
一个非常重要的技能(大多数程序员随着时间的推移都会培养出来)是能够在事物之间视觉上注意到差异。经验丰富的程序员可以立即开始指出两段略有不同的代码之间的差异。程序员已经发明了工具来更容易做到这一点,但我们不会使用其中的任何一个。你首先必须通过困难的方式培训你的大脑,然后再使用工具。
当你做这些练习时,每个都输入一遍,你将会犯错误。这是不可避免的;即使是经验丰富的程序员也会犯一些错误。你的任务是比较你所写的与所需的内容,并修复所有的差异。通过这样做,你将训练自己注意到错误、漏洞和其他问题。
不要复制粘贴
你必须手动输入每一个练习。如果你复制粘贴,你可能还不如不做。这些练习的目的是训练你的手、大脑和思维如何阅读、写作和理解代码。如果你复制粘贴,你就是在欺骗自己,削弱了课程的效果。
关于练习和坚持的说明
当你学习编程的时候,我正在学习弹吉他。我每天至少练习两个小时。我练习音阶、和弦和琶音一个小时,然后学习音乐理论、音乐听力、歌曲等等。有些日子,我会花费八个小时来学习吉他和音乐,因为我觉得有趣。对我来说,重复的练习是自然的,也是学习任何东西的方法。我知道要想做到出色,你必须每天练习,即使那一天表现不佳(这经常发生)或者很困难。继续尝试,最终会变得更容易和有趣。
在我写完《学Python的困难之路》和《学Ruby的困难之路》之间,我发现了绘画和绘画。我在39岁时爱上了创作视觉艺术,自那以后,我每天都在学习它,方法与我学吉他、音乐和编程的方式非常相似。我收集了大量的教材,按照书本的指导去练习,每天都画画,并专注于享受学习的过程。我绝对不是一个“艺术家”,甚至不算很好,但我现在可以说我会画画。我在这本书中教给你的方法也适用于我在艺术领域的冒险。如果你将问题分解成小练习和课程,每天都坚持做,你几乎可以学会做任何事情。如果你专注于慢慢提高并享受学习的过程,那么无论你在做什么,都会受益匪浅。
当你学习这本书并继续学习编程时,请记住,任何值得做的事情一开始都会很困难。也许你是那种害怕失败的人,所以一遇到困难就放弃。也许你从未学会自律,所以不能做任何“无聊”的事情。也许有人告诉过你“天赋出众”,所以你从不尝试可能让你看起来愚蠢或不是神童的事情。也许你具有竞争意识,不公平地把自己与我这样已经编程超过20年的人相比较。
无论你想要放弃的原因是什么,都请坚持下去。强迫自己。如果你遇到一个你做不到的学习练习,或者一个你完全不理解的课程,那么跳过它,稍后再回来。只要坚持不懈,因为在编程中会发生一件非常奇怪的事情。一开始,你什么都不会懂。这会很奇怪,就像学习任何人类语言一样。你会 struggle with words,不知道哪个符号代表什么,一切都会变得非常混乱。然后有一天,你的大脑会突然“豁然开朗”。如果你继续做这些练习,继续尝试理解它们,你会get it的。也许你不会成为一名高级编程专家,但至少你会理解编程是如何工作的。
如果你放弃了,你永远不会达到这一点。你会遇到第一个困扰的事情(起初一切都是困扰的),然后停下来。如果你继续尝试,继续输入代码,尝试理解它并阅读相关信息,你最终会get it的。如果你读完整本书,仍然不明白如何编程,至少你尝试过。你可以说你尽力而为,甚至多尝试了一些,但没有成功,但至少你尝试过。你可以为此感到自豪。
智慧之士的警告
有时候,已经了解一门编程语言的人会阅读这本书,感觉我在侮辱他们。这本书中没有任何意图被解释为居高临下、侮辱或轻视的内容。我只是比我预期读者更了解编程。如果你认为你比我聪明,那么你会感到被贬低,对此我无能为力,因为你不是我预期的读者。
如果你正在阅读这本书,并因为感到自己的智慧受到侮辱而在每三句话发火,那么我有三点建议:
- 停止阅读我的书。我没有为你而写。我写给那些不知道一切的人。
- 学习之前要先清空。如果你已经什么都懂了,那么很难从更有知识的人那里学到东西。
- 去学Lisp。我听说已经什么都懂的人非常喜欢Lisp。
对于每一个其他来学习的人,就把我说的每句话都当作我面带微笑、眼中闪烁着淘气的小星星。