MIT6.00 1x 第一讲-计算机科学简介-笔记
2017-12-12 00:01
316 查看
6.00.1x 计算机科学和PYTHON编程导论
1. 计算科学简介(Introduction to computation)
1.1 计算科学基础(Basics of computation)
怎样进行计算机编程?怎样编写计算机能够理解的指令?更重要的是如何拥有计算思维(computational thinking)
也就是说,不仅要能够熟练地使用计算机,
还要让计算机完成交代的任务,用它解决问题。
一台基本的计算机能做什么?
进行计算(performs calculations)
存储结果(remembers the results)
这些计算指的是什么?
制作商提供给计算机的内置(built in)运算
我们自己创建的计算方法(our own methods of calculating)
现代计算机有多快,容量有多大?
将一个儿童橡皮球悬在离地一米的地方然后放手。
如果让它就这么落下去,考虑地球引力的话,
那么,当它碰到地面时,计算机已经执行了
10亿次操作。非常快
如果我们假设1byte重1ounce(约28克),
一台典型的电脑通常有成百上千个GB的存储容量,
一台计算机中就有大约3亿吨的存储容量。非常大
计算机没有局限性吗?有
事实上,互联网上现在大约有450亿可供搜索的页面。
如果我们假设每个页面有大约1000个词,每个词需要10次操作,
我们要花5.2天来搜索互联网才能找到要找的东西。
计算机很快,但是面对一些复杂任务(破译加密、天气预报)
但同样需要设计更聪明、智能、灵敏的算法(good algorithm design)去解决问题。
有些问题甚至是无解的,如图灵停机。
1.2 知识的类型
陈述性知识(Declarative knowledge)描述事实,如:数字x的平方根是数字y,可得y * y = x
单凭以上描述不能解平方根
程序性知识(Imperative knowledge)
或者称为操作方法或者方法,给予我们找到新信息的方法。
how to methods or recipes, give us ways of finding new information
可以将算法想象为方法(algorithms are recipes),即做某件事的一系列机械步骤。
1.3 基本的机器架构(basic machine architecture)
如何将算法变为计算机内的机械过程?固定程序计算机(fixed program computers),如计算器、Alan Turing的bombe
存储程序计算机(stored program computer),通过指令序列有序控制算法步骤
That sequence of instructions will be built from a
predefined set of primitives.这个指令序列将由一套预先定义的原语组成。
什么是原语(primitives)?
图灵证明计算机内只需要6种原语就可以计算任何东西
直接的原语操作序列很复杂,现代编程语言提供一套更方便的原语集。
任何东西只要对某一种语言是可计算的,对其他任何语言也是可计算的。
语言只是工具
MEMORY — 内存
countrol unit — 控制器
Program counter — 程序计数器
ARITHMETIC LOGIC UNIT (ALU) 算术逻辑单元
accumulator — 累加器
A computational mode of thinking means that everything
can be viewed as a math problem involving numbers and formulas.
计算思维模式意味着一切都可以看做是一个涉及到数字和公式的数学问题。
1.4 编程语言的特点
提供一套原语集(a set of primitive operations)它们预先定义好,是ALU的组件
拥有基本元素,比如数字、字符串、操作符
语法(syntax),字符串的字符和符号有良好的组合
语义(静态语义static semantics、全语义semantics)
可能出现的错误?
语法错误,容易被计算机捕获
静态语义错误
没有语义错误,但不是我们想要的结果
Learn the syntax and semantics of a programming language.
Learn how to use those elements to translate “recipes” for solving a problem into a form that the computer can use to do the work for us.
Computational modes of thought enable us to use a suite of methods to solve problems.
我们的目标是学习编程语言中的语法和语义,使用那些基本元素,将我们解决问题的方法(算法),转化成计算机能够理解的形式,从而利用计算机解决问题。
相关文章推荐
- MIT开发课程-计算机科学及编程导论-列表和可变性、字典、效率简介-笔记
- MIT开发课程-计算机科学及编程导论-课程简介及数据类型-笔记
- 600X笔记(week-1 计算机科学简介及编程基础)
- 计算机科学与Python编程导论_MIT 学习笔记(五)
- MIT麻省理工学院公开课:计算机科学及编程导论 Python 笔记1-3
- 计算机科学与Python编程导论_MIT 学习笔记(三)
- MIT公开课:计算机科学及编程导论 Python 笔记5 浮点数,逐次逼近法和二分法
- 计算机科学与Python编程导论_MIT 学习笔记(一)
- 计算机科学与Python编程导论_MIT 学习笔记(七)
- MIT计算机科学及编程导论02课学习笔记
- 计算机科学与Python编程导论_MIT 学习笔记(二)
- MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归
- 计算机科学与Python编程导论_MIT 学习笔记(四)
- 计算机科学与Python编程导论_MIT 学习笔记(六)
- 我如何征服MIT的计算机科学课程【学习方法】
- mit 计算机科学及编程导论(9)
- 自动生成字符串并完成索引-计算机科学导论笔记18/7
- 笔记1_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan
- 公开课学习笔记-[哈佛]计算机科学CS50(一)
- MIT计算机科学与编程导论——class1