02-冯诺依曼体系结构和语言

一、计算机基础知识

1.1、计算机体系结构

image

  • 五大核心部件

    • CPU由运算器和控制器组成
      • 运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理
      • 控制器,控制程序的执行,是计算机的大脑,运算器和控制器组成计算机的中央处理器(cpu),控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计算器控制指令的执行,控制器具有判断能力,能根据计算结果选择不同的工作流程。
    • 存储器,用于记忆程序和数据,例如内存
    • 输入设备,将数据或者程序输入到计算机中,例如键盘、鼠标
    • 输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等
    • CPU中还有寄存器和多级缓存Cache
  • cpu并不是直接是直接从速度慢的IO设备上直接读取数据,cpu可以从较慢的内存中读取数据到cpu的寄存器上运算

  • cpu计算器的结果也会写入到内存中,而不是写入到IO设备上

1.2、编程语言分类

  • 计算机语言
    • 人与计算机之间交互的语言
  • 机器语言
    • 一定位数组成二进制的0和1的序列,称位机器指令,机器指令的集合就是机器语言
    • 与自然语言差异太大,难学,难懂,难写,难记,难查错
  • 编程语言
    • 用一些助记符号替代机器指令,称之为编程语言,ADD A,B指的是将寄存器A的数与寄存器B的数相加得到的数存放在寄存器A中
    • 汇编语言写好的程序需要汇编程序转换成机器指令
    • 汇编语言只是稍微好记了些,可是认为就是机器指令对应的助记符。只是符号本身就近自然语言
  • 低级语言
    • 面向机器的语言,包括机器语言,汇编语言
    • 不同的机器不能通用,不同的机器需要不同的机器指令或者编程程序
  • 高级语言
    • 接近自然语言和数学语言的计算机语言
    • 高级语言首要书写源程序,通过编译程序把源程序转换成机器指令的程序
    • 1954年正式发布Fortran语言是最早的高级语言,本意是公式翻译
    • 人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
      image

1.3、低级语言到高级语言

  • Linux上运行的指令在windows上没办法运行是因为ABI不同即应用程序二进制接口
  • 语言越高级,越接近人类的自然语言和数学语言
  • 语言越低级,越能让机器理解
  • 高级语言和低级语言之间需要一个转换的工具:编译器、解释器
  • 编译语言
    • 把源代码转换成目标机器的CPU指令
    • C、C++等语言的源代码需要本地编译
  • java、Python、C# 的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行
  • 编译语言,把源代码转换成目标机器的CPU指令
  • 解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码(python是解释型语言)

1.4、高级语言的发展

  • 非结构化语言
    • 编号或标签,GOTO,子程序可以有多个入口和出口
    • 有分支、循环
  • 结构化语言
    • 任何基于结构只允许是唯一入口和唯一出口
    • 顺序、分支、循环、废弃GOTO
  • 面向对象语言
    • 更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
    • 封装、继承、多态
  • 函数式语言
    • 古老的编程方式,应用在数学计算,并行处理的场景,引入到了很多现代高级语言中
    • 函数是“一等公民” 高级函数

1.5、程序Program(程序、写程序难点)

  • 程序
    • 算法 + 数据结构 = 程序
    • 数据一切程序的核心
    • 数据结构是数据在计算机中的类型和组织方式
    • 算法是处理数据的方式,算法有优劣之分
    • 只有选对了合理的数据结构,并采用合适的操作该数据结构的算法,才能写出高性能的程序。
  • 写程序的难点
    • 理不清数据
    • 搞不清处理方式
    • 无法把数据设计转换成数据结构,无法把处理方法转换成算法
    • 无法用设计范式来进行程序设计
    • 世间程序皆有BUG,但不会debug
posted @ 2021-04-27 23:26  SRE运维充电站  阅读(661)  评论(0编辑  收藏  举报