[TL]聪明和按部就班

Tinyfool <tinyfool@gmail.com>
sender-time     Sent at 12:02 (GMT+08:00). Current time there: 9:26 AM. ✆
reply-to        pongba@googlegroups.com
to      pongba <pongba@googlegroups.com>
date    Thu, Sep 23, 2010 at 12:02
subject [TL] [OT]聪明和按部就班

2010/9/23 Tinyfool <tinyfool@gmail.com>: 今天sagasw在tw上面批评《两个最容易被人忽略的基本代码优化技术》http://sd.csdn.net/a/20100921/279732.html太水。他说,“这难道不是做代码优化的common sense么?这都忽视了还怎么做优化?”

我第一反应是说,“对你的水平当然是common sense,但是csdn的读者里面不懂这两样的实在是太多太多了”

然后他引述其中一个回复,“另外我是同意某读者对原文的评论:读汇编不是必要的,读代码就应该能看出来瓶颈”

然而我的感想是,“其实你和那个读者反而没看懂,此文正是说,这些手段最基本,但是很多时候被忽视,很多人太自以为是了,以为自己就一定能猜对,猜对了当然好,但是如果没猜对呢,这样的例子我见多了”

我认为“聪明当然是好事,但是太聪明了,就往往觉得自己可以不按部就班,但是大巧不工,有时候按部就班就是解决问题的最佳策略,从程序员的话来讲,聪明就像一个算法,在最佳情况下是常数复杂度的,但是最差情况是O(n^2)。按部就班,不管最差最好,都是O(n*log(n))”

事实上,我觉得我们行业水平一直上不来的其中一个原因就是太爱耍小聪明,不肯踏踏实实地去学习按部就班即可以解决问题的方法,我说,“聪明当然是好事,但是太聪明了,就往往觉得自己可以不按部就班,但是大巧不工,有时候按部就班就是解决问题的最佳策略,从程序员的话来讲,聪明就像一个算法,在最佳情况下是常数复杂度的,但是最差情况是O(n^2)。按部就班,不管最差最好,都是O(n*log(n))”

> 事实上这是我一直以来的观点,我写过《程序员的成长从开窍开始系列 > 一、如何摆脱低级错误的困扰》http://tiny4.org/prog/diary/2007/12/blog-post.html > ,原因就是看到太多身边和网上的朋友遇到一个低级错误的时候,居然会很久无法找到原因和解决它们,希望试图通过总结一个可以按部就班执行的步骤,来帮助初学者入门。 > > 大家怎么看这个问题呢?

ZQ 的分析

自从意识到俺经常自我陷入这种状态之后,才逐渐发现这是种普遍现象,究其原因,可能就一点:

- 没心情将问题作为一个有趣的现象来解决,以便完成自我增进:
    - 多数这种低级错误发生在自个儿完全没兴趣的工程任务编码过程中;
    - 时间又逼得紧,根本没意愿去解决(潜意识中)
    - 就将问题严重化,普遍化,成为借口,进行四处求救
    - 也顺便将求救的过程转化成了积极工作的过程...

本来不论语言/框架/模块的细微理解和技巧,都得在具体应用情景中,才可能体会得到, 看再多手册,不用,基本没谱; 但是,在问题中反复尝试,修正猜想/设想/理解,是需要时间和过程的,这其中涉及的关键资源:

+ 意识
+ 时间
+ 知识

前两个是稀缺资源,后一个在 Google 的帮助下,大家几乎是平等的; 所以, 过来人,的确可以想办法形成几个简单有效不涉及原有思维定式的方法来引导陷入这类情绪的码农, 将问题的探查转换到理性的频道:

俺推荐: "Infrequently Oriented Programming -- 面向少见模式编程 流派"

> --
> Tinyfool的开发日记 http://www.tinydust.net/dev/
> 代码中国网 http://www.codechina.org
> myTwitter: http://twitter.com/tinyfool
>


反馈

创建 by -- ZoomQuiet [2010-09-26 01:27:32]

ZoomQuiet/2010-09-26 (last edited 2010-09-26 01:27:32 by ZoomQuiet)