【计算机基础知识】三大编程思想

1.面向过程编程

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。
特性:模块化 流程化
优点:性能比面向对象高, 因为类调用时需要实例化,开销比较大,比较消耗资源;
单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

例如下面这个学生入学的例子:

第一个用户的信息
student_a = {
    'name': '小明',
    'age': 23,
    'gender': '男',
    # 座右铭
    'matto': '人生苦短, 我用python!'
}

第二个用户的信息
student_b = {
    'name': '小红',
    'age': 21,
    'gender': '女',
    # 座右铭
    'matto': '合理安排时间,就等于节约时间。'
}

第三个用户的信息
student_c = {
    'name': '小李',
    'age': 26,
    'gender': '男',
    # 座右铭
    'matto': '挫折不是惩罚而是学习的机会。'
}

def roll(studentDict):
    """
    入学过程封装的函数
    :return:
    """
    # 字典的get方法: 如果key值不存在, 直接返回为空;
    print("正在办理手续".center(20, '*'))
    print("正在注册用户[%s]信息" %(studentDict.get('name')))
    print("用户[%s]正在入学" %(studentDict.get('name')))
    print("用户[%s]正在上课" %(studentDict.get('name')))
    print("用户[%s]正在自我介绍" %(studentDict.get('name')))
    for key, value in studentDict.items():
        print(key, ':', value)

roll(student_a)
roll(student_b)
roll(student_c)

上面的代码就是典型的面向过程编程。
面向过程:根据业务逻辑从上到下写代码 。面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。

考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介
绍。而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁。
用我们的现实思维方式该怎么用程序表达呢?这就要用到面向对象的编程思想了。

面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

2. 函数式编程

函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。

主要思想: 把运算过程尽量写成一系列嵌套的函数调用。
例如:

def add(a,b):
    return a+b

def multi(a,b):
    return a*b

print(multi(add(1,2),add(2,3)))

Python 不是也不大可能会成为一种函数式编程语言,但是它支持许多有价值的函数式编程语言构建。也有些表现得像函数式编程机制(如:内建函数 filter()、map()、reduce()),但是从传统上也不能被认为是函数式编程语言的构建。

3.面向对象编程

面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。

特性:抽象 封装 继承 多态
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低

4.面向过程与面向对象的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象,例如五子棋。

面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

(0)

相关推荐

  • 【连载】(函数私有化)乐创DIY C语言讲义——4.6节

    4.6 函数私有化 C语言的语句非常简单,关键词也少得可怜,关于变量和函数的修饰符也就只有区区几个,因此一个关键词有时候有着多重含义,这也就是为何C语言明明非常简单,但是用起来又非常复杂的原因之一.C ...

  • 运维必知必备!73页计算机基础知识,新手小白也能轻松读懂

    基础不牢,地动山摇! 新手在学习运维亦或是开发的时候,都要注重基础知识的积累,不能只想着学习实战知识,这样到中后期,容易造成对"高级知识点"的一知半解,以至于知其然,却不知其所以然 ...

  • 计算机基础知识总结与操作系统 PDF 下载

    第一本是程序员必知的硬核基础知识,这是一本非常入门的经典 PDF,看完能让你对计算机有一个基础的了解和入门,是培养你 内核 的基础,我们看下目录大纲 基本上涵盖了计算机所有基础知识,从 CPU 到内存 ...

  • 计算机基础知识:关于硬盘你需要了解的一些东西!

    今天给大家聊聊计算机硬盘的知识. 硬盘是计算机最基本的部件,它的作用是存储数据,其作用不言而喻. 硬盘的外部结构 硬盘内部结构 计算机硬盘的接口形式有IDE接口.SCSI接口和串行接口(SATA接口) ...

  • 那些让你起飞的计算机基础知识

    高畅,在谷歌工作,目前研究方向是计算机视觉和机器学习. 他为了准备校招,刷了几百道算法题.研究了半年的LeetCode,凭着自己的努力,成为了当年的Offer收割机,包括字节跳动,快手,Google, ...

  • 【公基常识小考点】计算机基础知识

    计算机基础知识 一.计算机发展 (一) 世界计算机 1. 第一台计算机 世界上第一台计算机是ENIAC, 由美国于1946 年研制成功, 开辟了计算机技术的新纪元. 2. 计算机之父 冯·诺依曼参与E ...

  • 计算机基础知识

    计算机基础知识

  • 计算机基础知识 JAVA基础知识

    计算机基础知识 1.1 计算机 计算机(Computer)全称:电子计算机,俗称电脑.是能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.按照规模分为微型机.小型机.大型机.巨型机(超级计 ...

  • 计算机基础知识超强总结!全面详实、图文并茂,新手小白一学就会

    在当下,计算机成为一个不可或缺的工具,无论是学习.工作,还是生活中,都离不开它.为了让广大的学员了解计算机.用好计算机,进一步普及计算机基础知识. 今天给大家分享一份<计算机基础知识>,文 ...

  • 计算机基础知识超强总结

    不懂计算机基础,影响我们学习编程吗? 答案是:不影响,但会影响我们未来可以走多远,学多深! "知其然更要知其所以然!"我们已经毕业的学生中,有很多参加工作一两年后,都会在群里问我们 ...