一,编程常识【C++】

1.1-计算机篇

概念:

  所谓的计算机其实就是由一坨硬件设备以及建立在硬件上面运行的软件所构成的集合!

诞生:

  美国 宾夕法尼亚大学 弹道计算!

发展:

  • 第一代计算机:电子管计算机
  • 第二代计算机:晶体管计算机
  • 第三代计算机:集成电路计算机
  • 第四代计算机:大规模集成电路计算机
    在这里插入图片描述

作用:

  计算机最初被设计出来,主要是用于弹道计算!

  • 计数

    计数指的就是统计事物的个数的过程,如果逐个数数分为逐一计数,如果几个一群数数,分群计数;总之计数是得到数的过程(结绳计数,摆石头,数手指等)!

  • 计算
    计算指的就是通过已知的数和一定的规则得到未知数(新数)的过程(口算,心算,机械计算,计算机运算等)!

思想:

  计算机最初设计的时候,是按照冯·诺依曼设计思想设计出来的!

  • 输入设备(键盘,鼠标)
    通过输入设备,作为数据输入!

  • 输出设备(显示器,扬声器)
    通过输出设备,呈现数据输出!

  • 运算器(Arithmetic Logic Unit -> ALU)
    运算器主要功能就是在控制信号的作用下,完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算以及移位、补位等运算!

  • 控制器(Control Unit -> CU)
    控制器的工作流程为:从内存中取指令、翻译指令、分析指令,然后根据指令的内存向有关部件发送控制命令,控制相关部件执行指令所包含的操作;是计算机的神经中枢和指挥中心,只有在控制器的控制下,整个计算机才能够有条不紊地工作、自动执行程序!

  • 存储器(Memory)
    存储器主要是用于指令和数据的临时和长期存储!

    ALU + CU = CPU(中央处理器)

构成:

  计算机系统是由软件系统和硬件系统两部分构成!

  • 软件
    所谓的软件其实就是一坨直接/间接指挥计算机工作的指令集!
    种类:应用软件(QQ,爱奇艺,浏览器等),驱动软件(显卡驱动,声卡驱动,鼠标驱动等),系统软件(操作系统)
  • 硬件
    所谓的硬件其实就是一坨看得见摸得着的硬件设备,比如(主板,CPU,内存条,显卡,鼠标键盘,显示器等一系列硬件设备)!

1.2-编程语言

  • 编程概念:
      所谓编程就是按照一定的规则[编程语言]编写能够直接/间接指挥计算机如何工作的指令集(程序)!
  • 编程目的:
      编程的目的其实就是为了让计算机按照我们的指示和步骤去干活,最终达到指挥计算机工作的目的!
  • 编程语言:
      编程语言其实就是人和机器直接[二进制指令]/间接[非二进制指令]通信的一种规则,通过这种规则我们可以实现和计算机之间的通信(计算机能够识别我们的指令,按照我们编写出来的代码指令去执行),最终帮助我们完成一系列事情!

语言分类:

  • 理解维度
    越接近人,越容易理解,越靠近机器,越难理解!

    • 机器语言:
      二进制语言(0/1语言 二进制指令),计算机能够直接识别和执行,每一个二进制指令都对应一个具体的硬件操作!
      优点:快
      缺点:看不懂,难记忆!
    • 汇编语言:
      汇编语言其实就是符号化的二进制语言, 其实就是将二进制指令都用一个符号(汇编指令)所代替!汇编语言 -> 汇编(汇编器:将汇编指令翻译成二进制指令的过程)->二进制指令
      优点:快,相对机器指令更好记忆和书写!
      缺点:需要对底层硬件和知识非常了解,本质还是二进制语言,只不过符号化了!
    • 高级语言:
      更靠近人的思维,较容易理解!
      C/C++:相对于二进制和汇编,算高级语言了,Python,Java,Go等!
  • 思想维度
      根据解决问题的不同思想维度划分!

    • 面向过程语言:汇编语言,C语言
      所谓的面向过程其实指的就是我们面向的是解决一个问题的具体步骤(具体)!
      栗子:
      吃酸辣土豆丝:
      买菜谱
      买菜
      买厨具
      洗菜切菜
      烹饪
      装盘
      开吃!
    • 面向对象语言:C++,Python,Java,Go
      所谓的面向对象其实指的就是我们面向的是能够解决问题的一个对象(整体)!
      栗子:
      吃酸辣土豆丝
      喊过来一个厨子/去一家饭店/美团找一家
      告诉它我们要吃酸辣土豆丝,给它钱
      然后送过来就吃上了酸辣土豆丝
  • 是否翻译

    • 编译型语言[快]:C/C++
      你写了一篇中文作文,然后找个翻译,一次性翻译成英语之后,直接给外国人!
    • 解释型语言[慢]:Python,Java,Kotlin
      你写了一篇中文作文,然后拉个翻译,翻译读一句中文,翻译一句英文给外国人!

1.3-编程抽象

  • 数据定义
    站在现实角度我们把描述事物的符号我们称之为数据,在计算机的角度来看,凡是能够输入到计算机内,被计算机所识别和处理的我们称之为数据!
  • 描述定义
    任何一个事物我们都可以用一个符号来代表它,那么这个过程就称之为符号化,比如长城是一个具体的建筑,我们用"长城"这样的一个标识来代表和描述它,就称之为长城这个具体建筑的描述!
  • 抽象定义
    所谓的抽象指的是当我们抛开具体的细节和数据,我们发现它们是一个东西,比如1,2,3,4,5;这都是具体的数据,当我们抛开它们具体的含义和数值时我们发现它们是一个东西,当我们用一个符号来代表符合这一特征的一类具体数据时,那么这个过程就称之为抽象过程,所谓的抽象其实就是抛开具体,符号表示!

1.4-操作系统

概念:

  所谓的操作系统站在用户的角度其实就是一款介于用户与计算机之间方便用户使用计算机的一款软件;站在计算机系统的角度,操作系统相当于计算机系统的管理者,调度和协调者,负责管理软硬件资源,协调程序的有序运行!

种类:

  Windows,Unix,Linux(Ubuntu,Centos等),Android(Linux),MacOS(Unix)

常识:

  • 程序
    在程序未被调入内存中运行时,它就是一坨存在于硬盘之上的一坨按照一定格式组织的指令数据和其它数据没有任何本质区别!
  • 进程
    只有当程序被调入内存中去运行时,我们称之为这是一个进程,所以进程描述的是一个调入内存中运行的程序(进程是独立运行和资源分配的基本单位)!
  • 线程
    线程是操作系统调度的基本单位,也就是说什么意思呢?如果你想要CPU去执行你的代码,你必须是个线程(具备独立运行的代码块),线程的本质其实就是一种保障代码块独立运行的一种机制,本质就是一个函数!
    创建进程时,创建第一个线程(程序主执行流),这个线程我们称之为主线程!
  • 同步
    所谓的同步其实指的就是有顺序的去访问和执行同一资源和代码,存在依赖顺序,类似接力赛,一个跑完,另外 一个才可以跑!
  • 异步
    所谓的异步其实指的不访问同一资源和代码,无依赖顺序,各跑各的,类似个人赛,比赛一开始各自跑自的!
  • 并行
    同一时刻,存在多个任务同时执行,真正意义的并行存在于多核处理器中,相当于同一时刻,多个人同时干活!
  • 并发
    一段时间,存在多个任务都在运行,在单核处理器中,同一时刻只有一个任务在执行,在微小的一段时间内存在多个程序都在运行,宏观上的并行,微观上的并发!相当于在一段时间内,多个人在干活!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值