0.计算机基础

计算机基础

编程基础

程序

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

电子计算机

能够执行程序的机器

现代计算机

  • 艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、
    逻辑学家,被称为计算机科学之父,人工智能之父。图灵提出的著名的图灵机模型为现代计算
    机的逻辑工作方式奠定了基础
  • 冯·诺依曼著名匈牙利裔美籍犹太人数学家、计算机科学家、物理学家和化学家 ,数字计算机之
    父。他提出了以二进制作为数字计算机的数制基础,计算机应该按照程序顺序执行,计算机应
    该有五大部件。

冯诺依曼系统架构

1545982208368

CPU由运算器和控制器组成;
运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理;
控制器,控制程序的执行;
存储器,用于记忆程序和数据,例如内存;
输入设备,将数据或者程序输入到计算机中,例如键盘、鼠标;
输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等;
CPU中还有寄存器和多级缓存Cache;

编程基础

1. 计算机语言:

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

2. 机器语言:

  • 一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言。
  • 与自然语言差异太大,难学,难懂,难写,难记,难差错。

3.汇编语言:

  • 用一些助记符替代机器指令,称为汇编语言。例如ADD A,B:指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中。
  • 汇编语言写好的程序需要汇编程序转换成机器指令。
  • 汇编语言只要稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言。

语言分类

1. 低级语言

  • 面向机器的语言,包括机器语言,汇编语言。
  • 不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序。

2. 高级语言

  • 接近自然语言和数学语言的计算机语言。
  • 高级语言首先要书写源程序代码,通过编译程序把源程序代码转换成机器指令的程序。
  • 1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译。
  • 人们只需关心怎么书写源程序代码,针对不同机器的编译的事交给编译器关心处理。

低级语言到高级语言

示意图

  • 语言越高级,越接近人类自然语言和数学语言;

  • 语言越低级,越能让机器理解;

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

  • C, C++等语言的源代码需要本地编译;

  • Java, Python,C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟器上运行;

note:

  • 编译语言:把源代码转换成目标机器的CPU指令;
  • 解释语言:解释后转换成字节码,运行在虚拟机上,解释执行中间代码;

高级语言的发展

非结构化语言

  • 编号或标签,GOTO, 子程序可以有多个入口和出口;
  • 有分支,循环;

结构化语言

  • 任何基本结构只允许是唯一入口和唯一出口;
  • 顺序,分支,循环,废弃GOTO;

函数式语言

  • 古老的编程范式,应用在数学计算,并行处理的场景。引入到了很多现代高级语言中;
  • 函数是一等公民, 高阶函数;

面向对象语言

  • 更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承;
  • 封装,继承,多态;

程序Program

什么是程序

  • 算法 + 数据结构 = 程序
  • 数据一切程序的核心
  • 数据结构是数据在计算机中的类型和组织方式;
  • 算法是处理数据的方式,算法有优劣之分;

写程序难点

  • 理不清数据;
  • 理不清处理方法;
  • 无法把数据设计转换成数据结构,无法把处理方法转换成算法;
  • 无法用 设计范式来进行程序设计;
  • 不会Debug;
posted @ 2018-12-18 16:02  pyfaith  阅读(196)  评论(0)    收藏  举报