什么是编程思维

什么是编程思维

这是个很难解释清楚的问题。编程思维,是相对传统思维,有其特殊性。在网上搜了一波,结合自己的理解,有以下总结。

  1. 设计思维。
    比如设计一个软件小游戏,需要先做设计,在脑中搭建架构,这种高屋建瓴统筹规划全局的思维几乎在任何的学习、工作项目中都要用到;
  2. 抽象思维
    跟设计思维类似。编程思维出现的最终的目的仍然是提供一种抽象方法来解决现实中的问题,问题本身的复杂程度往往取决于抽象的种 类和质量。从汇编语言的出现解决了最初的抽象,接着是后来的高级语言提供了更容易让人理解的抽象。
  3. 【核心】算法和数据结构,或者称为模式识别、规律整合思维。承接抽象思维,说白了就是,把现实中的问题,映射到计算机中的数据结构和算法实现上,这种映射能力可以说就是编程能力或者数学建模能力了。(关于抽象思维和算法数据结构的映射,下面展开阐述)。
  4. 问题拆解思维
    一个复杂的问题,编程者需要把它拆解成一个个简单的问题,再逐个击破。比如想要实现哪个功能,他需要先做什么,再做什么,有思路有计划的完成这个项目。这就涉及了问题拆解思维。
  5. 复用思维
    比如函数的封装和应用,模板库、公共组件库、类库,等等都说明了复用思维的应用之广泛。
    比如函数,许多会被重复使用到的运算过程被储存为标准化的函数,下次再有需要就直接调用,只需要改动输入的自变量即可。
    复用的主要目的是提升开发效率,提升可维护性和代码的可读性等。
  6. 自动化思维
    让重复的操作自动完成,或者组合一些复杂的步骤变成一个简单的步骤,可以方便的执行任务,提升效率。

谈编程不可避免的要谈到编程语言,而编程语言之所以出现,其最终的目的仍然是提供一种抽象方法来解决现实中的问题,问题本身的复杂程度往往取决于抽象的种 类和质量。从汇编语言的出现解决了最初的抽象,而类似c或fortran语言出现则可以看做是对汇编语言的进一步抽象。这一步抽象的完成其实是很重要的一 个进步,既我们在解决问题的时候不再需要关系复杂的机器模型或机器码,而是可以更多的关注问题和解决方案本身。
在这个阶段,从编程本身来说最核心的还是算法和数据结构。这也是任何程序最重要的两个基本要素。既把问题域本身涉及到的数据映射到合适的数据结构,把通过程序解决问题的过程映射为具体的算法逻辑。那么编程实际的难点在哪?不是算法本身或数据结构本身,而是当你拿到问题域的时候知道如何理解和分解问题,并将其映射到最适合的算法或数据结构上。这个映射其实本身不是程序解决的问题,还是人脑在思维,程序本身仅仅是在实现自动化的过程。
那么程序在算法实现过程中最基本的是什么?我们看不同的程序片段可以看到的还是if/else,或者for/while,然后才是数据或数据类型定义。而前者即写任何一个程序中最重要的控制逻辑。那么编程里难的实际上不是控制语句本身,而是在把问题域分解后知道如何理解判断逻辑,如何将问题域中重复的东西抽象为循环,如何从问题域中抽象出数据结构。一个人编程能力本身的好坏,或者说编程思维能力,重点其实是体现在这种映射能力,也可以称这种映射能力为数学 建模能力。举个例子来说,如果一个问题你已经知道了可以映射到构建二叉树,然后通过遍历的方式来解决了,那么可以说然后一个掌握了语言语法的人都可以写出 程序来。那么实际编程思维或能力的强弱则在于前面谈到的映射和建模。
面向对象思想和面向对象编程语言的出现,可以说也是编程思维本身的第二次重大提升。既原有的编程语言可以看到我们关注更多的已经是抽象后的解决方案,而面向对象的编程语言则首先关注的是通过对象和类,通过继承,通过接口定义等首先对现实世界进行很好的抽象描述,其次才是如何去解决问题。现实世界中所有的一 切都是对象,而面向对象语言中的类本身就是对现实世界中对象的很好的抽象。
(以上内容来自知乎用户何明璐的答案,觉得谈的很通俗易懂)

至于如何提高编程思维(或编程能力)

其实当你真正理解什么时候编程思维了以后,自然会知道应该在哪些方面下功夫。不过还是可以有一些实在的操作指引的:

  1. 打好计算机理论基础
  2. 不断加深对核心概念的理解
  3. 掌握常见的编程范式
  4. 多实践多交流
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值