# 第二部分:简单的黑魔法
> 原文:[Part II: Quick Hacks](https://learncodethehardway.org/more-python-book/part1.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
你有最好的想法,你会打动世界!你会成为一个亿万富豪!你的大脑与这个概念融为一体,你会在你的梦想中看到它,它像幽灵一样困扰着你。下一步就是实现它,将其从大脑中移出并放进计算机。你必须杀死鬼魂,将幽灵从灵魂世界中带出来,将其绑定到一个 Python 图腾上,并将其扔到互联网的海洋中。
对你而言足够有创意嘛?
创造力的敌人就是起步。如果在安装程序的过程中存在障碍,你怎么能实现你的梦想?如果你的想法非常强烈和庞大,让你开始担心呢?你足够好吗?你足够聪明吗?那个著名的程序员,会首先让你写出测试,否则会由于你不知道该怎么做而生气嘛?入门通常是创造力中最困难的事情之一,这本书的这部分旨在让你渡过它。
我是画家,音乐家,作家和程序员,所以我知道一两件关于创意的事情。我更了解入门和流程。当我对处理某个项目不感兴趣的时候,流程是将我拖出项目的泥泞的东西。但是,如果没有首先的起步,我就不能走到这一步。
起步需要勇气,并且对任何人的想法有些不关心。在绘画中,当我不能开始时,我只是随意抓取颜料,并在画布上砸在正确的位置。很多非常成功的画家都是这样工作的。其他画家从头开始研究 - 学习,测试,素描,然后最终将它们全部放到一起来开始。作为一个作家,我所做的第一件事就是在我的房子周围散步,疯狂地和自己说话,想像我正在和某人交谈,然后当我说出足够的说话时,我坐下来写作。我只是写下了出现在我脑子里的第一件事。
我不会坐下来写作,或者担心语法。我不会问,“我很聪明吗?”我只是写出我如何说话,并将其输入键盘,然后当我完成了几个段落,我会看一看。它是否有意义?我需要清理吗?这样的确有效,并让我继续下去。也许我写的是垃圾。但是,我开始了,并且这个很重要。之后,我依靠我的流程把起始点变成一个完整的词。
你如何看待这个创造性的起步?我的朋友,你需要弄清楚,并且这本书会有所帮助。首先我们需要打破你对这个起步的恐惧。也许甚至不再害怕了。也许在你开始编程之前,你需要做大量无意义的事情,这样你才能够溢出所有障碍。
我在第一部分说过,如果你每次去做一件事的时候,你必须清理一小时,并修复一堆工具,你就不会有创造力。
## 如何实践创造力
在这本书的这一部分,你将通过让自己立即开始,快速实践创造力。我会给你简单的超级无聊的小项目。我的意思是,Unix 的`cat`命令只是输出一个文件。老实说就像两行 Python 一样简单。这些项目的起步是重要的,为了起步,你会变得冷酷无情。你要坐在你的电脑旁边,纵身一跃,让事情发生。就是现在,不是30分钟后。
你怎么做到他呢?你需要一个清单,你需要自动化。清单是你必须准备好去做的所有事情。打开你的电脑,关掉社交媒体,启动你的编辑器,摸一摸你的幸运的橡皮小鸭,做一个神圣的祷告,冥想 10 分钟,然后复制你的项目框架并开始。这是一个例子,但你需要一个检查列表,并且越短越好。
但你不知道这个清单是什么。也许你有一个想法,但你在开始工作之前真的知道你所做的一切吗?这就是每个项目中,你将重点关注的东西。在第一个项目中,你会坐下来尝试一下,但你会记下你所做的一切。你不能管理无法测量的东西,这是衡量自己的第一步,来看看你如何做某件事情。如果你有屏幕录制软件会更好。打开它,并记录你自己写出了一个糟糕的软件,然后观看视频。记下你做了什么
为了确保你不要在项目中埋头骨干,而是练习起步,你还将为每个项目设置一个严格的计时器。你必须在45分钟内完成最棒的垃圾。不多不少。开始时设置一个45分钟的定时器,准备好你的本子和铅笔,然后去做吧。当定时器关闭时,你完成了。看看你做了什么,然后好的那部分才会出现。
每个项目后,拿起你的列表,并找出可以做什么来消除障碍。你坐在那里,做许多小文件,并且必须在互联网上查找嘛?制作项目框架吧。你在文本编辑器中输入命令时似乎有问题吗?花时间学习来更好地使用它,或学习盲打。你不知道基本的命令和 API 吗?去获取一些书来学习吧,我的朋友。
然后删掉代码并重新开始。从头开始。使用新的纸张开始写,或开始录制。无论你需要做什么来跟踪你所做的事情。这次你更进一步了嘛?有更少的障碍吗?你的目标是减少想法和实现之间的时间,直到起步只是你做的一件事情,就像吃饭和呼吸那样,最终你会感觉到起步是自然的,之后你可以继续下一个项目。
请记住,你要立即坐下来并编程。尽管去做吧。如果一个内心的声音告诉你,你这样做错了,就告诉那个愚蠢的声音来让它闭嘴。这才是 Hack。保持放松并全力以赴,就像你只是把代码扔给一个朋友,它知道你是傻瓜但仍然很有趣。像测试和质量这样的愚蠢的事情可能会在本书的后面出现,但现在只需要编程,把东西搞乱,实现一些黑魔法。获得想法比赢得虚构的质量比赛更重要。
在每个仓促的 45 分钟 Hack 之后,你坐下来查看你是怎么做的。这个“创造然后批改”的流程,将来可以帮助你改善。
## 菜鸟程序员的流程
如果你刚刚开始,并且在启动项目时还是完全失败了,那么我将为你提供一个简化的流程,以便你使用它来开始。这部分的练习是进行 45 分钟的 Hack(编程 ),但作为一个菜鸟程序员,你可能需要更多的时间,或者你可能不知道从哪里开始。在这种情况下,请随意使用 60 分钟或使用两个 4 5分钟的时间进行每项练习。
对于一个流程,菜鸟程序员应该在每个会话之前执行以下操作(在启动计时器之前):
+ 准备好你的电脑,并确保你准备好了。
+ 阅读任务描述并记下笔记。这是你的研究阶段,你需要以书面形式收集尽可能多的信息。
+ 进行研究,并将其转化为 TODO 列表,了解你需要做什么来实现这个黑魔法。写下你可以想到的任务。你需要创建什么文件?什么目录?什么功能?你会使用哪些库?
一旦你有了 TODO 列表,你就可以启动定时器了。在你的 Hack 会话中,你将执行以下操作:
+ 选择你的 TODO 上第一个最简单的任务,并完成它。你需要一个文件吗?创建它!你需要一个目录吗?创建他!
+ 检查你刚刚做的工作。
+ 删除当前任务,执行下一个任务。
我认真对待这个流程。它是我使用的一个较小的版本,但它可以用。几乎每个流程都只是“制作一个清单,完成它,检查它”。如果它适用于我,它将适用于你,所以如果你不知道该怎么做,你应该使用它。
## 菜鸟程序员的编程流程
此过程也将适用于你编写的代码。我在第一本书“笨办法学 Python”中介绍了它。当你不确定如何写一段代码时,遵循这个流程:
+ 用简单的中文写出,你的代码应该做什么。如果你需要把它写成一个段落,那么就这样做。如果你可以把它写成一个任务列表,那就更好了。如果你写出了一个段落,那么你将把它转换成代码必须做的事情的列表。
+ 把这个列表变成注释,把`#`放在每行的前面。
+ 从顶部开始,在每个注释下,编写 Python 代码使其有效。如果注释太抽象,那么将其分解成较小的注释并重复此步骤。
+ 运行代码,来确保你刚才写的内容没有语法错误,并且基本能工作。
这就是你需要做的所有事情。如果你可以用你的中文(或任何自然语言)来表达你想要的代码,那么你可以轻松地实现代码,而不必考虑代码。最终你不需要先写注释再写代码,但是当我卡住的时候我还是这样做的。
- 笨办法学 Python · 续 中文版
- 引言
- 第一部分:预备知识
- 练习 0:起步
- 练习 1:流程
- 练习 2:创造力
- 练习 3:质量
- 第二部分:简单的黑魔法
- 练习 4:处理命令行参数
- 练习 5:cat
- 练习 6:find
- 练习 7:grep
- 练习 8:cut
- 练习 9:sed
- 练习 10:sort
- 练习 11:uniq
- 练习 12:复习
- 第三部分:数据结构
- 练习 13:单链表
- 练习 14:双链表
- 练习 15:栈和队列
- 练习 16:冒泡、快速和归并排序
- 练习 17:字典
- 练习 18:性能测量
- 练习 19:改善性能
- 练习 20:二叉搜索树
- 练习 21:二分搜索
- 练习 22:后缀数组
- 练习 23:三叉搜索树
- 练习 24:URL 快速路由
- 第四部分:进阶项目
- 练习 25:xargs
- 练习 26:hexdump
- 练习 27:tr
- 练习 28:sh
- 练习 29:diff和patch
- 第五部分:文本解析
- 练习 30:有限状态机
- 练习 31:正则表达式
- 练习 32:扫描器
- 练习 33:解析器
- 练习 34:分析器
- 练习 35:解释器
- 练习 36:简单的计算器
- 练习 37:小型 BASIC
- 第六部分:SQL 和对象关系映射
- 练习 38:SQL 简介
- 练习 39:SQL 创建
- 练习 40:SQL 读取
- 练习 41:SQL 更新
- 练习 42:SQL 删除
- 练习 43:SQL 管理
- 练习 44:使用 Python 的数据库 API
- 练习 45:创建 ORM
- 第七部分:大作业
- 练习 46:blog
- 练习 47:bc
- 练习 48:ed
- 练习 49:sed
- 练习 50:vi
- 练习 51:lessweb
- 练习 52:moreweb