计算机的本质是“乐于助人”,它们被编程,被设计,硬件也是如此构建的。硬件的设计与布线,一旦通电,本质上只关心一个文体:接下来你想让它做什么?就像手机的每个应用都在不断询问:接下来做什么?
1.1知识学习
- 如果是程序员,你的职责就是服务用户,用户总有ta们想要完成的事情,需要在硬件和用户之间充当桥梁,所以作为程序员的工作就是在硬件和最终用户之间进行协调.如果你是专业程序员,并且试图销售你的软件,那么你需要努力设想这个世界可能需要什么.解决问题。
- 而如果是用户,我们拥有程序员ta们开发的大量软件,直接使用即可,不需要考虑得像专业程序员一样。
从设备的使用者转化为设备的创造者,当你从另一个角度,即从程序员的角度来看它的时候,你会使用诸如编译器、解释器、编程语言和网络等工具,有了这些,我们将学习如何使用它们。
对于专业程序员来说,一个普遍的动机是为他人构建可使用的工具(但是不是所有人都需要做这件事,比如你只是想处理一段数据,你能写一小段python代码来统计这种情况吗),得学习如何精确、更工程化。
为自己或者少数人编写程序的关键区别在于严谨性,你可以不需要那么专业,也能写出自己可以用的代码,如果它运行并得到你想要的数据,那么任务就完成了。
程序就像一系列存储的指令。其核心思想在于,计算机本身,硬件的最低层次上,其实并不是那么智能。
但是它的灵活性在于,如果我们给予正确的指令,它就能完成意想不到的任务,如果我们赋予它正确的指令来接收声音、将声音数字化,并理解声音,那么你就能编写出一个能够“听见”的程序。计算机本身不具备听觉,是程序员赋予它“听见”的能力。计算机的作用在于,它能执行所有的运算。
上图中有三个错误,ham,hit,hit,或许你阅读的时候并没有注意到,因为你的大脑会自动修正它们——我们总是会下意识地纠正环境中的错误。但是计算机不会,它需要足够的指令,才能实现减少或者规避错误。
接下来会学习基础代码,然后理解下面代码的逻辑
上面的东西讲完可能疑惑,为什么我们要了解这些属于和概念,比如说中央处理单元,是为了通过这些部分,能够定义一些术语,以便后续在课程中可以自如地运用它们,对基本地硬件框图有一个初步的认识。
编写程序,你会在辅助储存器(secondary memory)上创建文件,比如一个python文件,然后在某个时刻被加载到主储存器中(main memory),经过翻译,就运行到main memory,然后当CPU询问接下来执行什么时,你的程序会提供它的第一条指令,执行完毕以后,CPU会再次询问接下来执行什么,第二条,第三条执行指令(中间箭头循环),这个过程被称为取指-执行周期
-
算机硬件架构
中央处理器,主储存器,辅助储存设备以及输入/输出设备。软件的核心包括中央处理单元、主储存器以及辅助储存设备
-
中央处理器(或 CPU):是计算机中专门用于思考“接下来是什么?”的部分。如果你的计算机标称频率为 3.0 吉赫兹,这意味着 CPU 每秒会问“接下来是什么?”三十亿次。你将不得不学会快速交流,以跟上 CPU 的节奏。
-
主储存器:用于存储 CPU 急需的信息。主储存器的速度几乎与 CPU 相当。但是,当计算机关闭时,存储在主储存器中的信息会消失。
-
辅助储存设备:也用于存储信息,但它的速度比主内存慢得多。辅助储存设备的优势在于即使计算机没有电源也能存储信息。辅助储存设备的例子包括硬盘驱动器或闪存(通常用于 U 盘和便携式音乐播放器)。
-
输入和输出设备:就是我们屏幕、键盘、鼠标、麦克风、扬声器、触摸板等。它们是我们与计算机交互的所有方式。它们是计算机与外界交互的桥梁。
-
如今,大多数计算机还具有网络连接功能,可以通过网络获取信息。我们可以将网络视为一个存储和检索数据非常缓慢的地方,而且并不总是“在线”。因此,从某种意义上说,网络是一种较慢且有时不可靠的辅助存储形式。
作为一名程序员,你的工作就是利用和协调这些资源来解决你需要解决的问题,并分析从解决方案中获取的数据。作为程序员,你将主要与 CPU“交流”,告诉它下一步该做什么。有时你会指示 CPU 使用主内存、辅助内存、网络或输入/输出设备。
你在哪里?
你需要成为那个回答 CPU“接下来做什么?”问题的角色。但如果将你缩小到 5 毫米高并插入计算机,只是为了让你每秒发出 30 亿次指令,那会非常不舒服。因此,你必须提前写下你的指令。我们将这些存储的指令称为程序,而编写这些指令并确保指令正确的行为被称为编程。
经过学习,让我们进行一个小小的练习吧~
1.2练习
练习 1
现代计算机硬件由五大部件组成,分别是运算器、控制器、存储器、输入设备和输出设备。
那么,计算机中辅助存储器的作用是什么?
A. 执行程序的所有计算和逻辑
B. 从互联网上获取网页
C. 长期存储信息,甚至超越断电周期
D. 从用户获取输入
练习 2
以下对 “程序” 的定义,最准确的是?
A. 计算机硬件的物理组成部分
B. 为实现特定任务,用编程语言编写的、可被计算机执行的指令集合
C. 显示器上显示的各种画面
D. 计算机电源提供的电能规格
练习 3
关于编译器和解释器,以下区别描述正确的是?
A. 编译器不需要源代码就能工作
B. 解释器会把整个源代码一次性转换成机器码再执行
C. 编译器是逐行翻译并执行源代码,解释器是整体编译成机器码文件
D. 编译器通常将源代码整体编译为机器码文件,解释器一般逐行解释执行源代码
练习 4
以下哪项包含 “机器码”?
A. Python 解释器
B. 键盘
C. Python 源文件
D. 文字处理文档
练习 5
用人类日常行为 / 能力类比,以下对计算机组件的对应关系正确的是?
(1)中央处理器(CPU)
(2)主存储器(内存)
(3)辅助存储器(硬盘 / U 盘等)
(4)输入设备(键盘 / 鼠标等)
(5)输出设备(显示器 / 音箱等)
A. (1)相当于大脑思考决策
(2)相当于大脑临时记忆
(3)相当于笔记本 / 相册
(4)相当于用眼睛看 / 耳朵听
(5)相当于用嘴巴说 / 手写
B. (1)相当于手臂做运动
(2)相当于口袋临时放东西
(3)相当于穿在身上的衣服
(4)相当于头发自然生长
(5)相当于眉毛的形态
C. (1)相当于睡眠做梦
(2)相当于梦境里的画面
(3)相当于起床穿衣服
(4)相当于呼吸空气
(5)相当于心脏跳动
D. (1)相当于身高数值
(2)相当于体重变化
(3)相当于年龄增长
(4)相当于血型分类
(5)相当于相貌特征
练习 6
在执行完以下 Python 行之后,变量 “x” 存储在计算机的哪个位置?
x = 123
A. 中央处理器
B. 主存储器(如内存)
C. 辅助存储器
D. 输入设备
E. 输出设备
答案:C B D A A B
附录:词汇表
中文术语 |
英文对应 |
解释说明 |
bug |
bug |
程序中的错误。 |
中央处理器 |
central processing unit (CPU) |
任何计算机的核心。它是运行我们编写的软件的部分;也称为 “CPU” 或 “处理器”。 |
编译 |
compile |
将用高级语言编写的程序一次性翻译成低级语言,以便后续执行。 |
高级语言 |
high-level language |
一种像 Python 这样设计得易于人类阅读和编写的编程语言。 |
交互模式 |
interactive mode |
一种通过在提示符处键入命令和表达式来使用 Python 解释器的方式。 |
解释 |
interpret |
通过逐行翻译高级语言来执行程序。 |
低级语言 |
low-level language |
一种设计得易于计算机执行的语言;也称为 “机器码” 或 “汇编语言”。 |
机器码 |
machine code |
软件的最低级语言,即由中央处理单元(CPU)直接执行的语言。 |
主存 |
main memory |
存储程序和数据。主存储器在断电时会丢失信息。 |
解析 |
parse |
检查程序并分析其语法结构。 |
可移植性 |
portability |
一种可以在多种不同类型的计算机上运行的程序特性。 |
print 函数 |
print function |
一条使 Python 解释器在屏幕上显示值的指令。 |
问题解决 |
problem solving |
将问题制定、寻找解决方案以及表达解决方案的过程。 |
程序 |
program |
一组指定计算的指令。 |
提示 |
prompt |
当程序显示一条消息并暂停,等待用户输入一些信息给程序时。 |
辅助存储器 |
secondary memory |
存储程序和数据,即使断电也能保留信息。通常比主存储器慢。辅助存储器的例子包括硬盘驱动器和 U 盘中的闪存。 |
语义 |
semantics |
程序的含义。 |
语义错误 |
semantic error |
程序中的错误,导致程序执行的结果与程序员的意图不符。 |
源代码 |
source code |
一种高级语言编写的程序。 |
来源:密歇根大学&Cousera课程(十天入门Python·组队版)