CS导论 - 全景图

AI 摘要: 本文介绍了计算机系统的结构和历史发展,以及计算机科学的领域和从业人员的技能要求。计算机系统按照分层结构进行组织,从内向外分为信息、硬件、程序设计、操作系统、应用程序和通信。计算机的发展经历了四个时代,从早期的机械机器到现代的大型互联网公司和个人计算机。计算机科学的领域包括理论计算机科学、计算机系统、计算机应用技术和软件工程。计算机科学从业人员需要具备算法思想、数据结构、程序设计和设计的技能。

1. 计算机系统

  • 计算系统:动态实体,通过交互与环境交互以解决问题的硬件、软件以及它们管理的数据;
  • 计算机硬件:计算系统的物理原件;
  • 计算机软件:提供计算机执行的指令的程序;

计算系统的分层(由内向外,洋葱)

  • 信息:01二进制,多种类型的信息
  • 硬件:门和电路
  • 程序设计:目的是解决问题,负责处理软件、指令执行、数据管理
  • 操作系统:计算机硬件与软件资源管理、是用户与计算机进行交互
  • 应用程序:解决真实世界的问题,一些特点领域专用,如信息系统、AI、VR
  • 通信:计算机相互通信,进行信息的传递,共享信息和资源

有时候我们很容易掌握细节,但却失去了全局观念,计算机科学导论就是就是计算机科学的纲。

抽象:删除了复杂细节的心理模型

抽象只保留了实现目标所必须的信息,删除或隐藏了复杂的细节。

抽象是计算的关键,计算系统的分层也是抽象的概念;

人在短期记忆中同时管理7条信息,Miller定律

2. 计算的历史

2.1 硬件简史

早期

  • 算盘、三维代币、计数法、文字
  • 17世纪,齿轮驱动机械机器
  • 18世纪,穿孔卡片,人口普查应用
  • 1936年,英国数学家阿朗图灵,发明图灵机,为计算理论奠基
  • 1951,开启新的硬件时代

第一代(1951~1959)

  • 真空管
  • 磁鼓
  • 磁带
  • 辅助存储器

第二代(1959~1965)

  • 晶体管
  • 磁芯
  • 磁盘:拥有标识符、地址

第三代(1965~1971)

  • 电路板
  • 集成电路IC,
  • 终端:键盘,屏幕

第四代(1971~现在)

  • 大规模集成电路
  • 硅片
  • PC个人计算机
  • 大型互联网公司产生,苹果、IBM
  • 工作站
  • RISC,每台计算机都有自己的一套指令,称之为机器语言
  • UNIX操作系统

其他相关

并行计算(1980后)
  • 单处理机计算
  • 并行体系结构,依靠互联的处理器(两类:所有处理器共享同一存储单元;每个处理器有自己的本地存储,通过高速内部网络互相通信)
  • SIMD:单指令多数据流计算机,程序分操作分片段,指令分开执行;
  • MIMD:多指令多数据流,同时运行程序不同部分;
  • 并行程序设计难,程序设计必须思考利用并行进行程序设计和解决问题的方法
连网
  • 1960:ARPANET - 美国政府资助的网络,演化为后续的Internet,采用包交换,以及TCP/IP协议
  • 1973:以太网=同轴电缆+以太网通信协议
  • 1985:Intel芯片支持对PC连网
摩尔定律
  1. 每年集成电路板能容纳的电路数量增加一倍
  2. 每18个月芯片集成度增长一倍
  3. 每18个月计算机功率增长一倍
Ada Lovelace

1815年,第一位程序员,英国,预测AI,短暂而光辉的一生,其父亲也是拥有惊世骇俗和桀骜不驯的天性

  • 8岁,建造复杂船模型;
  • 18岁,聆听博士分析机器讲座,唯一理解演讲内容,同时与博士成为朋友;
  • 27岁,翻译分析机概要,成为领域权威
  • 36岁,死亡

2.2 软件简史

第一代(1951~1959)

  • 机器语言:内置于计算机电路中指令(两个数求和:3条二进制指令)
  • 汇编语言:辅助程序设计,程序设计人员和机器硬件直接的缓冲器
  • 汇编器:读取汇编程序指令,翻译成等价的机器语言
  • 系统程序员:编写辅助工具

第二代(1959~1965)

  • 高级语言:类似英语语言,加速多台计算机运行同一个程序,代表:
    • FORTRAN
    • COBOL
    • Lisp:人工智能应用程序研究
  • 高级语言都拥有配套的翻译程序,把高级语言翻译成等价的机器指令,早期,高级语言通常被翻译成汇编语言,然后再被翻译成机器码指令
  • 编译器:是一种计算机程序,它会将用某种编程语言写成的源代码,转换成另一种编程语言;
  • 应用程序员:基于高级语言,编写特定领域的应用程序;

第三代(1965~1971)

  • 操作系统:单作业系统效率低下,引入操作系统进行资源的管理,以便进行效率的提升
  • 装入器
  • 连接器
  • 系统软件:实用程序、OS、语言翻译程序(汇编器和编译器)构成
  • 分时系统
  • 社交网络分析,对人如何交互进行建模,人视为节点,关系视为链接(图论)
  • 应用软件的用户

第四代(1971~1989)

  • 结构化程序设计:逻辑,有规则的程序设计方式,代表语言
    • Pascal
    • Basic
    • C
    • C++
  • 鼠标
  • 应用软件逐渐丰富

第五代(1990~现在)

  • 三个著名代表:
    • 微软的操作系统
    • WWW(World Wide Web)万维网
    • 面向对象程序设计和编程方法的出现(代表JAVA)
  • 从计算机到书本:教育是摆脱贫困的门票,每天世界上2.5亿儿童无学可上,2/3是女孩
  • 1990年,日内瓦,WWW创建,同时引入HTML语言和浏览器
  • 2002,Web2.0兴起(代表FB)
  • 用户概念的改变:应用程序设计员、系统程序员、万维网冲浪用户

3. 并驾齐驱的嵌入式系统

无处不在的嵌入系统

4. 计算工具与计算科学

  • 系统程序员=>开发程序工具
  • 应用程序员,利用程序工具=>开发专业应用软件
  • 应用软件用户,利用软件=>使用应用软件工具完成工作

学科被定义为一种学习领域。

计算机科学学科:计算机专家在工作中使用的知识和实践的主体,主体通常被描述为对算法过程的系统研究,包括算法的理论、分析、设计、有效性、实现和应用。

科学学科尝试理解它们的系统是如何运作的。

计算学属于科学学科,在设计和构建越来越大的计算系统时,采用的是工程学的技术。

从业人员四个领域技能

算法思想

用过程表示问题,解决问题(算法)

表示法

有效的处理方式存储数据(数据结构)

程序设计

把算法和数据结构组织在计算机软件中(软件开发)

设计

软件满足用途(产品设计)

1989年计算学科主题领域(9个主题)

6个理解个构建计算工具(系统领域)

  1. 算法和数据结构
  2. 编程语言
  3. 计算机体系结构
  4. 操作系统
  5. 软件方法与工程学
  6. 人机交互

3个计算工具使用(应用领域)

  1. 数据库和信息检索
  2. 人工智能和机器人技术
  3. 计算机图形学

2001年计算学科主题领域(14个主题)

修改

  1. 修改:算法和数据结构归到编程基础
  2. 修改:人工智能和机器人技术扩展为智能系统
  3. 修改:数据库和信息检索归为信息管理
  4. 新增:网络中心计算

新增

  1. 新增:离散结构(对计算十分重要的数学领域课题)
  2. 新增:算法与复杂性(对算法的系统学习)
  3. 新增:社会和职业道德问题
  4. 新增:计算科学(与动力学、天体力学、生物信息学、经济预测等数值和模拟技术的应用)

计算研究促成了人们日常使用的应用,计算转变速度惊人,这种共生关系比其他学科更强。

既要分析系统,也要分析应用,从全面的角度了解计算机学科

5. 计算机科学的领域(wiki)

5.1 理论计算机科学

  • 数据结构和算法
  • 计算理论
  • 信息论与编码理论
  • 编程语言和编译器
  • 形式化方法

5.2 计算机系统

  • 计算机体系结构与计算机工程
  • 操作系统
  • 并发、并行与分布式系统
  • 计算机网络
  • 计算机安全和密码学
  • 数据库

5.3 计算机应用技术

  • 计算机图形学
  • 科学计算
  • 多媒体技术
  • 数据挖掘
  • 人工智能
    • 自动推理
    • 机器学习
    • 计算机视觉
    • 自然语言处理

5.4 软件工程

6. 小结

  • 计算机系统:硬件、软件、数据组成
  • 计算系统分层:信息、硬件、程序设计、操作系统、应用软件
  • 计算的历史四个时代:真空管、晶体管、集成电路、大规模集成电路
  • 计算学科从业人员四领域:算法、数据结构、程序设计、产品设计
  • 计算学科主题领域:14个