From 7428e039114c7227a3c847883812d734c990f1e5 Mon Sep 17 00:00:00 2001 From: star-os <9261081+stros@user.noreply.gitee.com> Date: Sat, 12 Jun 2021 15:12:11 +0800 Subject: [PATCH 1/3] add chap1 photo --- .../imgs/assembly_to_executable.926437cf.png | Bin 0 -> 26327 bytes .../imgs/compiler.adc1a3b1.png | Bin 0 -> 14388 bytes ...ing_languages_lowHighCompInterp.41e11926.png | Bin 0 -> 21846 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 chap-1-programming-a-computer/imgs/assembly_to_executable.926437cf.png create mode 100644 chap-1-programming-a-computer/imgs/compiler.adc1a3b1.png create mode 100644 chap-1-programming-a-computer/imgs/programming_languages_lowHighCompInterp.41e11926.png diff --git a/chap-1-programming-a-computer/imgs/assembly_to_executable.926437cf.png b/chap-1-programming-a-computer/imgs/assembly_to_executable.926437cf.png new file mode 100644 index 0000000000000000000000000000000000000000..563f2d3f8b32d17063bf6eb31222ca34bfd71148 GIT binary patch literal 26327 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
  • BK_H-?M;hN-FFc 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 B@m&A_ literal 0 HcmV?d00001 diff --git a/chap-1-programming-a-computer/imgs/compiler.adc1a3b1.png b/chap-1-programming-a-computer/imgs/compiler.adc1a3b1.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f71bab388c3c348120dc34a6fc6e8366ad0839 GIT binary patch literal 14388 zcmch;WmH^2*Ct9rfM6kn;1=8hgy3$$-5nC#-K`0M;O_43?oEK;?lkW1G}_%To%g$U z?w`4TX3aNi_3G}bI#qk0z4tj)_3V1Wloh2g(TLCx5D+kBq`#>mAiVa6|A)SP4gWUR z5E@57;D*S26IJ)jJYB=oSKE6Len#g){^eAW8}QZMG@f!jP%}U9{*^H@m^rRHF)fE$ zg=tz=Zaj8IcJ`XKiQJgmnBkLkdh9)#aTs+dHxDMqw^06{Q9UnP0~1_a$QV4tr?uImT-2i`{b4Rv*KaQO%Z7)=JR;J>iIDRcw`5vCwRctMu}3|DRnEe{_7 zAwctO7rd%b><|e7As1JS6<(-%?+x!`8T`N9#k|C}2zY%FxWbEx8I@Jfc{m(tpk3@f zF)@LRjJ#Zph7jQHs(1)HxxT=6c0|Oqy9#~()novJC8gpl9WGevAjnV@Hp`#7o;k=> zY?f6odRP`-E>NC5hyLcZoz@!!5gR@_ux#tfI$?j;au{(?_JL(jtsa!oZt*pONXC>b z#{bW)W`V}h5JaTrpf?ZaYaLNh1hxpeCRV+5^^VTY`8WL7-mh{|_yBjSw^F|Fq1vNB z4Hhd)OH+4la2rh_qDtHby+=t-qDiPaYY$LldY`ngFpnB6#@GE3Zb|P-icEijS)t`> zq{GG>n`(I5G_>f@9B$VCTW0^iW0> z!l+}*tusVeR#8{iHZVxb%p@Tq8rgDeG$0K)e}y?=cUO4caA-T2f<8BBASSIUmbVyW zlTq{bsGKk$SwlmksIc(ue_|uo=Z}HI%G^9Nq03H%Ig=M *4&5_?n_eRnP`XWnPM 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 Z%L}N}USdoWF!>7Rf~NO{2#g{gk1mt literal 0 HcmV?d00001 diff --git a/chap-1-programming-a-computer/imgs/programming_languages_lowHighCompInterp.41e11926.png b/chap-1-programming-a-computer/imgs/programming_languages_lowHighCompInterp.41e11926.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e9a1a365cb102042a5a39cbc55040dfd9ba132 GIT binary patch literal 21846 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 literal 0 HcmV?d00001 -- Gitee From e88bc8eb9e4dede550a61a8b13c6f2ecb61deaed Mon Sep 17 00:00:00 2001 From: star-os <9261081+stros@user.noreply.gitee.com> Date: Sat, 12 Jun 2021 15:20:00 +0800 Subject: [PATCH 2/3] update chap-1-programming-a-computer/1-example.md. --- chap-1-programming-a-computer/1-example.md | 219 +++++++++++++++++++-- 1 file changed, 200 insertions(+), 19 deletions(-) diff --git a/chap-1-programming-a-computer/1-example.md b/chap-1-programming-a-computer/1-example.md index 0de721f..8e87da7 100644 --- a/chap-1-programming-a-computer/1-example.md +++ b/chap-1-programming-a-computer/1-example.md @@ -1,31 +1,212 @@ -# Chapter 1: Programming A Computer +# 在计算机上编程 ![](imgs/1-programming.2b932230.jpg) -## 1 What will you learn in this chapter? +## 1 本章中能学到的内容 +- 我们将列出计算机的不同的硬件部分 +- 我们将了解什么是程序,以及它长什么样 +- 我们将了解程序是如何加载以及运行的 +## 2 本章中提及的技术概念 -- We will list the different hardware parts of a computer. -- We will see what a program is and how it looks like. -- We will understand how a program is loaded and executed. - -## 2 Technical concepts covered - -- Memory Unit, Arithmetic and Logic Unit, Input/Output, Control Unit -- Central memory, Auxiliary memory -- Volatile and non-volatile memory +- 存储单元、ALU(算术逻辑单元)、I/O、控制单元 +- 中央存储器、辅助存储器 +- 易失性和非易失性存储器 - RAM/ROM - CPU -- High and low-level languages -- Assembly language, assembler -- Compiled and interpreted language +- 高级语言、低级语言 +- 汇编语言、汇编程序 +- 编译型以及解释型语言 +## 3 介绍 +这是一本关于Go的书。在进入我们的主要内容之前,你需要知道一些基础的计算机知识。 +​ + +有经验的程序员可以跳过这一章节,而初学者应该花费一点事件来学习。 +​ + +你所编写的程序将在硬件上运行。所以了解你的硬件是如何工作的,可能会改进你的程序设计。 +​ + +首先,我们将描述计算机的主要组成部分。然后我们再看看什么是程序,以及机器如何处理它。 +## 4 四大硬件组件 +计算机是由**四**个主要部分构成: + +- **存储单元(MU)**是存储数据和程序的地方。 + - 例如,我们可以将某个大学班级的成绩存储到内存单元中。我们还可以存放一个用来计算班级平均成绩的程序。 +- **算术和逻辑单元(ALU)**的作用是对存储再内存单元中的数据进行算数和逻辑运算,例如加法、递增递减等,这些称为**操作**。一般来说,每个操作需要两个操作数,并输出一个结果。 + - 假设我们想将5和4相加。这两个数就是操作数。这个操作的结果是9。操作数是从 MU 中加载得到。ALU是一个旨在执行操作的电路。 +- **输入输出单元(I/OU)**负责将数据从**输入**设备加载到存储单元上。该单元还将数据从存储单元发送到**输出**设备上。 + - 输入设备是,例如,你的电脑的触摸板,你的键盘,你的鼠标。 + - 输出设备是,例如,你的显示器。 +- **控制单元(CU)**将会接受程序发出的指令并控制其他单元的活动 + +这四个硬件组件代表了计算机组件的**原理图(schematic view)**​ +## 5 存储器 +计算机由两种类型的存储器组成: + +- 中央存储器 +- 辅助存储器 + +存在两类存储器 + +- 易失性 +- 非易失性 +### 5.1 中央存储器 +这种类型的存储器是运行操作系统以及所有跑在你的计算机上的程序所必需的。中央存储器包含两种类型的存储: + +- **RAM**(随机存取存储器)。这类存储器需要电力来存储数据。当你关闭计算机时,这类存储器所包含的数据将被清除。操作系统和你使用的程序都装载在这个存储器中。这类存储器是**易失性的**。 +- **ROM**(只读存储器)。这是一种包含计算机正确运行所需数据的存储器。这类存储器是**非易失性的**(数据不会随着计算机的关闭而被清除)。它被设计为只读,不能被系统更新。 +### 5.2 辅助存储器 +这种类型的存储器**非易失性的**。下面是一些辅存的例子:硬盘、USB、CD、DVD等等 +​ + +与 RAM 相比,这类存储的读写速度要更**慢** +​ + +一些硬盘会顺序地访内存。系统应该遵守一个特定的顺序。遵守这个访问顺序比随机访问地方式需要更长的时间。请注意,有些硬盘允许随机内存访问。 +#### 5.2.1 固态硬盘 +硬盘,也被称为硬盘驱动器(HDD),是由旋转的磁片组成的,数据的读写则是通过一个移动的磁头。读写会导致(磁盘的)旋转和磁头移动,这个过程将会消耗一些时间。 +​ + +固态硬盘的结构与此不同,它既没有磁头,也没有磁片。取值而代的是,数据被存储在闪存单元中。在这种磁盘上,访问数据的速度更快。请注意,固态硬盘的成本也比传统的磁盘更高。 +## 6 CPU +CPU 是**中央处理单元**。CPU 也被成为**处理器**。CPU 包含: + +- ALU +- CU(这两个见上文) + + + +CPU负责执行程序给出的指令。比如,程序可以指示:执行两个数字之间的加法。这些数字将被从内存单元中检索出来并传递给 ALU。程序也可能要求执行一些 I/O 操作,比如从硬盘中读取数据并加载到 RAM 进行进一步的处理。CPU 将执行这些指令。 +​ + +CPU 是计算机的核心部件。 +## 7 什么是程序 +为了让计算机做一些事情,我们需要给它下达精确的指令,这样的一组指令被称为程序。 +​ + +按照更加正式的定义,程序是“使得计算机硬件进行计算的计算机指令和数据定义的组合”[@institute1990ieee] +​ + +举个例子,想象一个需要用户输入两个数字的程序,这个程序将这些数字相加,并将结果显示在显示器上。那么需要编写的指令是: + +1. 在显示器上输出 “请输入你的第一个数字并按回车键”。 +1. 当输入一个数字并按下键盘上的 "Enter" 键时,将该数字存入内存。让我们用`A`来表示这个数字。 +1. 在显示器上输出 "请输入第二个数字并按回车键"。 +1. 当输入一个数字并按下键盘上的 "Enter" 键时,将该数字存储到存储器中。让我们把这个数字表示为`B`。 +1. 将`A`和`B`以及加法运算码发送到 ALU 中,并将结果存到内存中。 +1. 在显示器上输出结果。 + + + +这个过程执行了两种指令: + +- **I/O 操作**:检索存储在内存中的数字,将输入设备(键盘)中得到的数字存储到内存中,从内存中加载数据,并将其显示给用户。 +- **算术操作**:两数相加。 + + + +我们这里有一组用中文编写的指令。但机器并不能理解中文句子,这些句子需要被翻译成机器能理解的语言。那这种语言是什么呢? +## 8 如何与机器对话 +### 8.1 程序设计语言是形式语言 +给予计算机的指令是通过程序设计语言编写的。程序设计语言是**形式语言**,它们是由字母表(一组不同的字符)中的字母构成的词组成的。这些词是按照特定的规则组织的。Go 就是一种编程语言,就像 X86 汇编、Java、C、C++、JavaScript 一样…… +​ + +程序设计语言大致可以分为两类 + +- 高级语言 +- 低级语言 + + + +低级程序设计语言更接近处理单元的指令。高级语言提供了一些结构,使其更容易学习和日常使用。 +​ + +有些高级语言是编译型的,有些是解释型的,有些则介于两者之间。我们将在接下来的章节中看到这两个术语的含义。 +![](imgs/programming_languages_lowHighCompInterp.41e11926.png) + +### 8.2 机器语言 +为了能让计算机的处理单元理解我们的意图,可以使用**机器语言**。机器语言完全由0和1组成的,用机器语言编写的指令是0和1的组合。每个处理器(或者一族处理器)都会定义一个指令列表,称为**指令集**。指令集中就有对数字进行加法、增一、减一、把数据从内存中的一个位置复制到另一个位置……等指令。 +​ + +你可以直接用机器语言编写计算机编写指令,不过,这并不容易。 +### 8.3 汇编语言 +汇编语言是一种**低级程序设计语言**。用汇编语言编写的程序的指令与机器指令相对应。汇编语言使用助记符——对应着机器指令的简短单词——进行编写。比如,`MOV`指令将指示机器把数据从一个位置移动到另一个位置。开发人员还可以对代码进行注释(这在机器语言中是不可能的)。 +​ + +想要用汇编语言创建一个程序,开发人员需要将指令写入一个或多个文件,这些文件称为**源文件**。 +​ + +这是一个用x86 Linux 汇编语言编写的一条指令: +``` +// assembly code +mov eax,1 +int 0x80 +``` +这两行代码将执行一个关闭程序的系统调用("1"是代表“退出程序”的系统调用的数字)。需要注意的是,汇编语言在不同机器上是不同的,这被称作**特定于机器(machine-specific ,或者说不独立于机器)。** +**​** + +**汇编器**是用来将汇编语言编写的源文件转换成目标代码文件,这被称作**汇编(assemble)**。然后,链接器将把这些目标代码文件转化为可执行文件。一个可执行文件包含所有计算机启动程序的必要指令。 +![](imgs/assembly_to_executable.926437cf.png) +### 8.4 高级语言 +市场上有许多高级语言,比如 Go。这些语言不再于机器架构紧密相关。它们提供了一种编写指令的便捷方式。比如,如果我们想要发出一个系统调用来退出程序,我们可以用 Go 这么写: +```go +os.Exit(1) +``` +C语言: +```c +exit(1) +``` +Java: +```java +System.exit(1); +``` +在这个例子中,我们不需要把数字移到寄存器中;我们使用语言的结构(函数、包、方法、变量、类型...)。本书的目的是为你提供这些工具的精确和简洁的定义,以建立Go应用程序。 + + +高级语言程序也被写入文件。文件被命名为 "源文件"。一般来说,编程语言要求在文件名中加入一个特定的扩展名。对于Go程序,我们将在每个文件的末尾添加".go"。在PHP中,扩展名是".php"。 -## 3 Introduction -This book is about Go. Before jumping into our main subject, you need to know some basic knowledge about computers. +在编写源文件时,它们所定义的程序不能立即执行。源文件需要通过**编译器**进行**编译**。编译器会将源文件转化为可执行文件。编译器也是一个程序。Go是编译语言家族中的一员。 +![](imgs/compiler.adc1a3b1.png) +#### 8.4.1 编译型 vs 解释型 +请注意,有些编程语言是解释性的。当源文件写好后,程序员不需要编译源文件。在源文件写好以后,系统可以通过解释器来执行程序。源文件中的每条指令都由解释器翻译并执行。在某些情况下,解释器将程序的编译后版本存在缓存中以提高性能(不用每次都翻译源文件)。PHP、Python、Ruby、Perl都是解释型语言。 +## 9 自我测试 +### 9.1 问 -Experienced programmers can skip this chapter. Beginners should take some time to study it. +1. 程序存储在哪里? +1. 从硬盘中读取数据比 RAM 慢,是吗? +1. 你能否对 ROM 进行写入? +1. 存储器的类型是哪两种? +1. "易失性存储"的定义是什么? +1. 什么程序会将汇编语言代码翻译成目标代码? +1. 什么程序将目标代码翻译成可执行文件? +1. 说出两点高级语言对比低级语言的优势? +1. Go 是一种解释型语言吗? +### 9.2 答 -Your programs will run on hardware. Knowing how your hardware is working may improve the design of your programs. +1. MU +1. 是的。从 RAM 中读写数据快的惊人,而硬盘则通常要花费更长时间 +1. 不行。ROM 是只读的,用于存储操作系统 +1. 中央存储器和辅助存储器 +1. 计算机断电后会被清除的存储 +1. 汇编器 +1. 链接器 +1. 更易使用、与机器无关(不依赖于机器的架构,即所谓的可移植性) +1. 错误,Go 是编译型语言 +## 10 要点 -Firstly we will describe the main components of a computer. Then we will see what a program is and how the machine handles it. +- 在宏观层面上,计算机是由这些组成的: + - 存储单元 MU:存放数据与程序 + - 算术逻辑单元 ALU:进行计算 + - 输入输出单元 IOU:管理输入和输出设备 + - 控制单元 CU:按照程序执行的指令管理以上三个单元 +- CPU 是由 ALU 和 CU 组成的 +- 一个程序,就是一组指令 +- 开发人员通过程序设计语言编写程序 +- 程序设计语言是由必须按照制定规则排序的单词和字符组成的 +- 分为高级和低级程序设计语言 +- 机器语言和汇编语言都是低级语言,用这些语言编写的指令与硬件组织和能力紧密相连。它们的抽象程度很低 +- Go 是一种编译型的高级程序设计语言 +## 参考书目 +- [institute1990ieee] Electrical, Institute of, and Electronics Engineers. 1990. “IEEE Standard Glossary of Software Engineering Terminology: Approved September 28, 1990, IEEE Standards Board.” In. Inst. of Electrical; Electronics Engineers. -- Gitee From d6adc5a654416e9e72e0b8e7cf74d90946076972 Mon Sep 17 00:00:00 2001 From: star-os <9261081+stros@user.noreply.gitee.com> Date: Sat, 12 Jun 2021 15:22:39 +0800 Subject: [PATCH 3/3] rename chap-1 --- .../{1-example.md => chap-1-programming-a-computer.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename chap-1-programming-a-computer/{1-example.md => chap-1-programming-a-computer.md} (100%) diff --git a/chap-1-programming-a-computer/1-example.md b/chap-1-programming-a-computer/chap-1-programming-a-computer.md similarity index 100% rename from chap-1-programming-a-computer/1-example.md rename to chap-1-programming-a-computer/chap-1-programming-a-computer.md -- Gitee