展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 编程范式,程序员的编程世界观

编程范式,程序员的编程世界观

编程范式是程序员看待程序的视角,包括过程化、事件驱动和面向对象等类型。过程化编程模仿冯·诺伊曼机运行机制;事件驱动编程由用户交互激发;面向对象编程以封装、继承、多态为核心,将程序视为对象间的对话。不同语言可支持多种范式。

本文目录

    编程范式(Programming Paradigm)这个概念,说白了就是某种编程语言典型的编程风格或方式。随着软件工程和编程方法学的发展,尤其是面向对象思想普及之后,“范式”这个词才逐渐进入大家的视野。面向对象编程(OOP)常被捧为革命性思想,正因为它和其他编程范式截然不同。其实,理解编程范式,可能是学习任何一门编程语言时最重要的门槛。

    托马斯·库恩提出“科学的革命”范式论之后,Robert Floyd在1979年图灵奖颁奖演说中首次使用了“编程范式”一词。以OOP为例,它通常包含三个维度:

    学科的逻辑体系——规则范式:比如类/对象、继承、动态绑定、方法改写、对象替换这些机制。心理认知因素——心理范式:按照面向对象之父Alan Kay的说法,“计算就是模拟”。OOP非常重视隐喻的价值,通过拟人化,以自然的方式模拟自然。自然观/世界观——观念范式:强调程序的组织技术,把程序看作松散耦合的对象/类的集合,用继承机制将类组织成层次结构,程序运行就是相互服务的对象之间的对话。

    简单来说,编程范式就是程序员看待程序应该抱有的视角。

    为了加深理解,下面介绍几种最常见的编程范式。需要提醒的是:编程范式是编程语言的一种分类方式,它并不限定于某一种语言。一种编程语言完全可以适用多种范式。

    过程化(命令式)编程

    过程化编程,也叫命令式编程,是最原始、也最熟悉的传统方式。本质上,它是“冯·诺伊曼机”运行机制的抽象,编程思路源于计算机指令的顺序排列。也就是说,过程化语言模拟的是计算机的机器系统结构,而不是基于语言使用者的个人能力。这一点很好理解,比如早期单片机的汇编语言就是典型例子。

    过程化编程的步骤是这样的:首先,把待解问题的解决方案抽象成一系列概念化的步骤;然后通过编程将这些步骤转化为指令集(算法),这些指令按一定顺序排列,说明如何执行任务或解决问题。这意味着程序员必须清楚程序要做什么,并告诉计算机每个细节操作。简言之,就是把计算机看作一个绝对服从命令的装置。

    因此,过程化编程的关键在于将问题规范化、抽象为算法。其次才是编写具体算法并实现正确解决。当然,程序员对问题的抽象能力也很重要,但这已经与编程语言本身无关了。程序流程图是过程化编程很有效的辅助工具。

    目前几乎所有支持过程化范式的语言都被归为过程化语言,例如机器语言、汇编语言、BASIC、COBOL、C、FORTRAN等许多第三代编程语言。过程化语言特别适合解决线性(按部就班)的算法问题,强调“自上而下”、“精益求精”的设计方式。这种方式很像我们的日常生活——都是按顺序进行的。过程化语言开发的程序通常运行较快,对系统资源利用率高,灵活且强大,有大量经典应用范例,程序员可以用它解决多种问题。

    但它的不足之处也很明显:不适合解决非结构化的复杂算法问题。因为过程化语言必须对算法详尽说明,包括执行顺序,而给非结构化复杂问题给出详尽的算法极其困难。还有一个争议焦点:无条件分支(goto语句)。反对者认为它可能被无限滥用,给程序设计制造混乱。目前共识是保留在大多数语言中,但通过设计规范将其风险最小化。

    事件驱动编程

    其实,事件驱动编程在图形用户界面(GUI)出现很久以前就已经存在,但直到GUI广泛流行后,它才演变为一种主流程序设计模式。在过程式程序中,代码本身规定了执行顺序,尽管可能受输入数据影响。而在事件驱动编程中,程序很多部分会在完全不可预料的时刻执行,通常由用户与程序的交互激发。

    事件,就是通知某个特定事情已经发生(具有随机性)。事件与轮询的区别在于:轮询是不断观察判断,无休无止;而事件是静静等待事情发生。事实上,在Windows出现之前,采用鼠标输入的字符模式PC应用程序必须进行串行轮询,以此查询和响应不同用户操作。事件处理器,就是对事件做出响应时执行的一段代码,它让程序能对用户行为作出反应。

    事件驱动常用于用户与程序的交互,通过图形用户接口(鼠标、键盘、触摸板)进行互动,当然也可用于异常处理或响应用户自定义事件。事件异常处理比用户交互更复杂。事件驱动不仅限于GUI编程,但实现它还需要考虑很多实际问题:事件定义、触发、转化、合并、排队、分派、处理、连带等等。

    到目前为止,还没有找到纯事件驱动编程的语言和开发环境。所有关于事件驱动的资料基本都基于GUI事件。属于事件驱动的编程语言有VB、C#、Ja va(Ja va Swing的GUI)等,它们涉及的事件绝大多数都是GUI事件。

    面向对象编程

    过程化范式要求程序员用按部就班的算法看待每个问题,但显然不是所有问题都适合这种思维方式。这就催生了其他范式,包括面向对象编程。OOP已出现二十多年,设计思想和模式已稳定进入主流编程语言。来自TIOBE Programming Community 2010年11月编程语言排名前三的Ja va、C、C++中,Ja va和C++都是面向对象语言。

    面向对象编程包含三个基本概念:封装性、继承性、多态性。通过类、方法、对象和消息传递来支持其范式。

    1. 对象
    世间万事万物都是对象。面向对象的抽象机制是将待解问题抽象为程序中的对象,利用封装使每个对象拥有独立的身份。程序就是一堆对象,彼此通过消息传递请求其他对象工作。

    2. 类
    每个对象都是其类中的一个实体。物以类聚——类就是相似对象的集合。类中的对象可以接受相同的消息。换句话说,类包含并描述了“具有共同特性(数据元素)和共同行为(功能)”的一组对象。比如苹果、梨、橘子都属于水果类。

    3. 封装
    封装(有时也叫信息隐藏)就是把数据和行为结合在一个包中,对对象的使用者隐藏数据的实现细节。信息隐藏是OOP的基本原则,封装是实现这一原则的方式。封装使对象呈现“黑盒子”特性,这是对象重用和实现可靠性的关键。

    4. 接口
    每个对象都有接口。接口不是类,而是对符合接口需求的类所作的一套规范。接口说明类应该做什么,但不指定如何做。一个类可以有一个或多个接口。

    5. 方法
    方法决定了某个对象究竟能接受什么样的消息。面向对象的设计有时可以简单归纳为“将消息发送给对象”。

    6. 继承
    继承的思想是在已存在类的基础上构建新类。子类能继承父类的所有成员,包括属性和方法。继承的主要作用:通过实现继承完成代码重用,通过接口继承完成代码被重用。继承是一种规范技巧,而非实现技巧。

    7. 多态
    多态提供了“接口与实现分离”。它不仅能改善程序的组织架构和可读性,更利于开发出“可扩充”的程序。继承是多态的基础,多态是继承的目的。合理运用基于类继承、接口继承和模板的多态,能增强程序的简洁性、灵活性、可维护性、可重用性和可扩展性。

    面向对象技术一方面借鉴了哲学、心理学、生物学的思考方式,另一方面它建立在其他编程技术之上,是以前编程思想的自然产物。如果说结构化软件设计是将函数式编程技术应用到命令式语言中,那么面向对象编程不过是将函数式模型应用到命令式程序的另一途径——模块进步为对象,过程龟缩到类的成员方法中。OOP的很多技术,比如抽象数据类型、信息隐藏、接口与实现分离、对象生成功能、消息传递机制等,其实在结构化软件设计或其他语言中已单独出现。但只有在面向对象语言中,它们才共同出现,以一种独特的合作方式互相协作、互相补充。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。