http://www.zhihu.com/question/19831473

如何培养编程所需要的逻辑思维?修改

作为一个软件工程的学生,虽然专业课(C,数据结构之类的)学得算是过得去吧,但是始终觉得没有建立起编程所需要的逻辑思维。也许跟我从小数学不好有关。打个比方吧,简单的问题可以很快搞定,但是遇到较为复杂的问题,就很难将其抽象出来,总感觉脑中一团混沌。为此甚是苦恼。但因为个人实在喜爱这个专业,所以从未考虑放弃或者转行,只希望能够有一天开窍,融会贯通。可是最近自学python,也还是找不到那种感觉。希望大知了们能给点建议。 修改
举报 添加评论  分享  •  邀请回答
按票数排序

9 个回答

赞同16 反对,不会显示你的姓名

天光,一檐停风聚天下闲士 半阁藏卷窃古今名家

周守一、张志云、杨富超  等人赞同

首先,建议要精读或者精学三门课程:离散数学 数据结构 编译原理。所谓的精读或者精学,不是说简简单单为了应付考试的学习,而是对每个细节每项内容都穷究其理,融汇贯通。精学这3门课程的本身就是逻辑思维和抽象思维能力的很好锻炼。其中前两门课程,其知识本身在未来也有大用,编译原理本身作为一般程序员用到的机会可能不多,但是学编译原理真的很锻炼逻辑思维和抽象思维能力。 
其次,可以多玩一些抽象类,数字类的游戏,例如数独。 
再次,多精读一些好书,尤其是设计类的书,推荐《设计模式》,边读要边思考,不是灌输式的读书,是思辨式得读书 
再再次,花大量时间去优化代码,不管是自己的还是别人的。用不同的方式,不同的思路,不同的算法,不同的结构去改写和优化代码。尤其是算法类的代码,系统控制类的代码。
2011-12-11  添加评论             

赞同4 反对,不会显示你的姓名

王一先,喜爱历史,传统文化,计算机技术

笑忘书、张亚林、MOOWOO  等人赞同

波利亚的《怎样解题》是本很不错的书,提供了一种探索式的解决问题的方法论。另外,解决问题的核心在于一个因果关系的转化,就是找到已知的条件到最终结果的桥梁,这个寻找的过程可以很多技巧譬如将复杂问题分解为若干简单问题,先解决问题的一部分入手,假设问题解决而倒推需要满足的条件等等。。。。这些不仅是编程,做很多其他工作都是必要的。
2011-12-11  添加评论             

赞同1 反对,不会显示你的姓名

paradisor,书有未曾经我读,事无不可对人言

MOOWOO 赞同

抽象能力是需要锻炼的,而且复杂问题不见得能分解成简单问题。我觉得你可以试着锻炼怎么把一个问题在头脑中全部建立起来的能力。比如一些数学问题或者算法问题,如果你能在纸上写出问题的答案,试着把纸丢开,从头在脑子里把整个问题再解决一遍。用这种方式解决一些算法习题,慢慢地你的抽象能力会有上升的。
2011-08-29  添加评论             

赞同2 反对,不会显示你的姓名

杨青卿,喜欢算法,喜欢数学,喜欢背单词,喜欢C,喜…

张达、MOOWOO 赞同

普通人的脑容量,大概是5-7,所以比较好的方式是,将你的问题分解为不多于7个子问题,把它们写下来,再深入到下一层

个人比较同意一种观点,就是复杂问题的coding更类似于数学题,多见多总结是一个不错的选择
大型程序的coding需要系统化的思维,这时候你需要一些指引,这是国内CS教育比较缺失的一块,很难想象一个较大的程序,能够经由一个没有任何经验的人做出来,就像一个从没了解过房屋内部结构的人,仅凭外观去设计一栋建筑

2011-08-29  添加评论             

赞同1 反对,不会显示你的姓名

Sosi,Physics-based Character Animation

MOOWOO 赞同

在打好基础的前提下,适当学一下几种思想不同的编程语言。开阔一下眼界,不要把自己局限在一个小圈子里。关键还是要自己有动力,肯努力才行,知道成功方法的人很多,成功的确不多
2011-08-28  添加评论             

赞同1 反对,不会显示你的姓名

龙彼得,开源软件,Linux, Python, 函数式编程爱好者

MOOWOO 赞同

好好打基础吧. 把数据结构, 算法, 面向对象等等都学好. 然后再多学几门语言. 别太着急, 现在正是你打基础的时候.
2011-08-28  1 条评论             

赞同1 反对,不会显示你的姓名

杨凯,PM

MOOWOO 赞同

1.编程技术方面的知识作为基础是必须的,如果没有这方面的知识积累,你在解决编程这方面问题时很难产生一个好的思路;如果没有关于这方面的任何知识,那就完全不可能产生。
好的思路说白了最终还是来源于过去的经验和以前获得的知识。
2.至于你说的简单的问题还可以解决,复杂的问题就感觉混沌。推荐一本书是波利亚的《怎样解题》,也许能让你对正确思维这方面的问题得到些启发。
2011-08-28  添加评论             

Terry Xiong,读万卷书 行万里路

林晓翠、老覃 赞同

对于想成为一名优秀的编程人员来说,逻辑思维非常重要,本质上写程序就是在写逻辑嘛。培养逻辑思维,主要是多思考,这个思考有几个方面的,
1 思考并学习数学方面的基础,这里不但包括微积分,线性代数,概率统计,还包括对于计算机很重要离散数学,组合数学等,我最近在看《具体数学》,建议你可以试着看一看,这本书不要奢望一次性看懂,要做好看几遍的打算,看一本书的关键不在于你看了多少,而在于你思考了多少。
2 提高思考的能力,这其中包括学习各种思考的基本方法,培养良好的思考习惯,这里可以看看波利亚的《如何解题》,以及follow 刘未鹏童鞋的博客 http://mindhacks.cn,当然还要有自己的思考总结以及回顾。
3 多写代码,多多练习,特别是在写的时候,要思考怎么样做才能有扩展性,怎么样写比较易于维护,始终督促自己写优秀的代码(至少你目前能力所能达到的最优),写完后可以和别人讨论。
提高逻辑思维能力绝不是短时间的事情,要多多思考,勤于练习,我们共勉。
2011-12-17  1 条评论             

赞同1 反对,不会显示你的姓名

刘杰,平安应用架构师,喜欢看电影、听音乐、钓…

许言 赞同

大学我都没有学过计算机理论的书籍,大一我学习的是机械工程,后来转专业学了电子商务,和软件关系不是很大。编程完全是自学的,自认为编程要比很多人强。对某一件事情的深入理解后,逻辑自然就出来了。如果你所说的逻辑是像数学推理之类,那么数学知识是必不可少的。
2011-12-11  添加评论  感谢  分享  收藏  •  没有帮助  • 

如何培养编程所需要的逻辑思维相关推荐

  1. 如何培养编程所需要的逻辑思维?

    很少有人能单单通过所谓"逻辑思维"从复杂问题快速找到抽象的,如果有这样的人,他的经验,工具,方法和直觉通常起到比逻辑思维更重要的作用.写代码需要逻辑思维,但解决复杂问题更需要理解分 ...

  2. 学编程可以培养编程思维,而编程思维是什么?解读IT入门知识

    大家经常听说"学编程可以培养编程思维",而编程思维是什么?学编程和培养编程思维有什么联系你知道吗? 一.什么是编程? 在了解编程思维之前,首先,要和大家说一说什么是编程. 编程就是 ...

  3. 举例说明:学编程和培养编程思维有什么联系?

    大家经常听说"学编程可以培养编程思维",而编程思维是什么?学编程和培养编程思维有什么联系你知道吗?本文,带大家从多方面来具体了解下编程思维. 一.什么是编程? 在了解编程思维之前, ...

  4. python案例实操_用案例实操学习Python ,培养编程逻辑思维

    案例一: A.B.C.D.E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉. 日上三杆 A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份. B 第二个醒来, ...

  5. 老程序员的经验:应该怎么培养编程思维?

    照着别人代码敲一遍除了让你看得仔细点,练了打字外其它并没有任何帮助--和自己盯着代码仔细看是一样的,这样的学习效率是不高的. 首先得为什么会有这个问题,因为刚刚学习编程会走很多弯路,想找一个合适的方法 ...

  6. 培养编程素养和代码风格的书籍推荐

    代码风格的书籍推荐: 1.好代码 ,坏代码 为了写出优良的代码,我们必须对手上的方案有合理的判断,并彻底想清楚特定方法的结果(好的和坏的).为此,我们必须了解问题的根本:我们编写代码到底是为了实现什么 ...

  7. 软工+C(11): 从命令行开始逐步培养编程能力(Java)

    上一篇:助教指南,持续更新... // Version: 0.0.4 许多人,所不知道的是,每一种编程语言都有其对应的单元测试框架,对程序在不同阶段的测试环节也概念模糊.在实际动手编写程序许久之后才听 ...

  8. c语言逻辑思维编程题,c语言逻辑思维训练题一

    c语言逻辑思维训练题一 要求:用java实现下面的所有题目, 2012 年11月1日提交分支类 2012 年11月2日-3日提交循环类 严禁抄袭 分支类: 1.编写程序,输入一个整数,打印出它是奇数还 ...

  9. 学编程必看:逻辑思维测试

    2021.09 电子学会图形化一级考试有这样的一个题目: 如下图所示,井深7米,有个蜗牛从井底往上爬,白天爬3米,晚上往下坠2米,问蜗牛几天能从井里爬出来?( ) A. 4 B. 5 C. 6 D. ...

最新文章

  1. 最小径集的算法_机器学习的利器——集成算法
  2. AI in RTC 创新挑战赛,决赛打响
  3. Solr入门和实践以及我对Solr的8点理解
  4. 华为手机EMUI换鸿蒙,华为手机3月全面切换鸿蒙 EMUI 11或为安卓内核绝唱
  5. linux top功能,[每日一题]说说Linux top命令的功能和用法
  6. android自定义view案例,Android自定义View的实现方法实例详解
  7. Elasticsearch之中文分词器
  8. KVM(二)CPU 和内存虚拟化
  9. 浅谈Mysql 表设计规范(转)
  10. java生成流程图_java源代码转换为流程图
  11. 谈一下对计算机网络技术的认识,浅谈对计算机网络的认识
  12. [堆利用:TCache机制]HITB CTF 2018:gundam
  13. Gmail邮箱允许异地登录/客户端登录
  14. 【原创】差分线——差模,共模,奇模,偶模傻傻的分不清楚
  15. c语言:“有一个已排好序的数组,要求输入一个数后,按原来的规律将它插入数组中” 的程序分析及详细代码
  16. Java后台校验修改密码强度工具类
  17. 输入框@选人功能实现
  18. 工作中常用的前端知识总结
  19. QT5.12.0警告 zero as null pointer constant
  20. JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性

热门文章

  1. linux中realplayer.rpm格式的软件安装,Linux中安装Realplay 10.0 的方法
  2. 【QSS 样式与CSS样式有什么区别?】
  3. 深入理解字符串的不可变性[java]
  4. 移动端-微信端-pc端判断参考逻辑
  5. 广东计算机学会 信息学省初赛,广东CCF NOIP2019信息学竞赛复赛提高组一等奖获奖名单...
  6. 爬虫-菜谱信息爬取(保存至数据库)
  7. 不看不见de视觉,不知不觉de设计
  8. JavaScript 的多事之秋
  9. RGB 和 HSV 互相转换算法
  10. Visual Studio2017专业版和企业版密钥