news 2026/10/18 5:12:19

《Eigen入门》第 1 章 · 计算机与编程是什么

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《Eigen入门》第 1 章 · 计算机与编程是什么

本系列逐章讲解eigen库。

学编程之前,先搞懂"程序到底是什么"。本章不用写代码,但会帮你建立正确的认知,后面学起来事半功倍。

1.1 计算机是一台"听话的机器"

计算机(电脑)本质上是一台只会执行简单指令的机器。它没有"聪明"可言,你让它做什么,它就做什么,一个字都不差。

它的核心部件只有几个:

部件作用类比
CPU(中央处理器)执行计算和指令大脑
内存(RAM)临时存放正在用的数据书桌(桌面)
硬盘(磁盘)长期存放数据书柜
输入/输出设备键盘、鼠标、屏幕眼睛、嘴、手

理解 CPU 和内存的关系非常重要,后面会反复用到:

  • CPU 只能处理内存里的数据。硬盘里的数据要先"读"到内存,CPU 才能用。
  • 内存是临时的,断电就没了;硬盘是永久的,断电还在。
  • 内存很快但容量小,硬盘慢但容量大。

1.2 程序是什么

程序(program)= 一串指令。它告诉计算机:先做什么、再做什么、遇到什么情况怎么办。

比如"计算两个数的和"这个程序,翻译成计算机能懂的指令,大致是:

  1. 从内存里取出第一个数
  2. 取出第二个数
  3. 把两个数加起来
  4. 把结果存回内存
  5. 把结果显示到屏幕上

就这么简单。再复杂的软件——微信、游戏、自动驾驶——拆开看,都是无数个这样简单步骤的堆叠。

1.3 编程语言:人和机器之间的"翻译官"

问题来了:CPU 只认识机器码(一串 0 和 1,比如10110000 01100001)。让人直接写 0 和 1,会疯掉。

于是人们发明了编程语言,它是一套人容易读写的规则。比如:

intsum=a+b;// 用人话写,就是"把 a 加 b 的结果存到 sum 里"

编程语言分两大类:

  • 低级语言:贴近机器,难写但快(如汇编语言)。
  • 高级语言:贴近人类,好写好读(如 C++、Python、Java)。

C++ 是一门高级语言,但它的特点是"高级语言的外表,低级语言的控制力"——既能写得像人话,又能精细控制硬件,所以又快又灵活。

1.4 编译:把"人话"翻译成"机器话"

用高级语言写的代码(叫源代码),机器看不懂。需要一个"翻译官"把它翻译成机器码。这个翻译官叫编译器。

翻译方式有两种:

方式代表语言特点
编译型C++、C、Rust先整体翻译成机器码(生成 .exe),再运行。运行快
解释型Python、JavaScript边读边翻译边运行。开发快,但运行慢

C++ 是编译型语言。所以写 C++ 的流程是:

写源代码 (.cpp) → 编译 (编译器) → 生成可执行文件 (.exe) → 运行

这个"先编译、再运行"的流程,你会在第 2 章亲手走一遍。

为什么要学 C++?

C++ 又快又灵活,是高性能计算的首选。游戏引擎(虚幻引擎)、机器人(ROS)、计算机视觉(OpenCV)、科学计算、量化交易、操作系统……大量底层和高性能场景都在用 C++。而Eigen正是 C++ 生态里最常用的科学计算库之一,学会 C++ 是掌握 Eigen 的前提。

1.5 写程序的完整流程(心中有数)

以"写一个计算程序"为例,完整流程是:

  1. 分析问题:要算什么?输入是什么?输出是什么?
  2. 设计算法:用什么步骤算出来?(算法 = 解决问题的步骤)
  3. 写代码:用 C++ 把步骤写下来
  4. 编译:用编译器翻译成机器码
  5. 运行测试:跑起来,看结果对不对
  6. 调试修改:错了就找 bug、改、再编译

编程的本质,就是把解决问题的步骤,用编程语言精确地描述出来。你的价值在于"想出步骤",而"敲代码"只是把想法写下来。

1.6 什么是"算法"

算法(algorithm)就是解决某类问题的明确步骤。它和编程语言无关——你可以用中文描述算法,也可以用 C++ 描述。

举例,计算1 + 2 + 3 + ... + 100:

  • 算法 A(笨办法):1+2=3,3+3=6,6+4=10…… 加 99 次。
  • 算法 B(聪明办法):用公式(1+100) × 100 ÷ 2 = 5050,一步搞定。

两个算法都能得到正确答案,但 B 快得多。学习编程,一半是在学"如何设计好的算法"。

1.7 小结

  • 计算机只会执行简单指令,程序就是一堆指令。
  • CPU 处理内存里的数据,内存临时、硬盘永久。
  • 编程语言是人和机器之间的翻译官。
  • C++ 是编译型高级语言:写源码 → 编译 → 运行。
  • 算法是解决问题的步骤,编程是把步骤写下来。

下一章,我们装上编译器和编辑器,亲手写出并运行你的第一个 C++ 程序。


练习题

  1. 用自己的话说说:CPU、内存、硬盘分别是什么?它们之间有什么关系?
  2. 编译型语言和解释型语言的区别是什么?C++ 属于哪一种?
  3. 用中文描述一个算法:“判断一个数是奇数还是偶数”。
  4. 为什么说"编程的本质是把解决问题的步骤精确地描述出来"?

这类题没有标准答案:写下你自己的说法就行。读完第 2 章(环境与第一个程序)后回头看一遍,能把自己的描述改成机器听得懂的步骤,就是合格。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 5:11:18

视觉上位机、PLC 通信和 Web 看板的积累,这一篇把“全栈架构、登录注册、数据库交互、设备通信”串成一个可落地的视觉系统全栈工程方案

视觉上位机、PLC 通信和 Web 看板的积累,这一篇把“全栈架构、登录注册、数据库交互、设备通信”串成一个可落地的视觉系统全栈工程方案。一、全栈架构:四层分离,各司其职 一套视觉上位机系统如果只写成一个 WinForms 的 Form1.cs&#xff0c…

作者头像 李华
网站建设 2026/10/18 5:10:07

Kafka进阶安装实战:版本选型、集群配置与排错指南

先说个事:上一篇我把Kafka的单机安装流程写得比较细,基本上能把服务拉起来、能收发消息就算通关了。但很多朋友装完单机之后,紧接着就会撞上一连串问题——advertised.listeners写错导致生产者连不上、集群模式复制几份配置忘了改broker.id、…

作者头像 李华
网站建设 2026/10/18 5:09:19

纯静态HTML个人网页模板:大学生期末大作业与课程设计实战指南

简介:这份资源面向正在准备网页设计期末大作业的大学生及HTML初学者,提供多套可直接参考的静态个人网页与个人博客模板,帮助解决作业数量多、无从下手、找不到合适模板等常见困扰。压缩包共收录4261个文件,整体约142.4MB&#xff…

作者头像 李华
网站建设 2026/10/18 5:08:47

Codex桌面端与WorkBuddy CLI组合:本地网关与缓存实现零积分消耗

最近我把 Codex 桌面端和 WorkBuddy CLI 串在一起用了一套组合方案,折腾了一个多星期,终于把调用积分的消耗压到了几乎为零。这套搭配解决的问题很直接:桌面端适合交互式生成、看上下文、即时改代码;CLI 适合批量任务、无人值守、…

作者头像 李华
网站建设 2026/10/18 5:08:46

从 ABAP Cloud 到外部系统,完整理解 Inbound Integration Service 的暴露机制

企业系统真正进入集成阶段以后,经常会碰到这样一类需求,外部系统需要主动调用 SAP,在 SAP 里查询数据、提交业务单据、触发业务动作,或者读取一批用于分析的数据。 这里的方向很关键。 请求不是从 SAP 发出去,而是从外部系统进入 SAP。 在 ABAP Cloud 的术语体系里,这…

作者头像 李华
网站建设 2026/10/18 5:08:21

AI智能体循环工程-第13章第1节-企业级综合项目-项目总览需求PR审查全自动流水线架构设计

第1节 项目总览:需求→PR→审查全自动流水线架构设计 一句话总结:用一张架构图定义最终项目——票据库为脊椎、分诊/修复/审查三个子循环、看板与通知、验证门禁;模块划分与技术选型的全部理由,外加仓库骨架和基建代码的第一行。 …

作者头像 李华