本系列逐章讲解eigen库。学编程之前先搞懂程序到底是什么。本章不用写代码但会帮你建立正确的认知后面学起来事半功倍。1.1 计算机是一台听话的机器计算机电脑本质上是一台只会执行简单指令的机器。它没有聪明可言你让它做什么它就做什么一个字都不差。它的核心部件只有几个部件作用类比CPU中央处理器执行计算和指令大脑内存RAM临时存放正在用的数据书桌桌面硬盘磁盘长期存放数据书柜输入/输出设备键盘、鼠标、屏幕眼睛、嘴、手理解 CPU 和内存的关系非常重要后面会反复用到CPU 只能处理内存里的数据。硬盘里的数据要先读到内存CPU 才能用。内存是临时的断电就没了硬盘是永久的断电还在。内存很快但容量小硬盘慢但容量大。1.2 程序是什么程序program 一串指令。它告诉计算机先做什么、再做什么、遇到什么情况怎么办。比如计算两个数的和这个程序翻译成计算机能懂的指令大致是从内存里取出第一个数取出第二个数把两个数加起来把结果存回内存把结果显示到屏幕上就这么简单。再复杂的软件——微信、游戏、自动驾驶——拆开看都是无数个这样简单步骤的堆叠。1.3 编程语言人和机器之间的翻译官问题来了CPU 只认识机器码一串 0 和 1比如10110000 01100001。让人直接写 0 和 1会疯掉。于是人们发明了编程语言它是一套人容易读写的规则。比如intsumab;// 用人话写就是把 a 加 b 的结果存到 sum 里编程语言分两大类低级语言贴近机器难写但快如汇编语言。高级语言贴近人类好写好读如 C、Python、Java。C 是一门高级语言但它的特点是高级语言的外表低级语言的控制力——既能写得像人话又能精细控制硬件所以又快又灵活。1.4 编译把人话翻译成机器话用高级语言写的代码叫源代码机器看不懂。需要一个翻译官把它翻译成机器码。这个翻译官叫编译器。翻译方式有两种方式代表语言特点编译型C、C、Rust先整体翻译成机器码生成 .exe再运行。运行快解释型Python、JavaScript边读边翻译边运行。开发快但运行慢C 是编译型语言。所以写 C 的流程是写源代码 (.cpp) → 编译 (编译器) → 生成可执行文件 (.exe) → 运行这个先编译、再运行的流程你会在第 2 章亲手走一遍。为什么要学 CC 又快又灵活是高性能计算的首选。游戏引擎虚幻引擎、机器人ROS、计算机视觉OpenCV、科学计算、量化交易、操作系统……大量底层和高性能场景都在用 C。而Eigen正是 C 生态里最常用的科学计算库之一学会 C 是掌握 Eigen 的前提。1.5 写程序的完整流程心中有数以写一个计算程序为例完整流程是分析问题要算什么输入是什么输出是什么设计算法用什么步骤算出来算法 解决问题的步骤写代码用 C 把步骤写下来编译用编译器翻译成机器码运行测试跑起来看结果对不对调试修改错了就找 bug、改、再编译编程的本质就是把解决问题的步骤用编程语言精确地描述出来。你的价值在于想出步骤而敲代码只是把想法写下来。1.6 什么是算法算法algorithm就是解决某类问题的明确步骤。它和编程语言无关——你可以用中文描述算法也可以用 C 描述。举例计算1 2 3 ... 100算法 A笨办法1233366410…… 加 99 次。算法 B聪明办法用公式(1100) × 100 ÷ 2 5050一步搞定。两个算法都能得到正确答案但 B 快得多。学习编程一半是在学如何设计好的算法。1.7 小结计算机只会执行简单指令程序就是一堆指令。CPU 处理内存里的数据内存临时、硬盘永久。编程语言是人和机器之间的翻译官。C 是编译型高级语言写源码 → 编译 → 运行。算法是解决问题的步骤编程是把步骤写下来。下一章我们装上编译器和编辑器亲手写出并运行你的第一个 C 程序。练习题用自己的话说说CPU、内存、硬盘分别是什么它们之间有什么关系编译型语言和解释型语言的区别是什么C 属于哪一种用中文描述一个算法“判断一个数是奇数还是偶数”。为什么说编程的本质是把解决问题的步骤精确地描述出来这类题没有标准答案写下你自己的说法就行。读完第 2 章环境与第一个程序后回头看一遍能把自己的描述改成机器听得懂的步骤就是合格。