[day-7] 在正式开始写程序之前,先来认识电脑本身吧!(Part .2)

前情提要

昨天 [day-6] 大致介绍了,电脑的起源与相关发展史,相信各位读资讯或是商业领域的人应该多少都读过(吧W
今天要来继续介绍电脑啦~但是重点不在历史ㄌ啦 @@#


1-1 电脑的硬体架构(五大单元)

电脑的五大单元有这些

  • 算数逻辑单元(Arithmetic & Logic Unit)
  • 控制单元(Control Unit)
  • 记忆单元(Memory Unit)
  • 输入单元(Input Unit)
  • 输出单元(Output Unit)

电脑的五大单元
▲ 附图 1 - 电脑的五大单元 关系图 [资料来源]

我们常说的 中央处理单元(Central Processing Unit, CPU) ,其内部含有 算数逻辑单元(Arithmetic & Logic Unit)控制单元(Control Unit)

  1. 控制单元负责程序指令的取得和解释,并指挥电脑各部分协调运作
  2. 算术逻辑单元 是逻辑与运算的实际运作单元,其内部含 暂存器(Register)
    暂存器存在的目的是为了暂存运算中的资料,避免多次调用记忆体中的内容导致高延迟
  3. CPU 内部各单元间的联系是透过 汇流排(Bus)的方式传输

由於近年来科技的发展,各大科技巨头每年都想着该怎麽提升自家硬体效能

随着时间的推移,迎面而来的问题越来越多。举例来说:汇流排的频宽、零件间的延迟、散热的面积、零时差漏洞 等多种问题将同时被考虑。
受这次新冠病毒COVID-19的影响,有许多工厂关闭导致原物料跟着涨价,半导体产业也因此面临供不应求的状况,许多厂商看准商机打算藉此机会向多个国家布局。


1-2 软件

我们常使用的 应用程序(application program) 大多都是建构在作业系统之上

你可能会问甚麽是作业系统(Operating System)? (这里碍於篇幅长度快速带过)
  简单来说,作业系统是让应用程序与硬体之间 "沟通的桥梁"
作业系统负责提供应用程序执行的环境,与基础的资源分配,而现在普遍消费者所使用的作业系统,甚至会内建 图形化桌面环境(Desktop environment) 使消费者能更快速上手。

据说当年微软为了拚Windows10的市占率,除了免费升级之外,甚至与OEM厂商达成共识
联手出售一些低规格的笔电,其内部的Windows家用版授权为免费赠送
难道这就是那些32g容量笔电的由来(?
(以上言论纯属玩笑,如有雷同纯属巧合oxo)


1-2.1 程序语言的分类与执行

广义的程序语言 可大致区分为 低阶语言高阶语言
『低阶语言』通常是 较为贴近硬体所呈现的语言,其不易阅读,且难度偏高,但是运作快速。
『高阶语言』与低阶语言相较之下,能更接近人类的日常用法,可读性较高,学习所需的时间较短。

高阶语言 在执行程序时,需要翻译回机器可读的语言 机器语言(machine language) ,因此需要一个转换工具来协助我们的程序正常运作!主流采用的为 "直译" 与 "编译" 两种,各有优缺点。

  1. 直译器(interpreter)的功能是将程序码依照逻辑顺序逐行转为机器语言指令并立即执行。
    优点:所需的记忆体较小,原始码暂用较小的空间,容易除错(电脑执行到某一行出错了可以快速了解是哪个出现问题),方便初学者使用。
    缺点:当程序码过於庞大其效率会显着降低。
    直译器
  2. 编译器(compiler)的功能是将程序码一次翻译成机器语言。
    优点:日後执行大型程序的速度会相对直译来的快。
    缺点:编译所需的时间较长,每一次都修改都必须重新编译。
    编译器

Python被执行的流程
▲ 附图 2 Python被执行的过程 对照组为C语言 [资料来源]
注解:Python 是运作在PVM (Python Virtual Machine)上


<<:  【Side Project】 顾客点菜单画面设计

>>:  Day7# Array & Slice(上)

26.unity打字机(StartCoroutine)

实现打字机功能:字出现之间会有时差,让一个字接一个字出现。 回圈{ //画面texe += 清单[第...

[Vue2] 从初学到放弃 Day1

初心 写code开始,义大利面到框架,後端碰到前端。为什麽到现在才写Vue2呢?最主要的想法,是想把...

让服务器主动更新画面

通常来说服务器能变动页面资料是因为浏览器发出 request 所得到的 response 因而更新了...

Day3 写网页前的第一步

在知道网页是使用文字编辑器来编写之後,写网页的第一个步骤当然就是安装文字编辑器啦! 因为我很菜,只使...

30天程序语言研究

今天是30天程序语言研究的第三十天,由於最近写unix语言的东西用到很多,所以做了很多笔记,就想说也...