首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
从炒菜理解编程范式核心概念与分类详解

从炒菜理解编程范式核心概念与分类详解

热心网友
65
转载
2026-05-07

过程式编程

生活经验告诉我们一个朴素的物理现实:事情总是按照时间顺序,一步接一步地发展。编程世界里有一个范式,恰恰模拟了这种经验,它就是过程式编程。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

举个例子,如果现在有一把刚从超市买回来的菜,要把它变成腹中餐,用过程式编程的思路来描述,大概是这样的:

洗(菜)

切(菜)

炒(菜)

吃(菜)

熟悉过程式编程的朋友一眼就能看出来,这里的动词对应着函数,而括号里的名词则是函数的参数。整个流程清晰直白,就像一份烹饪 checklist,按部就班执行即可。

函数式编程

仔细观察上面过程式编程对“炒菜”这个问题的描述,不难发现一个有趣的现象:这四步的名词都是“菜”,但动词却各不相同。

那么,我们不妨换个思路。本质上,我们所做的一切,其实是不断改变“菜”的状态:

1) 首先,通过“洗”这个动作,把“菜”变成“干净的菜”。也就是说,洗(菜) 的结果是得到“干净的菜”。

2) 接着,“干净的菜”再通过“切”这个动作,变成“切好的菜”。注意,这里“切”的对象是上一步的结果,也就是“洗(菜)”。所以,这一步的整体动作是 切(洗(菜))。

3) 然后,“切好的菜”通过“炒”变成“熟的菜”。于是,工作链变成了 炒(切(洗(菜)))。

4) 最后,“吃”的对象是“炒好的菜”。整个流程最终汇聚成一个表达式:吃(炒(切(洗(菜))))。

所以,代码就变成了:

吃(炒(切(洗(菜))))

看,这和过程式编程的写法差别就很大了。它突出的不是步骤,而是将对象通过一系列动作(函数)进行连续变换。这种以函数为核心,通过组合与变换来构建程序的范式,就是函数式编程。

逻辑式编程

逻辑式编程则提供了另一种截然不同的思路。它强调的是,我们先定义好一系列已知的事实和规则,然后让系统基于这些事实,自动推导出合理的结果。

用代码来表达,可能长这样:

洗干净的菜 <- 洗(脏的菜)

切好的菜 <- 切(洗干净的菜)

炒好的菜 <- 炒(切好的菜)

吃菜 <- 吃(炒好的菜)

? 吃菜 <- 脏的菜

问号“?”代表我们提出的具体查询目标,而其他几行则是事先声明好的事实。这些事实的排列顺序并不重要。系统的工作,就是根据“脏的菜”这个初始条件,自动匹配并推导出达成“吃菜”目标所需的步骤链。

仔细想想,这像不像人类的学习和解决问题过程?我们先积累一堆看似独立的知识点,当遇到问题时,大脑便在已知的知识网络中搜索、关联,最终拼凑出解决方案。正因为这种特性,逻辑式编程在早期人工智能领域得到了广泛应用。

面向对象编程

面向对象编程并非一个孤立的范式,它通常需要与上述的某一种编程范式(如过程式)结合使用。我们最常见的面向对象编程,其内核往往就是过程式的。

面向对象的思想,核心在于“抽象”。它将程序要处理的事务抽象为数据(属性)和方法(行为),再把相关的数据和方法打包,抽象成一个“对象”。更进一步,在多个对象之间提取共性,便形成了“类”。这就是封装。再引入继承、多态等特性,来描述和构建类与类之间的关系。

回到炒菜的例子,整个过程都围绕着“菜”这个核心。那么,我们可以把所有与菜相关的属性和操作,看作一个整体对象。用面向对象的方式来描述,代码风格就变成了:

菜.洗()

菜.切()

菜.炒()

菜.吃()

看,主语(对象“菜”)始终在前,动作在后。这更贴近我们自然的语言表达:“菜,你去洗一下;然后,切一下……”。

回到计算机

计算机科学中的许多概念,其灵感都来源于生活。但很多时候,生活中的经验表达不够规范和精确。而计算机科学要做的,正是将这些经验形式化、规范化,并引入更抽象的工具(比如数学),以便能够反复、可靠地应用,甚至推广到更广泛的领域。

上面列举的几种编程范式,其思维重心各有明显差异。学习不同的范式,本质上是为了让我们能够从不同角度看待和分解问题,从而拓宽思路,找到最合适的那把“解题钥匙”。毕竟,多一种思维方式,就多一条解决问题的路径。

转载自:

https://www.cnblogs.com/Colin-Cai/p/9431665.html

转载于:https://www.cnblogs.com/faithfu/p/10144171.html

来源:https://blog.csdn.net/weixin_30618985/article/details/95196541
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

“失速”的高通,正在重新定义自己
业界动态
“失速”的高通,正在重新定义自己

高通的中年突围:AI故事能否撑起下一个十年? 四月底,科技圈接连传来两则消息,颇值得玩味。先是天风国际分析师郭明錤透露,OpenAI正与高通、联发科联手,开发以人工智能为核心的智能手机处理器,潜在量产时间指向2028年。报道也谨慎提醒,相关公司并未立即回应,且OpenAI探索的硬件形态未必是传统手机

热心网友
05.06
2026年AI办公助手全景实测:多场景效率工具选型指南
AI
2026年AI办公助手全景实测:多场景效率工具选型指南

2026年AI办公助手全景实测:多场景效率工具选型指南 过去七年,AI工具的发展轨迹清晰可见:从实验室里的新奇问答机器人,一路走到每个人的工位旁,最终演变为能够独立执行复杂任务的“数字同事”。回想早期,我们只是试探性地让AI帮忙写几句邮件;而如今,AI的触角已广泛渗透到职场的各个角落,从内容生成到跨

热心网友
05.06
网信部门公布一批典型案例
科技数码
网信部门公布一批典型案例

网信部门通报“自媒体”违规案例 涉未标注来源及AI生成标识 近期,网络信息内容生态治理领域又有新动向。据中央网信办公布的情况,一批“自媒体”账号因在发布信息时未按规定标注来源或标识,对公众认知造成误导,进而破坏了清朗的网络空间秩序。这再次提醒我们,信息传播的规范性绝非小事。 具体来看,这些违规行为主

热心网友
05.06
推动“人工智能+制造”走深走实
科技数码
推动“人工智能+制造”走深走实

推动“人工智能+制造”走深走实 本报记者 王俊岭 制造业的智能化转型,最近又迎来了一股强劲的推力。近日,工业和信息化部与国家数据局联合印发通知,正式启动了2026年的“模数共振”行动。这项行动瞄准了制造业领域的20个重点行业,计划选定一批重点城市,集中探索场景、模型、智能体、数据集、案例等关键技术成

热心网友
05.06
英伟达黄仁勋称人工智能创造就业机会,反驳“AI末日论”
科技数码
英伟达黄仁勋称人工智能创造就业机会,反驳“AI末日论”

英伟达黄仁勋称人工智能创造就业机会,反驳“AI末日论” 近日,英伟达首席执行官黄仁勋在一次公开讨论中,对当前流行的“人工智能末日论”提出了鲜明反驳。他认为,人工智能并非大规模失业的预兆,恰恰相反,它是一个能创造大量就业机会的“工业规模的就业机会生成器”。 黄仁勋进一步指出,人工智能产业正驱动着一种新

热心网友
05.06

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Bitget交易所2026年发展前景与市场排名深度解析
web3.0
Bitget交易所2026年发展前景与市场排名深度解析

2026年,Bitget在交易所排行榜上展现出强劲的竞争力。其表现主要体现在用户资产安全体系的持续加固、多元化产品矩阵的成熟与创新,以及在合规与全球化布局上的显著进展。平台通过优化现货与衍生品交易体验,并深化Web3生态建设,巩固了其在行业中的领先地位,获得了市场与用户的广泛认可。

热心网友
05.07
NET开发中HttpClient使用避坑指南与最佳实践详解
编程语言
NET开发中HttpClient使用避坑指南与最佳实践详解

HttpClient的7个常见陷阱与规避指南 在 NET 生态里进行项目开发,HttpClient 几乎是调用外部 API 绕不开的一个工具。它的上手门槛很低,用起来很顺手,但恰恰是这份“简单”,让不少开发者放松了警惕。如果不清楚它内部的运作机制,一不小心就可能掉进坑里,轻则请求失败,重则引发服务

热心网友
05.07
NETCore与Linux服务器时间同步问题的多种解决方案详解
编程语言
NETCore与Linux服务器时间同步问题的多种解决方案详解

如何解决 NET Core项目与Linux服务器之间的时间同步问题 导语 搞分布式系统的开发者,多少都踩过时间不同步的“坑”。这事说大不大,说小不小——日志对不上、订单乱取消、交易出岔子,追根溯源,往往是几台机器的时间“各走各的”。尤其是在 NET Core应用遇上Linux服务器的场景,时区、格式

热心网友
05.07
NET 4.7 如何使用 NLog 将日志记录到数据库
编程语言
NET 4.7 如何使用 NLog 将日志记录到数据库

1 首先安装必要的NuGet包 第一步,咱们得把项目里需要的“砖瓦”——也就是那几个关键的NuGet包——给准备好。具体是下面这几个: NLog:日志记录的核心库。 NLog Config (可选):如果你想让配置文件自动生成,可以加上这个。 当然,别忘了根据你用的数据库类型,安装对应的提供程序。

热心网友
05.07
NETCore消息队列RabbitMQ实现方法与代码示例
编程语言
NETCore消息队列RabbitMQ实现方法与代码示例

在 NET Core 中玩转 RabbitMQ:从零搭建可靠的消息队列 消息队列是现代应用解耦和异步通信的基石,而 RabbitMQ 无疑是这个领域的明星选手。它基于 AMQP 协议,为不同应用程序间的可靠消息传递提供了强大支持。今天,我们就来深入聊聊,如何在 NET Core 环境中,亲手搭建

热心网友
05.07