宅男程序员给老婆的计算机课程之1:认清实际

原创
开发
这个系列来自一位宅男程序员,这个系列是他写给老婆的电脑课程。以下,开始本系列的第1篇——什么是算法。“算法”、“数据结构”等,是本质;很重要,需要掌握,但一般开发时,很少需要自己去实现。

男主角:Wuvist(新浪微博),真名翁伟,自称胖程序员一个,幸好已婚。学习.NET出身,现常用Python做服务器端开发,曾任新加坡某创业公司主程。公司被techcrunch blog过后,觉得新加坡生活太过安逸,终于于去年辞职只身回家乡汕头创业,活跃于珠三角技术沙龙,热衷于与其他技术宅分享。

[[56828]] 

本文作者:Wuvist

女主角:Katze,Wuvist的老婆,女程序员,在某跨国投行任Unix系统管理员,常被Wuvist嘲笑技术太差。

[[56829]]

查看全部课程请访问宅男程序员给老婆的计算机课程

“算法”、“数据结构”等,是本质;很重要,需要掌握,但一般开发时,很少需要自己去实现。

觉得多数开发,是“拚积木”。

即便是业务逻辑需要对一些数据进行排序,也不可能自己去实现一个quicksort算法;而是直接调用quicksort的现成类库。

这也直接造成了2B ED穷其一生都不能掌握真正的编程能力。

他们认为,能够“解决”问题就好,至于问题是怎么解决的,他们并不关心。

对于细节的认识、掌控能力,直接造成了水平的天渊之别。

以拍照为例子,以前人们用傻瓜相机,现在人们用iPhone去拍照;很快,很方便,还可以加滤镜。

但是,普通人们在不了解什么是光圈、精深、背光等概念的情况下,是没有可能成为摄影师的。

即便他们放下iPhone拿起DSLR。

普通人跟摄影师拍摄同样的东西;出来的照片也许会差不多,但如果深入去比较,景深、角度、光线、取景等等等等细节,则都会有差别,而这些差别积累起来,就造成了普通照片与摄影作品的差别。

画家要画好画,必然要对画笔、颜料、纸张的特性有深入的了解。

厨师要做好菜,必然要了解食材的特性,对调味料、厨具等有娴熟的掌控。

ED的“解决问题就好”,跟没有下过厨房的千金小姐拿着菜谱使用微波炉做菜没啥区别。

在大厨手里,微波炉也可以是神器;但:

    “有的人,纵然神刀在手,亦无法成为刀中之神。”

程序员要“拚好积木”,那必然需要对积木的种类、材质、特性,有深入的了解。

总得对quicksort的实现有认识,才能够用好quicksort。在有的场景下,quicksort的性能反而是最差的。如果不了解,就无法去把quicksort用好。

程序开发中,有一个著名的 80 / 20 原则。

我想,这个原则也可以适用于ED。

程序员只要花20%的努力就可以成为一个混日子的ED;80%的程序员均是如此。

但如果要成为一个优秀的程序员甚至hacker,那么,需要花多至少4倍的努力。

有什么积木可以用?积木本身是怎么做的?积木A比积木B好在哪里?

这些,是需要花大量的时间去了解。

全部都是实在的经验积累,没有捷径。

都是.NET语言,C# 跟 VB.Net的差别在哪里?对于ED,他们偶尔也会对这样的问题感兴趣,然后,他们会去看介绍,看比较文章。。。。但其实,这事完全是木有用的。

他们看了别人的介绍,以为自己懂的,但实际上,他们只是在复读而已,完全木有懂。

作为一个ED,要了解C#跟VB.Net的差别在哪里,最好的方式,就是花时间去把两种语言都学了。用这两种语言分别去写个几万行程序,然后就懂了。

当某天ED成为Hacker的时候,那就反倒可以去看各种介绍,看一眼,然后瞬间就可以悟了。

这也就是为什么很牛程序员学习新语言可以那么快,因为有太多的知识可以复用;而这些知识的积累,必然是需要通过在实际中,无数行的实际编码,无数篇的资料阅读中得来的。

没有捷径。

很多初学者,或者说,编程的伪爱好者,他们,会热衷于去四处请教大师,下载各种经典书籍,企图读一本编程圣经,然后一夜脱胎换骨。

这是,不可能的。

这种伪爱好者,永远不可能成事;在学习的过程中,抱着去“走捷径”的心态,本身就已经是入了歧途;最终会花更多的时间。

原来Ruby / 现在 Python的一个光头大牛Zed A. Shaw,为了表达“没有捷径”这样的观点,特意写了本《Learn Python The Hard Way》:
http://learnpythonthehardway.org/

甚至有一个系列:http://learncodethehardway.org/

从长远来看:The Hard Way Is Easier。

我完全同意。

作业:

1. 列举10个Python Web框架

2. Python有多少种不同的解释器?

3. Perl 跟 Python 有什么不同?

51CTO系列:

  1. 宅男程序员给老婆的计算机课程之0:认清本质
  2. 宅男程序员给老婆的计算机课程之1:认清实际
  3. 宅男程序员给老婆的计算机课程之2:怎么看待牛人

【编辑推荐】

  1. PHP+MySQL应用中使用XOR运算加密算法
  2. 保证你从来没见过的算法的舞蹈(视频)
  3. 浅谈PHP 5中垃圾回收算法的演化
  4. JavaScript版几种常见排序算法分享
  5. 程序员须知的二十世纪最伟大10大算法

 

责任编辑:彭凡 来源: 51CTO
相关推荐

2012-02-01 10:19:02

宅男程序员计算机课程

2012-05-02 13:30:50

2012-05-14 09:33:21

宅男程序员

2012-03-01 09:27:23

宅男程序员

2012-02-21 09:37:07

宅男程序员

2012-02-14 10:33:12

宅男程序员

2012-05-21 09:04:12

宅男程序员

2012-03-20 09:44:40

宅男程序员

2012-04-26 08:12:01

2012-03-27 09:43:28

宅男程序员

2012-02-15 14:40:17

宅男程序员

2012-02-09 10:02:41

宅男程序员

2012-03-05 09:48:03

宅男程序员

2012-02-12 13:31:36

2011-05-11 09:42:27

程序员

2011-05-18 15:17:36

2012-04-09 09:42:56

2022-04-11 15:59:21

计算机

2023-08-07 12:11:26

CPU存储器SSD

2013-03-27 09:59:33

程序员编程
点赞
收藏

51CTO技术栈公众号