hello wordl!
   keep coding!🏃

学编程不是将来要当程序猿,而是在学习编程思维。比尔盖茨、扎克伯格、乔布斯用经验告诉我们,拥有编程思维的人,就相当于成功了一半——不但逻辑清晰心思缜密,而且解决问题能力、管理能力也非一般人可比。但什么是编程思维呢?

编程思维

编程思维是解决问题的算法加代码实现的过程的集合,编程思维有两个组成部分,一部分是算法设计,另一部分是代码实现。

问题拆解

编程思维的核心,不是编程语言,也不是语法,甚至不是算法或数据结构本身,而是如何分解问题,从中发现规律,建立解决问题的模型,并映射到合适的数据结构和算法上,然后才能根据算法写程序实现。

比如吃一个大西瓜时,一口肯定吃不掉,这时就会把它切成一块一块的,或是用勺子一口一口吃。这就是把一个问题拆分再逐个解决的过程。

而编程的过程,就是把复杂和庞大的问题“自下而上,逐步拆解,直至理顺”。这种思维在学习和生活中叫“分解思维”。

在做数学题时也是一样的道理,解答一道复杂的大题通常需要把它 拆分

具备这种思维的人,做事情是有条不紊并且有耐心的,即便面对一道有挑战的数学题,也能列出清晰的解题步骤,清楚的知道自己每一步的进展,而不是遇到难题时脑子里一团乱麻。

运用抽象

想象一下房子的形象,一般人的想象中它可能是这样的

编程思维是一种什么思维?_论文阅读

但在建造师的想象中,它可能是这样的

编程思维是一种什么思维?_开发语言_02

建筑师想象中的房子,具体到了房子内部的具体架构和材料,每一面墙、每一扇门窗应该如何更精巧地设置。

抽象级别越高,则越接近事物的本质,规律的适用面也越广。编程的世界里,就包含“子系统、模块、包、类、方法和语句”等不同层级的抽象。

模式识别

模式识别是“ 如何发现相似的模式并有效地解决细分问题

算法逻辑思维

算法设计,就是根据问题拆解去设计一步一步的具体解决路径(尽可能优算法),从而解决整个问题。
在具体解决问题的过程中,较关键的能力有两个 —— “逻辑思维”和“调试纠错”。

逻辑思维

说逻辑思维经常说的一个笑话是,程序员老公买10个包子,如果遇到卖西瓜的,就买1个,结果就是老公只买了1个包子,原因是因为遇到了卖西瓜的。

这其实是很典型的逻辑思维。逻辑思维中有个很重要的原则叫 MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且整体完备”,也就是“不重复,不遗漏”。

编程里,只有对与错,没有模糊值。在程序运行的过程中,只要较终的结果与期望不符合,就证明算法中肯定有错漏。

调试纠错能力

但程序中的bug常常不是一下就能找到的,需要把程序的运行顺序一步步地跟走一遍,同时观察每一步的运行结果。这就需要很多的耐心、观察力和专注力,对孩子的抗挫能力也是一种磨练。

为啥的人总在进步?就是因为他们懂得“回溯、调试、纠错”,不断进行自我优化和成长,不断be better。

什么是对象

对象是一个 抽象

面向过程和面向对象

面向过程与面向对象都是编程中编写程序的一种 思维方式

面向过程:把事情拆分成几个步骤(相当于拆分成一个个的方法和数据),然后按照一定的顺序执行。

面向对象:面向对象会把事物抽象成对象的概念,先抽象出对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法。

1. 生活举例:用洗衣机洗衣服,来看一下两者的差别。

面向过程:

放衣服(方法)=》加洗衣粉(方法)=》 加水(方法)=》 漂洗(方法)=》 清洗(方法)=》 甩干(方法)

面向对象:

new 出两个对象 ”人“ 和 ”洗衣机“

”人“ 加入属性和方法:放衣服(方法)、加洗衣粉(方法)、加水(方法)

”洗衣机“ 加入属性和方法:漂洗(方法)、清洗(方法)、甩干(方法)

然后执行:

人.放衣服(方法)=》 人.加洗衣粉(方法)=》 人.加水(方法)=》 洗衣机.漂洗(方法)=》 洗衣机.清洗(方法)=》 洗衣机.甩干(方法)

2. 生活举例:打扫卫生

面向过程:

遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。

家里打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把家里卫生打扫干净了。

面向对象:

遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。

家里打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如小明擦玻璃、让小丽扫地、让小郭拖地、让小强倒垃圾等”,这里的“小明、小丽、小郭、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把卫生打扫干净了。

优缺点对比

面向过程:

优点:

缺点:

面向对象:

优点:

缺点:

面向对象三大特征

封装

封装是面向对象编程的核心思想,简单点说就是,我把某些东西封装起来,这些关键的核心的东西不能给你看,但是我可以提供给你一些简单使用的方法。

就说现在最最常用的手机,人人都会用,打电话、发短信、玩游戏、刷视频等等,但你知道手机怎么实现这些功能的吗??不知道吧,我们会用就可以了,怎么实现的对我们来说不重要。那这就很类似封装的理念了。

封装其实是对外隐藏复杂细节,提供简单易用的接口。在Java中这种隐藏或公开是通过权限修饰符来实现

  • 通过封装,我们可以保护代码被破坏,提高数据安全性。
  • 通过封装,我们提高了代码的复用性(有些方法、类在很多地方都能多次反复使用)。
  • 通过封装,带来的高内聚和低耦合,使用不同对象、不同模块之间能更好的协同。

继承

派生类(子类)可以继承基类(父类)的方法,我们可以将多个类 共有

编程思维是一种什么思维?_青少年编程_03

在现实世界中也有很多例子的。例如:父亲很有钱,儿子可以继承父亲的产业,也可以有钱。家鸡和野鸡都属于鸡这个类别,那么它们肯定也都有鸡所属的共同特征

多态

多态是同一个行为具有多个不同表现形式或形态的能力。指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

编程思维是一种什么思维?_面向对象_04

例如上边的图片,我们平常把它叫做家养的猫🐱,同时它也属于猫科动物,我们又可以把它叫做有生命的动物。即在不同时刻有多种表现形态。

再举个栗子,你的女盆友让你买点 水果


上边介绍了这么多,其实每个人的理解可能都有偏差,主要我们还是要在平时的工作实践当中多思考、多总结。行成于思 愿我们终能守得云开见月明