热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

如何用把大象装进冰箱|三种不同的编程思想辨析|祝大家中秋快乐

大家好,我是小鱼,祝大家中秋快乐。今天聊一聊快乐的话题,如何使用三种不同的编程思想将大象装进冰箱。要做机器人离不开计算机编程ÿ

大家好,我是小鱼,祝大家中秋快乐。

今天聊一聊快乐的话题,如何使用三种不同的编程思想将大象装进冰箱。

要做机器人离不开计算机编程,而计算机编程经过多年的发展,演变出了三种不同且常用的编程思想,分别是:


  1. 面向过程编程思想。缩写:POP
  2. 面向对象编程思想。缩写:OOP
  3. 函数式思想。缩写:FP

1.Why

为什么了解这些编程思想呢?尤其是OOP。

小鱼遇到过很多同学,在阅读机器人相关开源程序代码时,比如导航框架Nav2、机械臂运动控制框架Moveit时发现,别人的代码,每一行好像都看得懂,但放一起就看不懂了,看别人函数调来调去,很快人就给整蒙了。不知道如何下手。

这其实就是对别人的编程思想不了解造成的,所以本节课小鱼就给提一提常见的三种编程思想,让大家脑子里有个概念,以后遇到了看不明白的程序,知道该往哪个方向去学习。

编程思想博大精深,小鱼这里三种概念的基本介绍。


2.思想辨析

首先明确一件事情,编程是为了什么?

是为了赚钱吗?

不,我们写程序肯定是为了解决实际的问题的,那编程思想编程思想就是解决问题的思路(赚钱工具)

那这三种思想有什么区别呢?


2.1 用三种思想把大象装进冰箱

比如我们想把一只大象装进冰箱,分别用三种思想,我们看看有什么不一样。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdOGMzCB-1631980070285)(3.5.3OOP介绍/imgs/image-20210918165813562.png)]


2.2 面向过程思想

如果我们采用面向过程的思想,可以分为三步:


  1. 打开冰箱门
  2. 把大象塞进去
  3. 关上冰箱门

面向过程编程就是分析出解决问题所需要步骤,然后分别实现每一步,再一步步执行即可。


2.3 面向对象思想

面向对象编程思想(OOP)怎么做呢?

那就要先知道面向对象是什么?搞清楚啥是对象?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZ23en6R-1631980057328)(3.5.3OOP介绍/imgs/3381e4c0ca704f4ba817d12e18b5ebe6.jpeg)]

对象是女朋友吗?答案肯定不是。

任何我们想要探究的事物都可以当作一个对象,比如我们可以把你家的冰箱理解为一个对象,我们就可以研究你家冰箱由哪些部分(指令装置等)组成,你家冰箱能干什么(制冷、调温等)?

接着我们开始下定义,就是取个高大上的名字

对象的行为其实是对其属性的操作,比如对制冷器操作就可以制冷,给灯带通电就可以照明。

对象 = 属性+行为

接着我们开始采用OOP的方法把大象装进冰箱


  1. 调用:冰箱->打开门(行为)
  2. 调用:冰箱->装东西(行为)
  3. 调用:冰箱->关闭门(行为)

看起来和面向过程没啥区别,但我们的思想发生了重大的转变,我们把冰箱当作了一个独立的对象,我们是通过和冰箱这个对象交互完成了整个过程。


2.4 函数式编程

接着来看函数式编程


  1. 定义关进(冰箱,大象)函数
  2. 实现函数:关门(放入(开门(冰箱),大象))

可以看到多层的函数嵌套调用,这就是函数编程的魅力,因为FP不是我们的机器人学习中的重点,这里就不过多讲解啦!


3.写在最后

三种编程思想中,对我们最机器人而言,了解前两种就够了。但看ROS2官方给的example中,连第三种FP都给出了样例。这是一件好事,只有大家越来越规范,我们的代码的复用率才会越来越高,才能一起实现更复杂功能。

我是小鱼,祝大家中秋快乐~


推荐阅读
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 随着机器人技术的不断进步,波士顿动力公司近期的创新成果再次吸引了公众的目光。特别是其Atlas机器人完成高难度后空翻动作,标志着机器人运动能力的重大突破。 ... [详细]
  • 概率图模型中的条件概率分布(CPD)详解
    条件概率分布(Conditional Probability Distribution, CPD)是概率图模型中的核心概念之一,用于描述随机变量在给定条件下遵循的概率分布。本文将深入探讨CPD的不同类型及其在实际问题中的应用。 ... [详细]
  • C语言入门精选教程与书籍推荐
    本文精选了几本适合不同水平学习者的C语言书籍,从基础入门到进阶提高,帮助读者全面掌握C语言的核心知识和技术。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 探讨了一个机器人从m x n网格的左上角出发,仅能向右或向下移动,最终到达右下角的所有可能路径数量的问题。 ... [详细]
  • 江苏启动鲲鹏生态产业园首批应用孵化项目
    2019年9月19日,在华为全联接大会上,江苏鲲鹏生态产业园正式启动了首批鲲鹏应用孵化项目。南京市委常委、江北新区党工委专职副书记罗群等多位嘉宾出席并见证了这一重要时刻。 ... [详细]
  • 小度科技完成B轮融资,估值突破330亿
    8月24日,百度宣布其智能生活事业群组业务——小度科技成功完成B轮融资,估值达到330亿元人民币。此次融资的具体投资方尚未公布。 ... [详细]
  • 古月居课程四足机器人控制与仿真入门笔记,视频链接:link四足机器人足端轨迹规划--摆线摆线定义模型表示matlab程序摆线定义摆线,又称 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 首尔国立大学推出教育性乌龟机器人Shelly:引导儿童正确对待智能设备
    在最近的ACM/IEEE人机交互会议上,来自首尔国立大学的科学家们介绍了一款创新的乌龟机器人——Shelly。这款机器人设计独特,能够对环境中的触碰和打击作出响应,通过改变颜色和收回四肢来模拟恐惧反应,旨在教育孩子们理解并尊重机器人的感受。 ... [详细]
  • 多智能体深度强化学习中的分布式奖励估计
    本文探讨了在多智能体系统中应用分布式奖励估计技术,以解决由于环境和代理互动引起的奖励不确定性问题。通过设计多动作分支奖励估计和策略加权奖励聚合方法,本研究旨在提高多智能体强化学习(MARL)的有效性和稳定性。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
  • 本文由蕤内撰写,明亮公司出品,探讨了日本零售业在数字化转型中的现状与挑战。文章基于与两位在日本的投资人的深入对话,分析了日本零售业为何仍然依赖传统的POS机系统,以及中日两国在品牌建设和数字化营销上的差异。 ... [详细]
  • 题目编号:1473 时间限制:1秒 内存限制:128MB 提交次数:99 解决次数:60 ... [详细]
author-avatar
手机用户2502905117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有