【51CTO独家特稿】学以致用,很多时候,学习一样东西最好需要能够在实际中应用起来。

所以我在第2课"怎么看待牛人"中强调的必须“看代码 + 写代码”。

不过我在里面提到的例子“ORM”却并不好,ORM太过庞大。实际编码,应该是从小开始。

运维工作中更经常使用的是脚本语言,脚本程序甚至是shell命令都可以完成很多有意义的事情。

这些猪头应该在工作中体验很多;但作为程序员,程序能够发挥的作用也可以体现在生活上。

玩Draw Something单词想不出来,是完全可以写个程序来输出单词列表的。

上网下载一个英文单词词库;然后甚至可以用最傻X的方式去逐个单词检查,看Draw Something给出的字母是否能够组成各个单词。

程序首先是要完成需求,这里的需求仅仅是要方便玩游戏,猜出朋友的单词谜语。

程序运行慢点完全无所谓,千分之一秒输出结果,还是10秒输出结果,都不会影响这个需求的实现。

(当然,如果是玩Facebook上的限时拚单词游戏那需求又是不同。)

这种“程序”是所谓的Throw-away code,写完就扔。

像Draw Something这样的游戏,乐趣就在于努力去想、努力猜成功之后的成就感。有了这样一个程序,那就不用努力去想,游戏的乐趣也就会在瞬间丧失,“破解工具”自然也就得扔掉了。

即便写完就扔,但写这样的程序却有其意义。写与不写是差别是0与1的差别,这是本质的区别。

我会非常鄙视那些热衷于看各种语言的介绍但却一行程序都不写的人。

有的人,听说erlang很牛B,上网搜了一堆介绍,不断的感叹“哇~Erlang确实很牛!”,“哦耶!Facebook Chat跟Web QQ都是在用erlang,果然erlang才是王道!”

但是,他自己却不写任何一行erlang程序;有时,还会抱怨公司的管理层都是傻逼,这个项目用erlang再合适不过,为什么不用,为什么不给团队使用erlang的机会呢?

一定要写程序,没有机会,也要创造机会。

而在我看来,生活中这种“玩游戏”的机会再合适不过。

写了Draw Something的“破解工具”,会使得猜单词没有成就感,丧失游戏的乐趣;但,完成了一个程序去破解一个游戏,这本身也是一件有成就感的事情啊~

并且,游戏的乐趣会转移为编程的乐趣;而乐趣,是让自己变厉害的最大动力。

Geek享受这样的机会;而ED则等待别人享受这样的机会。

“做,就对了” - 慈济宗创始人 证严法师

作业:

1. 使用Perl 实现一个程序输入若干字母,输出这些字母所能组成的所有单词列表。素,就是要写个 Draw Something的“破解工具”。

2. 比较Perl的实现跟云风的lua实现有何不同:https://github.com/cloudwu/guess-word

51CTO系列:

  1. 宅男程序员给老婆的计算机课程之0:认清本质
  2. 宅男程序员给老婆的计算机课程之1:认清实际
  3. 宅男程序员给老婆的计算机课程之2:怎么看待牛人
  4. 宅男程序员给老婆的计算机课程之3:架构比较
  5. 宅男程序员给老婆的计算机课程之4:SQL vs NoSQL
  6. 宅男程序员给老婆的计算机课程之5:设计模式
  7. 宅男程序员给老婆的计算机课程之6:模版引擎
  8. 宅男程序员给老婆的计算机课程之7:运维的重要性
  9. 宅男程序员给老婆的计算机课程之8:控制器
  10. 宅男程序员给老婆的计算机课程之9:数据模型
  11. 宅男程序员给老婆的计算机课程之10:做,就对了!
  12. 宅男程序员给老婆的计算机课程之11:域模型