开发必会计算机理论基础|学习笔记

简介: 快速学习开发必会计算机理论基础

开发者学堂课程【Python 开发基础入门开发必会计算机理论基础】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/556/detail/7648


开发必会计算机理论基础

内容介绍:

一、编程基础

二、计算机五大部件

三、冯诺伊曼体系架构

四、语言分类

五、低级语言到高级语言的发展

六、编译语言

七、解释语言

八、高级语言的发展

九、程序 Program

十、Python 解释器

 

一、编程基础

程序:

一组能让计算机识别和执行的指令

电子计算机:

能够执行程序的机器

现代计算机:

图灵提出的著名的图灵机模型,为现代计算机的逻辑工作方式奠定了基础

冯·诺依曼提出了以二进制作为数字计算机的数制基础,计算机应该按照程序顺序执行,计算机应该有五大部件

 

二、计算机五大部件:

1.输入设备

2.存储器

3.运算器

4.控制器

5.输出设备

 

三、冯诺曼体系架构:

image.png

1.CPU由运算器和控制器组成(中央处理器)

2.运算器完成各种算术运算、逻辑运算、数据传输等数据加工处理

3.控制器,控制程序的执行(控制运算器在数值上还是传送到存储器上,控制一条条指令)

4.存储器,用于记忆程序和数据,例如内存,即计算机pce内存,内存速度快

5.输入设备(I),将数据或者程序输入到计算机中,例如键盘、鼠标

6.输出设备(O),将数据或程序的处理结果展示给用户例如显示器、打印机等

7.CPU中还有寄存器和多级缓存Cache(CPU并不直接和磁盘打交道)

CPU并不直接跟存储打交道,它会把数据暂时性的放到内存中,通过控制器把内存中的数据写入到磁盘或者从磁盘把数据读取到内存中供CPU来使用,CPU的指令是直接去读取CPU中的计算器的或者内存中的地址,它没有读取磁盘的能力。

CPU并不直接和内存打交道,它只是暂时性的放在内存里,通过控制器把内存中的数据写进磁盘里,CPU没有读取磁盘的能力,磁盘是工具,帮助永久存储。

寄存器放在CPU内部,CPU要对数据进行处理,必须使用寄存器 不能直接使用内存中的数据,必须把数据装载到寄存器当中,然后用运存器进行处理,然后通过指令写到内存当中进去。

寄存器速度快,跟CPU同个频率,CPU速率远远高于内存,内存的速率远远高于IO设备,CPU的运存速率是最快的,CPU经常处于等待状态。

大量数据需要被多个地方用到时可以先放缓存里,缓存是放在CPU里面的,越接近CPU核心速度越快。

多核到三级缓存的时候是多核共享三级缓存了计划等于20万,一级缓存在某些CPU里面他们都是独享的,每一个CPU核心自己独享计算器,但是三级缓存是多核,CPU是多个CPU,越到三级缓存,速度越慢,寄存器与CPU是同频率的,一级缓存再慢一点,而在内部当然比外部的快,在外部的话它还需要运算器旁边那个控制器控制电路,控制bus就总线控制总线,然后把数据送到内存上去,当然这些都是通过电信号的,CPU里面有运算器和控制器以及计算器和多级缓存。

计算机语言:

人与计算机之间交互的语言  

机器语言:

一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言,要在CPU中设计好

与自然语言差异太大,难学、难懂、难写、难记、难查错。

汇编语言:

用一些助记符号替代机器指令, 称为汇编语言。ADD  A,B指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中,这是一条指令

汇编语言写好的程序需要汇编程序转换成机器指令,把写好的助记符转化成机器语言

汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然言

 

四、语言分类

低级语言:

面向机器的语言,包括机器语言、汇编语言

不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序

高级语言:

接近自然语言和数学语言的计算机语言

高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序

1954年正式发布的Fortran语言是最早的高级语言, 本意是公式翻译

人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理

高级语言是对人类友好对机器不友好,而低级语言是对人类不友好,对机器友好的语言,人类看不明白或者学习起来非常难。

高级语言也要转化成本地指令,这样CPU才能执行,低级语言和高级语言可以来回转化,C语言和C++需要通过转化成本地执行的二级指令文件或直接生成exe文件。

 

五、低级语言到高级语言的发展:

image.png

语言越高级,越接近人类的自然语言和数学语言语言越低级,越能让机器理解

高级语言和低级语言之间需要一个转换的工具:编译器解释器

C、C++等语言的源代码需要本地编译(源代码编译)

D、

Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode ) , 在虚拟机上运行,这些都需要编译成中间代码,由虚拟机去执行

(编译成一种虚拟机可以认得的质检码,有一个虚拟的CPU,只有自己本身才可以识别出来)由虚拟机去执行所需要的代码,质检码是通用的。

 

六、编译语言

把源代码转换成目标机器的CPU指令,CPU只认指令级,指令不相同不兼容,如果不兼容重新本地编译。(C和C++是编译性语言,先转化成质检码,在不同环境中执行)


七、解释语言:

解释后转换成字节码,运行在虑拟机上,解释器执行中间代码

 

八、高级语言(多范式的开发语言)的发展:

非结构化语言:

编号或标签、GOTO ,子程序可以有多个入口和出口(一旦有GOTO出现就不是结构化语言)

标签:在某一行前面加一个名称,在加上冒号便是标签,标签可以用一个指令或者用一个 GOTO语句

有分支、循环

缺陷:因 GOTO 会打破编程语言结构化,不适合现在的软件工业使用

结构化语言:

任何基本结构只允许是唯一入口和唯一出口、步

顺序、分支、循环,废弃 GOTO

优势:便于人阅读,不会成为“蜘蛛网”

缺陷:不能利用 GOTO 将代码精简化,不能运用到超大规模领域上

面向对象语言(利用人类对大千世界的理解来编程):

优势:更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承

三要素:封装、继承、多态

函数式语言:

古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中

函数是“一等公民”,高阶函数

 

九、程序 Program:

程序:

算法+数据结构=程序

数据:一切程序的核心

数据结构是数据在计算机中的类型和组织方式口算法是处理数据的方式,算法有优劣之分。

写程序难点:

理不清数据

搞不清处理方法(搞不清算法)

无法把数据设计转换成数据结构,无法把处理方法转换成算法

无法用设计范式来进行程序设计(设计思想)

世间程序皆有 bug,但不会 debug

 

十、Python 解释器:

官方 CPython(必记):

特点:C语言开发,最广泛的 Python 解释器

IPython:

一个交互式、功能增强的 Cpython

PyPy:

Python 语言写的 Python 解释器, JIT(动态编译)技术

JIT技术:

动态编译 Python 代码成本地代码,可以提高运行效率,可以动态调整生成的字节码,比 CPython 快五倍

Jython:

Python 的源代码编译成 Java 的字节码,跑在 JVM 上

IronPython:

与 Jython 类似,运行在.Net 平台上的解释器, Python 代码被编译成.Net 的字节码

计算速度不快。

相关文章
|
7月前
|
Java 数据库连接 Spring
从零开始,探索Spring框架的魅力与实践
从零开始,探索Spring框架的魅力与实践
|
1月前
|
存储 Serverless PHP
PHP编程入门:从基础到实战
【10月更文挑战第35天】本文将带你走进PHP的世界,从最基本的语法开始,逐步深入到实际应用。我们将通过简单易懂的语言和实际代码示例,让你快速掌握PHP编程的基础知识。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到你需要的内容。让我们一起探索PHP的魅力吧!
|
1月前
|
JavaScript Java API
深入浅出后端开发:从基础到进阶
本文将带你走进后端开发的神秘世界,从最基础的概念讲起,逐步深入到高级技术的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和实用的技巧,帮助你在后端开发的道路上更进一步。我们将涵盖后端开发的基本概念、常用技术栈、数据库管理、API设计以及性能优化等关键领域,让你全面了解后端开发的方方面面。
|
1月前
|
前端开发 JavaScript NoSQL
探索后端开发之旅:从基础到高级实战
【10月更文挑战第24天】在这个数字时代的浪潮中,后端开发如同一座巨大的宝藏岛,等待着勇敢的探险者去发掘。本文将作为你的藏宝图,引领你从浅滩走向深海,探索后端开发的广阔天地。无论你是初心者还是资深开发者,这篇文章都将为你提供价值连城的知识和技能。准备好了吗?让我们启航,一起构建强大、高效、安全的后端系统!
|
2月前
|
存储 前端开发 JavaScript
前端技术深度探索:从基础到现代框架的实践之旅
前端技术深度探索:从基础到现代框架的实践之旅
45 3
|
1月前
|
存储 Java PHP
PHP编程之旅:从基础到实战
【10月更文挑战第23天】本文将带你走进PHP的世界,探索这个流行的服务器端脚本语言的魅力。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和实用的代码示例。我们将从PHP的基本概念开始,然后深入到实际应用中,最后通过一个实战项目来巩固所学知识。让我们一起开启这段激动人心的PHP编程之旅吧!
26 0
|
4月前
|
API 数据库 Docker
探索后端开发之旅:从基础到进阶
【8月更文挑战第24天】在这篇文章中,我们将一起踏上一段激动人心的旅程,深入后端开发的奥秘。无论你是初出茅庐的新手还是经验丰富的老手,本文都将为你揭示后端世界的无限可能。我们将从构建一个简单的API开始,逐步深入到数据库交互和安全性问题,再扩展到微服务架构和容器化部署。准备好了吗?让我们启程吧!
|
4月前
|
存储 NoSQL 关系型数据库
探索后端开发:从基础到进阶的实战之旅
【8月更文挑战第31天】在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据处理和业务逻辑的重要任务。本文将带你走进后端开发的奇妙世界,通过深入浅出的方式,解析后端开发的基础知识、关键技术点以及进阶技巧。我们将一起动手实现一个简单的后端项目,体验从零开始构建一个服务端应用的过程。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往后端世界的大门。
|
6月前
|
SQL 存储 NoSQL
数据库原理速览:核心知识集萃与复习指南
数据库原理速览:核心知识集萃与复习指南
54 2
|
7月前
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
109 2