当前位置: 首页 > news >正文

关于“程序=数据结构+算法”的深层认识

最近在学习C语言编写的单片机程序,想到了以前上学的时候的一句名言“程序=数据结构+算法”,我现在对这句话有了一些自己的想法,记录下来希望对大家有所帮助,如果大家有不同意见,希望指出来,反驳我。

首先,程序=数据结构+算法,这个是静态过程,也就是从程序烧写到CPU上电这个阶段。(CPU未工作,数据未得到读写操作,函数未得到运行和产生返回值)

(1)数据结构

首先数据结构是一种概念,用于描述某一种物体的特性。它是一种类似于概念或者思想的东西。我可能说的不清楚,我在这里想表达的是数据结构是一种人类对实物特性的描述,可以用自然语言描述出来,大家理解他为一种概念,一种名词,一种形而上学的东西即可。

“数据类型是数据结构的计算机编程语言的具体实现方式”,例如数据结构是一种关于链表的概念,数据类型就是用C语言定义一个结构体类型实现这个数据结构。

struct Node                /*这个结构体就是数据类型,是数据结构的实现方式*/

{

        int data;

        struct Node *pNext;

};

“数据变量是数据类型的实例化”,数据变量是占用内存的,是数据类型的实例化。

举个例子:数据结构相当于一个“图纸或者蓝图”,数据类型相当于根据“图纸或者蓝图”做的磨具,数据变量相当于根据数据类型这个“模具”完成的多个变量。也就是图纸和模具只有一个,但是产品有好多个。数据结构和数据类型都是只有一个,但是数据变量可以有好多个,数据变量的类型一直,但是占用内存不同。

(2)算法

首先,算法等同于方法,也就是解决某一个具体问题的相关步骤的集合,可以使用人类自然语言进行描述或记录。算法是一种抽象的概念。它主要针对如果解决某一个问题,而不在乎用什么具体语言实现。

函数是根据算法的内容使用计算机编程语言所写的代码,注意函数是占用外存空间的,是已近实现了的指令集,需要烧写到计算机的外存设备中。

总计:程序=数据结构+算法,更侧重用人类的自然语言实现。(专业:计算机科学,科学家,学者,他们甚至可以不懂计算机语言,例如C语言)。

程序=数据变量+函数,更倾向于用计算机语言实现(专业:计算机工程,打工人,劳动者,想不到那些具体方法,但是可以使用计算机语言实现它)。

(3)程序运行时的表现。到现在已经有了数据变量,也有函数,这就是编写好的程序了。通过编译器或者交叉编译工具链形成一个可执行的bin文件或者hex文件。然后通过烧写工具烧写到单片机的外存中,等待CPU上电。

当烧写程序和上电完成后,CPU就开始执行程序了,执行过程就表现为数据变量不断的被读写,以及函数不断的被传递参数并产生返回值。这就是程序运行时的表现。

从宏观上看就是,程序不断在跑,各个功能在不断运行。

http://www.dtcms.com/a/350121.html

相关文章:

  • Java图形图像处理【双缓冲技术与游戏】【九】
  • Java全栈开发面试实战:从基础到微服务的深度解析
  • IDEA2022开启新版UI
  • 系统架构设计师备考第4天——计算机软件概述操作系统
  • Aligning Effective Tokens with Video Anomaly in Large Language Models
  • 储能防逆流:智能守护电网稳定的核心技术
  • 大数据毕业设计选题推荐-基于大数据的餐饮服务许可证数据可视化分析系统-Spark-Hadoop-Bigdata
  • 阿里云OSS文件上传_对象存储服务全流程
  • Android横竖屏切换的“数据保卫战”:如何优雅地保存和恢复表单数据
  • 用 python 开发一个可调用工具的 AI Agent,实现电脑配置专业评价_python ai agent
  • 常见前端性能优化讲解
  • 在分布式计算区域中通过VPC搭建私有网络
  • Ansible 任务控制与事实管理指南:从事实收集到任务流程掌控
  • Hadoop(四)
  • 【GPT入门】第59课 大模型内存计算指南:7B/8B/70B 模型在 32/16/8/4bit 精度下的内存需求测算
  • 【GPT5的多个子模型和动态路由分别是什么?】
  • 深度学习分类网络初篇
  • AI与自动化工具对比与选择
  • Coze用户账号设置修改用户密码-前端源码
  • 用一根“数据中枢神经”串起业务从事件流到 Apache Kafka
  • Flume中常见的易错的问题
  • Linux应用软件编程---网络编程(TCP:[ 其他机制、头部标志位、应用示例 ]、 HTTP:[ 万维网、概念、格式、报文、应用示例 ]
  • LoRA 微调后幻觉排查 Checklist
  • JVM之【执行引擎系统】
  • IntelJ IDEA配置GitLab教程
  • 浅谈为什么尾递归更高效?——从调用栈和汇编的视角
  • 第三方软件检测机构的核心作用(二)
  • 【AI编程】如何快速通过AI IDE集成开发工具来生成一个简易留言板系统
  • 区块链技术原理(18)-以太坊共识机制
  • 微美全息(NASDAQ:WIMI)研究基于区块链的空间数据交易框架