Python3之旅之计算机基础知识

编程的基本概念

通俗讲:
       编程就是写代码,开发者使用 特定的语法 + 数据结构 组成的代码去告诉计算机如何执行任务的过程。
或者说,
       编程就是人把自己想命令计算机做的事情用编程语言翻译出来并写到文件里(这一系列的文件就是程序)

编程的目的

编程的目的就是为了让计算机能够按照人类的思维逻辑自发地去工作从而把人力解放出来。

"编程"一词的由来

“编程”一词延伸于“杰卡德编织机”

编程语言的分类

机器语言

机器语言是站在计算机的角度,说计算机能听懂、理解的语言,
而计算机能直接理解的就是二进制指令,所以机器语言是直接用二进制编程,
这意味着机器语言是直接操作硬件的,因此机器语言属于低级语言
(低级指的是:底层、贴近计算机硬件(贴近指的是:需要详细了解计算机硬件细节、直接控制硬件))
a. 计算机底层只能识别0和1,由0和1描述的指令称为机器指令;
b. 所有机器指令组成的集合称为机器语言;
c. 由机器语言编写的程序称为目标程序;
d. 只有目标程序才能被计算机直接识别和执行;
e. 机器语言属于低级语言,是最底层的语言;
f. 使用机器语言去编程,首先要熟记所用计算的全部指令以及指令的含义,
   然后在编写的是后续,程序员得自己处理每条指令和每一项数据的存储分配以及
   输入和输出,还得记住编程过程中每步所使用的的工作单元处在何种状态。
   这是一件非常繁琐的工作。编程所花费的时间往往是实际运行时间的几十倍或几百倍。
   而且编出的程序全是0和1的指令代码,直观性差,不方便阅读和书写,还容易出错,且依赖于具体的计算机硬件型号,局限性很大。
   现在除了计算机生成厂家的专业人员外,绝大多数的开发者已经不再去学习机器语言了;
g. 机器语言是被微处理器理解和使用的,存在多至100000种机器语言的指令
优点:
	编写的程序可以被计算机无障碍地理解、直接运行,执行效率高。
缺点:
	1. 复杂,开发效率低
	2. 贴近、依赖具体的硬件,跨平台性差

汇编语言

只是将机器指令换成了便于理解、记忆和使用的英文单词,毫无疑问,比起机器语言,汇编是一种进步,但汇编的本质仍然是直接操作硬件,因此汇编仍是比较低级/底层的语言、贴近计算机硬件。
由汇编语言编写的程序称为汇编程序。
优点:
	1. 相对于机器语言,使用英文助记符编写程序相对简单,复杂度稍低,执行效率稍低,开发效率稍高。
	2. 用汇编语言所能完成的操作不是一般高级语言所能够实现的。
缺点:
	1. 依然是直接操作硬件
	2. 依赖具体的硬件,跨平台性差

高级语言

       是站在人的角度,说人话,即用人类的字符去编写程序,而人类的字符是向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的(高级指的是:高层、开发者无需考虑硬件细节,因此开发效率可以得到极大的提升),但正因为高级语言远离硬件,更贴近人类语言,人类虽然可以理解,但计算机则需要通过转换才能理解,所以执行效率会低于低级语言。而转换方式决定了高级语言种类之间的本质区别。

分类:
    ①编译型
		例如:C、C++、Go、Delphi
        类似生活中的“Google翻译”,是把程序所有代码编译成计算机能识别目标代码(*.obj),
        生成可执行文件,之后操作系统系统会拿着编译好的代码直接操作硬件。
		优点:
			1. 脱离语言环境独立使用
			2. 执行效率高于解释型

    ②解释型
		例如:C#、Java、JavaScript、Python、PHP、Ruby
		类似生活中的“同声传译”,将代码交给解释器逐行解释成目标代码,并且逐行执行。

		优点:
			1. 开发效率高
			2. 跨平台
		缺点:
			1. 依赖解释器
			2. 执行效率低于编译型
总结:
	执行效率:
		机器语言 > 汇编语言 > 高级语言(编译型 > 解释型)
	开发效率:
		机器语言 < 汇编语言 < 高级语言(编译型 < 解释型)
	跨平台性:
		解释型具有极强的跨平台性

	由于我们开发的是应用程序,而应用程序必须运行于某一个平台之上,
	应用程序的快慢受限于平台(就好比F1赛车与宝马车同时跑在北京五环高速,都受限于道路环境,车速是差不多的)的快慢,
	并不是单从语言层面就可以提升整体执行效率的,
	于是开发效率、跨平台性才是我们需要优先考虑的问题。

计算机的认识

计算机是用来计算和通讯的;
计算机,俗称‘电脑’,电子人脑。能够进行数值计算、逻辑计算以及记忆存储功能, 能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
通俗讲: 最初发明计算机,是为了进行科学计算,只要能进行数据处理(计算、运算)的,都可以称之为计算机,比如:计算器。

计算机的基本组成

1. 主板
2. CPU
3. 内存
计算机最底层是 电子电路,计算机只能识别高电频 和 低电频,也就是1、0

与运行程序相关的三大核心硬件

1. CPU
2. 内存
3. 硬盘

组装计算机

CPU 看主频、核心数
内存 看大小、型号(一般就DDR4、显卡用DDR5)、主频(海盗船、玩家国度)
显卡 看显存、型号(比如:N卡 GTX 1080  红色的数值越高越厉害、蓝色的数值代表第十代产品,N卡玩游戏; A卡作图)、位宽(数值越高代表数据进出量越高,则性能越好)
硬盘 (反正市面上,能买到三星正品的机率很小,而且也特别贵)

CPU的大致工作流程

取指 --》解码 --》执行

精简指令集

RISC,每个指令运行时间短,完成的动作单纯,指令执行效率佳;若要做复杂的事情,就要由多个指令组合完成。

复杂指令集

CISC,指令书目多且复杂,每条指令长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条指令可以处理的工作较为丰富。

X86架构

是针对CPU型号的一种统称。详细将:最早那颗Intel发明出来的CPU代号为8086,后再在8086基础上又开发出了80285、80386…,因此这种架构的CPU被统称为x86架构。
由于AMD、Intel所开发出来的x86架构CPU被大量使用于个人计算机上,因此,个人计算机常被称为x86架构的计算机!

CPU 64位

CPU的位数指的是CPU一次能从内存中取出多少位二进制指令。
在03年以前由Intel所开发的x86架构CPU从8位升级到16、32位,后来AMD依此架构修改新一代CPU为64位。

CPU具有向下兼容性,64位的CPU既可以运行64位软件,也可以运行32位软件,而32位CPU只能运行32位软件。

操作系统 64位

  1. 可以支持4G以上的内存
  2. 可以进行更大范围的整数运算

操作系统概述

为什么要有操作系统

我们让计算机帮我们去执行任务,那么计算机怎么执行呢?当然是使用硬件。
那么对于大部分程序员来说无法了解所有操作硬件的细节,
并且管理以及优化使用硬件是非常繁琐的过程,
这些繁琐的过程就是操作系统来完成的。
有了它之后,程序员就能从繁琐的工作中解脱出来,专心于应用软件的编写即可,
应用软件则调用操作系统提供的功能接口来间接地使用硬件。

什么是操作系统

操作系统是一个协调管理以及控制计算机硬软件资源的控制程序。

操作系统的组成

操作系统位于计算机硬件和应用软件之间,本质上也就是一个软件
操作系统由两部分组成:

  1. 内核
    内核运行于内核态,用于管理计算机硬件资源
  2. 系统调用
    系统调用运行于用户态,给应用软件开发者的应用软件程序提供系统调用接口,来间接地操作计算机硬件

操作系统的功能

  1. 封装了复杂的计算机硬件接口,提供了良好的系统调用接口
  2. 将应用软件对硬件资源的竞争请求变得有序化

操作系统发展史

  1. 1946年2月14日第一台计算机没有操作系统,交互方式为:穿孔卡片
  2. 批处理操作系统:联机批处理和脱机批处理
  3. 多道程序系统
  4. 多道批处理操作系统
  5. 分时操作系统
  6. 实时操作系统
  7. 通用操作系统

软件分类

  1. 应用软件
  2. 系统软件(例如:操作系统)

计算机系统三层结构

  1. 应用程序
  2. 操作系统
  3. 计算机硬件

平台

应用程序都是运行于操作系统之上,而操作系统则是运行于硬件之上的,所以承载应用程序的是一台运行着有操作系统的计算机,称之为应用程序的运行平台。

硬件 + 操作系统

计算机实际上只认识加法

首先来了解,机器数和真值
1,	机器数
一个数在计算机中的二进制形式,叫做这个数的机器数。机器数是带符号的,最高位存放符号,正数为0,负数为1
例: +3,00000011;
    -3,10000011
    
2,	真值
将机器数的符号位0和1符号化成+和-
例: 00000011的真值 = +0000011 = +3,
    10000011的真值 = -0000011 = -3 

再来了解,原码、反码和补码
	首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。
	但是对于计算机,加减乘除已经是最基础的运算,要设计得尽量简单,计算机辨别‘符号位’显然会让
	计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法。
	我们知道,根据运算法则减去一个正数等于加上一个负数。即:1 - 1 = 1 + (-1) = 0,
	所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了
	
原码、反码和补码都是有符号的用二进制表示数的方法,均由符号位和数值位构成
	1,	原码
		原码是由0和1表示的符号位加上真值的绝对值,即用第一位表示符号,其余为表示值。
		例: -3 = 1[-0000011] = 1000 0011
		    +3 = 0[+0000011] = 0000 0011
	    原码是人脑最容易理解和计算的表示方式
	    
	2,	反码
		正数的反码是其原码本身
		负数的反码是在其原码的基础上,符号位不变,其余各个位取反
		-3 = 1[-0000011] = (1000 0011)原 = (1111 1100)反
		+3 = 0[+0000011] = (0000 0011)原 = (0000 0011)反
		
	3,	补码
		正数的补码就是其本身
		负数的补码就是在反码的基础上 + 1
		-3 = 1[-0000011] = (1000 0011)原 = (1111 1100)反 = (1111 1101)补
		+3 = 0[+0000011] = (0000 0011)原 = (0000 0011)反 = (0000 0011)补
		
在计算机系统中,数值一律用补码来表示(存储)。
	主要原因:
	1. 使用补码,可以将符号位和其它位统一处理;
	2. 其他运算也可按加法来处理;
	3. 另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃;
	4. 补码与原码的转换过程几乎是相同的。

" 八进制 " 引入

小型机引入了**八进制**

计算机系统设计的‘开山鼻祖’

巴贝奇,计算机系统设计的‘开山鼻祖’

世界公认的第一名软件工程师

Ada(阿达, 女性),世界公认的第一名软件工程师

现代计算机之父

计算机之父:冯洛伊曼
基本思想:
		1. 计算机内部采用二进制;
		2. 顺序执行程序;
		3. 计算机由控制器、运算器、存储器、输入设备以及输出设备五大部分组成

莱布尼茨提出" 二进制 "说法之一

莱布尼茨独立发明微积分与牛顿齐名,又对计算机提出‘二进制’的设计思路。

其中有一个说法,他提出‘二进制’的思路,来源于中国。
公元1700左右,莱布尼茨的一位友人送于他一幅画,名为‘八卦’,是宋朝人邵雍摹绘的一张‘易图’。
莱布尼茨用放大镜仔细观察八卦的每一卦象,发现它们都是由阳(-)和阴(--)两种符号组成。
若认为阳为‘1’,阴为‘0’,八卦恰好组成了二进制000到111共8个基本序数。
正是在中国人睿智的启迪下,莱布尼茨最终悟出了二进制之真谛。
虽然,他自己设计的计算机用的还是十进制,但他率先系统提出了二进制数的运算法则,
直到今天,二进制数仍然左右着现代电脑的高速运算。

" BUG " 由来

世界上第一台大型计算机Mark 1,为它编写程序的是一位女数学家
格雷斯·霍波(G· Hopper)(第三名程序员)。
有一天,她在调试程序时出现了故障,拆开了继电器后,发现有只飞蛾夹扁在触点中间,
从而‘卡’住了机器运行。于是,Hopper诙谐地把程序故障统称为‘臭虫’(bug),
而这一奇怪的‘称呼’,后来成为计算机领域的专业行话,调试程序就叫做‘Debug’。(反bug)

世界上第一台电子计算机

1946年2月14,西方情人节,美国军方定制的世界上第一台电子计算机‘ENIAC’(电子数字积分计算机)
在美国宾夕法尼亚大学问世了。是美国奥伯丁武器试验场为了满足计算弹道需要而研制的。

进制转换

https://blog.csdn.net/qq_32617703/article/details/101202479

进制中的基数、数码、位权

基数:例如十进制,基数为10
数码:例如十进制,0、1、2、3、4...就是十进制的数码
位权:例如十进制,从低位到高位(右 至 左) 依次表示为10的0次方、10的1次方...

计算机中的单位

0或1所占的空间单位为bit(比特),是计算机中最小的表示单位
8bit = 1Bytes (字节),是计算机中最小的存储单位
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
1ZB = 1024EB
1YB = 1024ZB
1BB = 1024YB

杂谈

(1)google: 10100
(2)google-plex:10google	
(3)宇宙直径:约 1026米
(4)宇宙粒子数:约 1080个
(5)地球沙粒数:约 7.5x1018
(6)宇宙大爆炸后(准确说是,大爆炸后的普朗克时间)的宇宙密度:1096千克/立方米
(7)1英寸 = 2.54厘米
(8)球的体积:4/3 * PI*R3
(9)圆的面积:PI * R2
(10)三角形的面积:底 * 高 * 0.5
(11)黄金比例:长边比短边,1.618;短边比长边,0.618
(12)毕达哥拉斯定理(勾股定理)计算笛卡尔平面上的两点之间的距离
		A: (x1, y1)	B: (x2, y2)
		dist = sqrt((x1 – x2)2 + (y1 – y2)2)
(13)二战,最后以美国、苏联、中国、英国等反法西斯国家和世界人民战胜侵略者而终止。
其终止的真正的原因是美国向日本的广岛和长崎投掷了两颗原子弹。但本来是投掷到日本东京的。
中途出现了误差,为了计算精确,美国组织科学研制计算机。
(14)熟记:
		2^0 : 1
		2^1 : 2
		2^2 : 4
		2^3 : 8
		2^4 : 16
		2^5 : 32
		2^6 : 64
		2^7 : 128
		2^8 : 256
		2^9 : 512
		2^10 : 1024
	2的几次方(n),其实有n+1位二进制;
	2的几次方(n)表示他后面所有权值加起来的和等于2^n-1。
	正是因为2^0 ~ n-1加起来的和表示不了那个值,所以就有2^n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值