当前位置:编程学习 > C/C++ >>

计算机思维方式

对于计算机专业的人来说,电脑无疑是非常傻的。没有智能,不会思考,他只会执行有限的简单的指令。它的优点是不会感到累。我们程序员的职责就是用计算机能懂得语言告诉他做一些事儿。
尽管计算机做的事如此简单,但是在纷繁的应用中,他还是表现了他解决问题的一些特征,如果程序员能很好的理解这些特征,那么我们的工作将会事半功倍。
一. 人脑的智慧VS电脑的不知疲倦+快速
对面坐了5个学生,有一篮苹果,其中一些事坏的。任务是将好的苹果尽可能平均的分配给这五个学生。
人:大概估计篮子的大小,苹果量的规模,分别往每个人面前放大概1/5规模多的苹果,最后进行调整使其平均化。
电脑:
[cpp]  
  
[cpp]  
i = 0;  
while (hasApple()) {  
    apple = getApple();  
    if (apple is bad) {  
        continue;  
    } else {  
        give this apple to people[i++ % 5];  
    }  
}  
分析:很明显,人脑是非常智慧的:一心多用,预估,动态调整等。每一项都让电脑很难办到。相反电脑的做法非常简单,每个瞬间注意力只集中到一件事上,一个一个往外拿,坏的就扔,好的就挨个分。但是借助于电脑对每一动作的超高速执行,整个分配工作瞬间就可以完工。
如果让人按照电脑的思维方式工作,分完这篮苹果得好久。如果让电脑按照人的思维方式工作,得写多少代码,人工智能都得搬出来。
因此,人脑和电脑的思维方式工作特点非常不同。而作为给电脑发号施令的程序员,能够掌握电脑的思维方式显得尤为重要。
二.胸有成竹
你用英语都写不出来的东西就别指望写代码了。   ——Peter Haopern.
有了思路才能写出可工作的代码,在问题未清晰定义,思路尚模糊,只能有感觉,应该,大概这样的词来形容自己的思路的时候,就开始写代码的话,写到一半往往发现思路完全不对。当然有人可能感觉,写着写着思路就出来了,那是因为写的过程就是在梳理思路。那么为什么不在写代码之前就用更加严谨,规整的方式梳理好呢?
三. 人脑与问题规模
人脑对问题规模的判断往往是线性的:1个,2个,3个……。
而计算机对规模的判断往往是指数级的:log , 线性,平方,立方……。
要习惯计算机领域用数量级来衡量问题,比如空间性能,时间性能。
人脑经常处理的是某个数量级的问题,不擅长同时处理跨越多个数量级的问题。比如很难关注同时关注整个项目框架进度方案实施和某个小函数的小算法实现。所以我们需要模块化,分解开不同数量级的问题,到每个人身上只关注本书良机的问题。
三.量化分析问题
尽量数据话,量化的分析问题,不要总凭感觉。合理的量化分析后往往有优良的解决方案。例如:
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
数据规模n非常大的话,怎么处理?认真分析一下,其实两个连续数字只有7*7=49中组合,那么序列中必然出现循环。这样的话,问题就简单多了。
四.等价类划分
程序运行就是设计好的指令的执行。那么对于这些指令来说,什么样的数据他认为执行的路径是一样的。就没有必要重复测试。所以,测试的时候,尽量划分好等价类。
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,