如何培养编程所需要的逻辑思维?修改
作为一个软件工程的学生,虽然专业课(C,数据结构之类的)学得算是过得去吧,但是始终觉得没有建立起编程所需要的逻辑思维。也许跟我从小数学不好有关。打个比方吧,简单的问题可以很快搞定,但是遇到较为复杂的问题,就很难将其抽象出来,总感觉脑中一团混沌。为此甚是苦恼。但因为个人实在喜爱这个专业,所以从未考虑放弃或者转行,只希望能够有一天开窍,融会贯通。可是最近自学python,也还是找不到那种感觉。希望大知了们能给点建议。
修改
按票数排序
9 个回答
首先,建议要精读或者精学三门课程:离散数学 数据结构 编译原理。所谓的精读或者精学,不是说简简单单为了应付考试的学习,而是对每个细节每项内容都穷究其理,融汇贯通。精学这3门课程的本身就是逻辑思维和抽象思维能力的很好锻炼。其中前两门课程,其知识本身在未来也有大用,编译原理本身作为一般程序员用到的机会可能不多,但是学编译原理真的很锻炼逻辑思维和抽象思维能力。
其次,可以多玩一些抽象类,数字类的游戏,例如数独。
再次,多精读一些好书,尤其是设计类的书,推荐《设计模式》,边读要边思考,不是灌输式的读书,是思辨式得读书
再再次,花大量时间去优化代码,不管是自己的还是别人的。用不同的方式,不同的思路,不同的算法,不同的结构去改写和优化代码。尤其是算法类的代码,系统控制类的代码。
其次,可以多玩一些抽象类,数字类的游戏,例如数独。
再次,多精读一些好书,尤其是设计类的书,推荐《设计模式》,边读要边思考,不是灌输式的读书,是思辨式得读书
再再次,花大量时间去优化代码,不管是自己的还是别人的。用不同的方式,不同的思路,不同的算法,不同的结构去改写和优化代码。尤其是算法类的代码,系统控制类的代码。
波利亚的《怎样解题》是本很不错的书,提供了一种探索式的解决问题的方法论。另外,解决问题的核心在于一个因果关系的转化,就是找到已知的条件到最终结果的桥梁,这个寻找的过程可以很多技巧譬如将复杂问题分解为若干简单问题,先解决问题的一部分入手,假设问题解决而倒推需要满足的条件等等。。。。这些不仅是编程,做很多其他工作都是必要的。
MOOWOO 赞同
抽象能力是需要锻炼的,而且复杂问题不见得能分解成简单问题。我觉得你可以试着锻炼怎么把一个问题在头脑中全部建立起来的能力。比如一些数学问题或者算法问题,如果你能在纸上写出问题的答案,试着把纸丢开,从头在脑子里把整个问题再解决一遍。用这种方式解决一些算法习题,慢慢地你的抽象能力会有上升的。
普通人的脑容量,大概是5-7,所以比较好的方式是,将你的问题分解为不多于7个子问题,把它们写下来,再深入到下一层
个人比较同意一种观点,就是复杂问题的coding更类似于数学题,多见多总结是一个不错的选择
大型程序的coding需要系统化的思维,这时候你需要一些指引,这是国内CS教育比较缺失的一块,很难想象一个较大的程序,能够经由一个没有任何经验的人做出来,就像一个从没了解过房屋内部结构的人,仅凭外观去设计一栋建筑
个人比较同意一种观点,就是复杂问题的coding更类似于数学题,多见多总结是一个不错的选择
大型程序的coding需要系统化的思维,这时候你需要一些指引,这是国内CS教育比较缺失的一块,很难想象一个较大的程序,能够经由一个没有任何经验的人做出来,就像一个从没了解过房屋内部结构的人,仅凭外观去设计一栋建筑
MOOWOO 赞同
1.编程技术方面的知识作为基础是必须的,如果没有这方面的知识积累,你在解决编程这方面问题时很难产生一个好的思路;如果没有关于这方面的任何知识,那就完全不可能产生。
好的思路说白了最终还是来源于过去的经验和以前获得的知识。
2.至于你说的简单的问题还可以解决,复杂的问题就感觉混沌。推荐一本书是波利亚的《怎样解题》,也许能让你对正确思维这方面的问题得到些启发。
好的思路说白了最终还是来源于过去的经验和以前获得的知识。
2.至于你说的简单的问题还可以解决,复杂的问题就感觉混沌。推荐一本书是波利亚的《怎样解题》,也许能让你对正确思维这方面的问题得到些启发。
对于想成为一名优秀的编程人员来说,逻辑思维非常重要,本质上写程序就是在写逻辑嘛。培养逻辑思维,主要是多思考,这个思考有几个方面的,
1 思考并学习数学方面的基础,这里不但包括微积分,线性代数,概率统计,还包括对于计算机很重要离散数学,组合数学等,我最近在看《具体数学》,建议你可以试着看一看,这本书不要奢望一次性看懂,要做好看几遍的打算,看一本书的关键不在于你看了多少,而在于你思考了多少。
2 提高思考的能力,这其中包括学习各种思考的基本方法,培养良好的思考习惯,这里可以看看波利亚的《如何解题》,以及follow 刘未鹏童鞋的博客 http://mindhacks.cn,当然还要有自己的思考总结以及回顾。
3 多写代码,多多练习,特别是在写的时候,要思考怎么样做才能有扩展性,怎么样写比较易于维护,始终督促自己写优秀的代码(至少你目前能力所能达到的最优),写完后可以和别人讨论。
提高逻辑思维能力绝不是短时间的事情,要多多思考,勤于练习,我们共勉。
1 思考并学习数学方面的基础,这里不但包括微积分,线性代数,概率统计,还包括对于计算机很重要离散数学,组合数学等,我最近在看《具体数学》,建议你可以试着看一看,这本书不要奢望一次性看懂,要做好看几遍的打算,看一本书的关键不在于你看了多少,而在于你思考了多少。
2 提高思考的能力,这其中包括学习各种思考的基本方法,培养良好的思考习惯,这里可以看看波利亚的《如何解题》,以及follow 刘未鹏童鞋的博客 http://mindhacks.cn,当然还要有自己的思考总结以及回顾。
3 多写代码,多多练习,特别是在写的时候,要思考怎么样做才能有扩展性,怎么样写比较易于维护,始终督促自己写优秀的代码(至少你目前能力所能达到的最优),写完后可以和别人讨论。
提高逻辑思维能力绝不是短时间的事情,要多多思考,勤于练习,我们共勉。
许言 赞同
大学我都没有学过计算机理论的书籍,大一我学习的是机械工程,后来转专业学了电子商务,和软件关系不是很大。编程完全是自学的,自认为编程要比很多人强。对某一件事情的深入理解后,逻辑自然就出来了。如果你所说的逻辑是像数学推理之类,那么数学知识是必不可少的。