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连网
摩尔定律
- 每年集成电路板能容纳的电路数量增加一倍
- 每18个月芯片集成度增长一倍
- 每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个理解个构建计算工具(系统领域)
- 算法和数据结构
- 编程语言
- 计算机体系结构
- 操作系统
- 软件方法与工程学
- 人机交互
3个计算工具使用(应用领域)
- 数据库和信息检索
- 人工智能和机器人技术
- 计算机图形学
2001年计算学科主题领域(14个主题)
修改
- 修改:算法和数据结构归到编程基础
- 修改:人工智能和机器人技术扩展为智能系统
- 修改:数据库和信息检索归为信息管理
- 新增:网络中心计算
新增
- 新增:离散结构(对计算十分重要的数学领域课题)
- 新增:算法与复杂性(对算法的系统学习)
- 新增:社会和职业道德问题
- 新增:计算科学(与动力学、天体力学、生物信息学、经济预测等数值和模拟技术的应用)
计算研究促成了人们日常使用的应用,计算转变速度惊人,这种共生关系比其他学科更强。
既要分析系统,也要分析应用,从全面的角度了解计算机学科
5. 计算机科学的领域(wiki)
5.1 理论计算机科学
- 数据结构和算法
- 计算理论
- 信息论与编码理论
- 编程语言和编译器
- 形式化方法
5.2 计算机系统
- 计算机体系结构与计算机工程
- 操作系统
- 并发、并行与分布式系统
- 计算机网络
- 计算机安全和密码学
- 数据库
5.3 计算机应用技术
- 计算机图形学
- 科学计算
- 多媒体技术
- 数据挖掘
- 人工智能
- 自动推理
- 机器学习
- 计算机视觉
- 自然语言处理
5.4 软件工程
6. 小结
- 计算机系统:硬件、软件、数据组成
- 计算系统分层:信息、硬件、程序设计、操作系统、应用软件
- 计算的历史四个时代:真空管、晶体管、集成电路、大规模集成电路
- 计算学科从业人员四领域:算法、数据结构、程序设计、产品设计
- 计算学科主题领域:14个