# 学编程，从开始到放弃

这已经不知道是我第几次开始学编程了。

「我要好好学编程」这话仅次于「我要好好学英语」。而巧合的是，每次我要开始学编程，几乎每一个教程的开篇通常都是`print('hello world')`，像极了单词书的第一个词：「**Abandon**」，我这才刚开始，就告诉我 **放弃**。

# 深感编程的好

## 编程思维的训练

编程思维是什么？又是一个「1000个哈姆雷特式」的问题。

有条理，讲逻辑地思考并解决问题，算不算？算！

主动思考重复的工作是否可以更加高效，算不算？算！

抽象和分解复杂的大问题，算不算？算！

……（好处太多，欢迎补充）

编程之于大脑，就好比公园大爷的太极拳，大妈的广场舞，强身健体，延年益寿。

## 编程技术的高效

关于编程技术的高效，作为新人我有两个印象很有冲击。

第一个冲击是：

> 有时候我们写了一段代码，跑了半天，没有结果，我开始以为是程序太慢，其实是你没有看到它有多快。

举个例子，写一个加法的循环。

```python
n = 0
while True:
    result = n + 1
    n = n + 1
print(result)
```

上面这个我们一直看不到结果，以为程序太慢了，而其实当你把它每一步都正确的打印出来的时候：

```python
n = 0
while True:
    result = n + 1
    n = n + 1
    print(result)
```

第二个冲击是：

程序的执行比人更加可靠，一个重复的事情，如果程序执行第一次没有错，那么它可以不知疲倦地执行下去，停电除外，例子就是上面这个数数的，我们试着再加一个字符串，形成我们经典的睡眠心法——「数绵羊」。

```python
n = 0
while True:
    result = n + 1
    n = n + 1
    print(result,'只绵羊')
```
程序它不会数睡着的，也不会数错。

# 为什么学 Python？

编程语言那么多，为什么选择 Python？甚至没有选择世界上最好的语言 PHP，而是学了 Python？因为……

故事要回到 2012 年那个普通的一天，下班后从东到西，横穿整个北京，我和大兵、周磊三个人坐在学校对面的烧烤店「西域美食」的门口，喝着酒，吃着串，吹了一个牛逼：我们要做「数据分析+教育」。夕阳照在他俩的发际线上，仿佛预示着这事儿会挺掉头发。我们拿起酒瓶子，碰了一下，「干！」后来无数次一起喝酒，碰杯，我都觉得，只有那次是最好听的。

那年原本是玛雅人预言的世界末日，结果食言了，世界末日既然没来，我们就开始创业做 CDA.cn —— 一个专注于数据分析师人才教育的品牌。

于是我就开始听着 Python 这个词几乎每天萦绕在我耳边，从一开始我连发音都不会，到现在我竟然开始写 Python 的学习经验。什么叫耳濡目染，什么叫潜移默化，什么叫「近朱者赤，近墨者黑」。

## 学编程的捷径

我们老师选择 Python 这门编程语言，本意是因为 Python 用来做数据分析特别方便，所以学 Python。

而反过来，用学数据分析，玩数据的方式来学 Python ，也是学习编程的最好方式。

> 用 Python，玩数据，学编程。

随便拿起任何一门语言，你会发现，几乎都是在用编程语言操作数据：

1. 采集数据（Python 可以用来爬虫）

2. 存储数据（Python 可以直接操作数据库）

3. 整理数据（Python 有 pandas 这个工具包）

4. 读取数据（Python 有 pandas 这个工具包）

5. 分析数据（Python 有各种算法、机器学习、深度学习、人工智能……）

6. 展示数据（Python 可以做丰富数据可视化）

你看看，摆在你面前的不就是一条学编程的捷径吗？但是……阿弥陀佛，施主请留步。

# 新人的业障

我想跟你讲讲，新人的业障，为什么

## 贪婪

- 对复杂工具的贪婪

害人不浅的名言——「磨刀不误砍柴工」。我的上一台笔记本被我捣鼓了各种工具，光是 Python 的安装方法我用了三种，装了 5 个不同版本的 Python，我那叫个骄傲啊，等过段时间我再去用的时候，我都不知道怎么启动对应的 Python 了。而现在我这个电脑里面连 IDE 都没装，你是不是觉得，连 IDE 都没装，你不是大神，你不厉害。

不要追求这个，如果现在的工具能够很好的满足你的学习需要，尤其是学习的新人，完全没必要陷入复杂工具的汪洋大海。

- 对大数据的贪婪

总想把数据弄全，比如做量化分析，我不把历史数据弄全，弄准确，我就没办法开始量化分析，其实不是的，你得先有一部分数据先玩起来，玩到一定程度，你肯定进步了不少，忽然发现我得把数据量再提升一下，这时候，你有更强的技术可以应对。

- 对复杂代码的贪婪

同理，在编程世界里，除了要面对数据量增加的难度挑战，另一个就是计算效率，我刚刚讲说程序效率高，那是因为执行`1+1=2`这样简单的运算，如果更复杂一点，比如怎么下围棋，这就是开始体现厉害的程序员和普通程序员的差距了。而你作为新人，这时候去看各种大神写的简洁又高效的代码就跟拿到一本超强的无字天书，比如《葵花宝典》，我知道这本秘籍好啊，但是我怎么看不懂啊，不对，说不定你也能看得懂，什么「欲练此功，必先自宫」，你就是下不去手，写不出一样的代码，更不理解，为啥啊？

# 面向对象，春暖花开

> 从明天起，做一个幸福的人
> 
> 喂马、劈柴，周游世界
> 
> ……
> 
> 面朝大海，春暖花开

这是诗人海子著名的诗《面朝大海，春暖花开》，他可能也有拖延症，为什么要从明天起？

你如果看完这篇文章，已经下定决心，要开始学编程，赶紧下载我写的这份[《Python Tutorial for Humans™》](https://github.com/DavidFnck/Python-Tutorial-for-Humans)——**适合新人，免费、中文、零基础、快速入门的 Python 教程**从今天起，就学起来！我斗胆改了海子的诗，为你加油打气！

**《面向对象，春暖花开》**

> 从今天起，做一个幸福的人
> 
> 吃饭，睡觉，学 Python 编程
> 
> 从今天起，关心函数和方法
> 
> 我有一台电脑，能开机，能上网

> 从今天起，和每一个数据库通信
> 
> 告诉他们我的幸福
> 
> 那幸福的 Python 告诉我的
> 
> 我将告诉每一张表

> 给每个变量每个函数取一个温暖的名字
> 
> 陌生人，我也为你祝福
> 
> 愿你也有一个灿烂的进程
> 
> 愿你与 Python 终成眷属
> 
> 愿你在编程中获得幸福
> 
> 我只愿面向对象，春暖花开


