编辑: star薰衣草 2019-09-15
1.

1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 目录 笨办法学 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 快速路由

2 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.60 1.61 1.62 第四部分:进阶项目 练习 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

3 4 笨办法学 Python ・ 续 中文版 原书:Learn More Python

3 The Hard Way 译者:飞龙 自豪地采用谷歌翻译 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 赞助我 协议 CC BY-NC-SA 4.0 笨办法学 Python ・ 续 中文版

5 引言 原文:Introduction 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 流程,创造力和质量.在阅读本书的同时,将这三个词写入你的脑海中.流程、创造力、质量.这本书可能充满了重要主题的练习,每个程序员都应该知道它们,但是从书中获得的真 实知识就是这三个词.我写这本编程书的目的是告诉你,我所知道的是,软件中最重要的三 个常量.没有流程,你会迷失在想知道如何开始,并有维持长期项目的进展的问题.没有创 造力,你将无法作为程序员解决每天遇到的问题.没有质量,你不知道你所做的任何事情是 否良好. 教你这三个概念很简单.我可以简单地写三篇博客文章,并说: 你去看看,然后你就知道这 三个字是什么意思. 这不会让你成为一个更好的程序员,绝对不是一个可以在未来

10 到

20 年内自食其力的开发者.仅仅知道大概的流程并不意味着,你可以在现实实践中实际应用 它.阅读关于创造力博客文章,并不能帮助你弄清如何写出有创造力的代码.要真正理解这 些复杂的主题,你将需要将其内在化,最佳方式是将其应用于简单的项目. 当你通过书中的练习,我会告诉你,你将要处理的三个中的哪一个.这是我相对其他书籍的 一个改变,其中我试图暗中让你在无意中学习概念.这次我会明确表达,因为很重要的一点 就是,把这个概念牢牢地保存在你的头脑中,这样你就可以在练习过程中实践了.然后,你 将评估你对应用这个实践的尝试效果如何,以及下一次可以做些什么来改进.本书的一个重 要组成部分是,能够客观地反思自己的能力,以及改进自己的能力.在完成一些其他目标的 同时,通过专注于一种技术或实践来做到它. 除了流程,创造力和质量外,你还将学习五个重要主题,我认为现代程序员需要掌握它们. 这些可能会在未来发生变化,但是它们在至今位置近十年间是至关重要的,因此除非技术发 生了巨大的变化,否则它们仍将适用.即使是一些东西,像第六部分中的 SQL,也仍然是相 关的,因为它教你如何构建数据,以便在后面不会在逻辑上崩溃.你的次要教育目标是: 入门 - 你可以通过执行快速的 Hack 来了解如何启动项目. 数据结构 - 我不教给你每一个单一的数据结构,但是让我们开始更完整地学习它们. 算法 - 不能处理的数据结构相当无意义. 解析文本 - 计算机科学的基础是解析,知道如何实现它,可以帮助你学习编程语言,当他 们变得流行的时候. 数据建模 - 我将使用 SQL 来教会你,以逻辑方式为存储数据建模的基础知识. Unix工具 - 命令行工具在本书中用作要复制的项目,然后你还可以学习 Unix 命令行高级 引言

6 工具. 在这本书的每个部分,你将一次性专注于三个实践中的一个或两个,直到最后,在第七部分 中,你将构建一个简单的网站来应用它们.大作业并不吸引人.你不会学习如何创建下一个 创业公司,但他们是很好的小项目,将帮助你在学习 Django 时应用你所熟悉的知识. 完全是个人的事情 许多其他的书被设计为,在团队背景下教你这三个概念.当这些书向你讲述流程时,全部都 是关于,如何在项目中与另一个人合作来维护代码.当他们教授创造力时,全部都是关于, 如何和你的团队开会来向客户询问问题.可悲的是,这些 专业 书籍绝大部分都没有教授质 量.这一切都很好,但是对于大多数初学者来说,这些团队风格的书籍有两个问题: 你没有团队,所以你不能练习它们教给你的东西.面向团队的书籍专为那些初级程序员 而设计,它们已经有工作,并需要在刚加入的团队工作.在这种情况发生之前,任何团 队导向的书籍对你来说都是无用的. 如果你自己的个人过程,创造力和质量是一团糟,学习如何在团队中工作有何意义?尽管 团队精神 的粉丝们说,绝大多数的编程任务都是独立完成的,你对自己的技能的评估 通常是独立完成的.如果你在一个团队工作,但是你的代码始终是低质量的,并且你不 断向团队成员寻求帮助,那么你的老板会给你较低评价.由于它们始终讨论团队有多厉 害,当一个初级程序员无法单独工作时,他们从来不会责怪团队.他们责怪初级程序 员. 这本书并不关于,成为一个在大企业混日子的优秀程序员.这本书关于帮助你提高你的个人 技能,所以当你得到一份工作时,你可以独自工作.如果你改善你的个人流程,那么你会成 为一个更强大的团队贡献者.这也意味着你可以启动和发展自己的想法,这是绝大多数项目 开始的地方. 引言

7 第一部分:预备知识 原文:Part I: Initial Knowledge 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要学习的第一件事就是一切事情.我知道这是吓人的,但我在介绍中提到,你在整本书 中只会练习三个技巧.当你完成其他任务时,每项练习都会强化每项技能.我可能会告诉 你 制作 cat 命令的副本 ,但你真正学习的是如何具有创造力.我可能会告诉你 创建一个链 表数据结构 ,但是你正在做的是将结构化代码审查流程应用到你的编程实践中.这本书的秘 诀在于,你只是将项目和练习用作一种工具,来学习三个重要的实践:流程,创造力和质 量. 理想情况下,这三个概念并不奇怪.流程只是你用于创建某些内容的步骤.创造力只是你产 生和实现想法的方式.质量只是你确保这些实现不是垃圾的方式.如何将流程应用到你的个 人开发技能中?如何分析是否已经构建了高质量的软件?如何把一个想法变成现实?所有这 三个都是相互关联的,因为你需要一个流程来帮助你获得创造性,然后确保质量,这也需要 创造力,因为任何流程都不会始终有效.这是一个出色的、美丽的循环. 完成这本书的过程就是这样: 对于书的一部分,我将为你提供锻炼流程、创造力或质量的目标.通常它每次就是两个 概念,也可能只是一个.例如,在第二部分中,你通过在

45 分钟的快速会话中创造一些 简单工具,来锻炼创意.你也要分析你的起始流程,因为如果你发现难以开始,你将不 会很有创造力. 每个练习的开始都将为你提供一个提示或目标,以便你在练习中进行思考.每一个这些 提示都要求你专注于你正在开展的工作的一个或多个方面.第二部分中的练习

4 给了你 简单实现一些东西的任务,然后在练习

5 中,你需要开始列出阻碍你的内容,并尝试消 除它们或使其更加高效.其他练习要求你查看你的物理环境,并解决任何分散精力的事 情.每次你会考虑这些提示,然后在练习中尝试专注于那个特定的任务. 每次练习的结尾都有研究性学习,为你提供更多的挑战.他们可能与该项目有关,或者 他们可能更多关于你正在处理的过程,创造力或质量问题. 一些练习是 挑战模式 .这意味着我会给你一个工具的描述来实现,通常基于一个现有的 Unix 工具,然后扔你实现它,但没有任何参照的代码.你可能需要先研究一小段样本代 码,但通常在这些挑战中没有 Python 代码.这些答案可以在 Gitub 上的 Git 项目 http://bit.ly/lmpthwsolve 中在线获得. 其他练习是一些东西的教育性描述,你需要根据我的代码实现它.这些练习将解释一些 的东西,例如算法,然后你将尽可能准确地实现它们,并发现任何错误.通常这些练习 第一部分:预备知识

8 将专注于质量,因为会要求你编写自动测试,跟踪错误率,并在 研究性学习 中找到其他 问题的解决方案. 最后,你将使用实验日志来做笔记,并跟踪你可以用于改善工作方式的指标.我非常明 确地将此视为一本日志,它的意思是你的改进的个人账户,你不应该与任何人分享,特 别是你公司的经理.这种信息可以用来将你看做工人并压榨你,所以要小心谨慎保管 好. 在阅读本书时,你的目标不仅仅是实现几个 Unix 工具的副本.你的目标是使用这些小型 Unix 工具项目,来专注于你处理大型项目的能力. 如果我讨厌你的愚蠢的个人流程,会怎么样? 完全没事.这本书是帮助你成长和改进的东西,所以如果你还没有准备好分析你的工作方 式,那么请稍等一下.你可以简单地用自己的方式和自己的时间完成所有的挑战,然后回来 并使用你的流程中的约束尝试实现项目.每个练习都代表它自己,个人发展部分几乎适用于 你所做的任何事情.做你能做的事情,当你需要处理你的工作方式的时候再回来. 如果我发现自己很糟糕,会怎么样? 这是一个非常实际的可能性,但是我的方法可以帮助你了解为什么你是糟糕的,为了解决这 个问题需要做些什么.然后这只是一个需要处理的事情,直到你开始变得更好.将你的日记 看管好,没有人会知道你是多么糟糕.然后,当你完成时,你就知道,你到底在什么位置, 以及你需要做些什么.不要再怀疑你是一个骗子,或者你不能胜任这个任务.你会客观地认 识你的优点和缺点,所以你可以不必担心你在这个世界上的位置. 但是,你可能不像你想象的那样糟糕.这本书的目标是成为一个个人课程,来改善你对你的 技能的客观评价.这意味着你应该关注的,不是你在某种程度上有多好,而是要改善多少. 如果你发现自己对某个特定练习的表现感到沮丧,那么你需要将其拆解,找出可以改进的东 西.你还需要站在其他人的角度上看待这个练习,并客观评估你的改进.专注于改进可以帮 助你客观地(不是积极或消极地)思考,并继续学习. 第一部分:预备知识

9 练习 0:起步 原文:Exercise 0: The Setup 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要设置和配置一些工具来学习此书.有可能你已经有了很多这些东西,但让我们确认一 下. 程序员的编辑器 你需要一个程序员的文本编辑器,而不是 IDE.Vim,Emacs 和 Atom 都是程序员的文本编辑 器.他们不是简单的文本编辑器,不仅仅能处理文本,而且为你管理整个项目而设计,并能 够一次处理大量的程序文件.它们还具有 IDE 中的常见功能,如运行构建命令,脚本,以及 其它,但有一个主要区别.IDE 通常与单一语言相关联,因为它对源进行高级的检测,并为 你提供编写代码的快捷方式.然后,你不必记住任何事情,只需大多数任何项目 中, ctrl-space 你的方式.当你拥有

100 个另外的 10x 开发人员,它们编写更多技术债务, 你无法处理的时候,这真是太棒了.当你试图学习时,这是一个糟糕的功能.另一个问题是 你必须等待某人,为你编写任何新语言的 IDE,因此如果 Microsoft 或 JetBrains 不喜欢某种 语言,那么你将被卡住. 你可以使用 IDE 做的一切事情,你也可以使用一个真正的程序员的文本编辑器来做,因为像 Vim,Emacs 和 Atom 这样的编辑器是可脚本化和可修改的,它们永不过时.如果 Haskell ++ 成为下一个热........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题