# 引言
> 原文:[Introduction](https://learncodethehardway.org/more-python-book/intro.html)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
流程,創造力和質量。在閱讀本書的同時,將這三個詞寫入你的腦海中。流程、創造力、質量。這本書可能充滿了重要主題的練習,每個程序員都應該知道它們,但是從書中獲得的真實知識就是這三個詞。我寫這本編程書的目的是告訴你,我所知道的是,軟件中最重要的三個常量。沒有流程,你會迷失在想知道如何開始,并有維持長期項目的進展的問題。沒有創造力,你將無法作為程序員解決每天遇到的問題。沒有質量,你不知道你所做的任何事情是否良好。
教你這三個概念很簡單。我可以簡單地寫三篇博客文章,并說:“你去看看,然后你就知道這三個字是什么意思。” 這不會讓你成為一個更好的程序員,絕對不是一個可以在未來 10 到 20 年內自食其力的開發者。僅僅知道大概的流程并不意味著,你可以在現實實踐中實際應用它。閱讀關于創造力博客文章,并不能幫助你弄清如何寫出有創造力的代碼。要真正理解這些復雜的主題,你將需要將其內在化,最佳方式是將其應用于簡單的項目。
當你通過書中的練習,我會告訴你,你將要處理的三個中的哪一個。這是我相對其他書籍的一個改變,其中我試圖暗中讓你在無意中學習概念。這次我會明確表達,因為很重要的一點就是,把這個概念牢牢地保存在你的頭腦中,這樣你就可以在練習過程中實踐了。然后,你將評估你對應用這個實踐的嘗試效果如何,以及下一次可以做些什么來改進。本書的一個重要組成部分是,能夠客觀地反思自己的能力,以及改進自己的能力。在完成一些其他目標的同時,通過專注于一種技術或實踐來做到它。
除了流程,創造力和質量外,你還將學習五個重要主題,我認為現代程序員需要掌握它們。這些可能會在未來發生變化,但是它們在過去近十年間是至關重要的,因此除非技術發生了巨大的變化,否則它們仍將適用。即使是一些東西,像第六部分中的 SQL,也仍然是相關的,因為它教你如何構建數據,以便在后面不會在邏輯上崩潰。你的次要教育目標是:
+ 入門 - 你可以通過執行快速的 Hack 來了解如何啟動項目。
+ 數據結構 - 我不教給你每一個單一的數據結構,但是讓我們開始更完整地學習它們。
+ 算法 - 不能處理的數據結構相當無意義。
+ 解析文本 - 計算機科學的基礎是解析,知道如何實現它,可以幫助你學習編程語言,當他們變得流行的時候。
+ 數據建模 - 我將使用 SQL 來教會你,以邏輯方式為存儲數據建模的基礎知識。
+ Unix工具 - 命令行工具在本書中用作要復制的項目,然后你還可以學習 Unix 命令行高級工具。
在這本書的每個部分,你將一次性專注于三個實踐中的一個或兩個,直到最后,在第七部分中,你將構建一個簡單的網站來應用它們。大作業并不吸引人。你不會學習如何創建下一個創業公司,但他們是很好的小項目,將幫助你在學習 Django 時應用你所熟悉的知識。
## 完全是個人的事情
許多其他的書被設計為,在團隊背景下教你這三個概念。當這些書向你講述流程時,全部都是如何在項目中與另一個人合作來維護代碼。當他們教授創造力時,全部都是如何和你的團隊開會來向客戶詢問問題。可悲的是,這些“專業”書籍絕大部分都沒有教授質量。這一切都很好,但是對于大多數初學者來說,這些團隊風格的書籍有兩個問題:
+ 你沒有團隊,所以你不能練習它們教給你的東西。面向團隊的書籍專為那些初級程序員而設計,它們已經有工作,并需要在剛加入的團隊工作。在這種情況發生之前,任何團隊導向的書籍對你來說都是無用的。
+ 如果你自己的個人過程,創造力和質量是一團糟,學習如何在團隊中工作有何意義?盡管“團隊精神”的粉絲們說,絕大多數的編程任務都是獨立完成的,你對自己的技能的評估通常是獨立完成的。如果你在一個團隊工作,但是你的代碼始終是低質量的,并且你不斷向團隊成員尋求幫助,那么你的老板會給你較低評價。由于它們始終討論團隊有多厲害,當一個初級程序員無法單獨工作時,他們從來不會責怪團隊。他們責怪初級程序員。
這本書并不會幫助你成為一個在大企業混日子的優秀程序員。這本書幫助你提高你的個人技能,使你得到一份工作時可以獨自工作。如果你改善你的個人流程,那么你會成為一個更強大的團隊貢獻者。這也意味著你可以啟動和發展自己的想法,這是絕大多數項目開始的地方。
- 笨辦法學 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