您的位置:首页 > 理论基础

计算机科学与Python编程导论_MIT 学习笔记(一)

2017-12-08 22:55 417 查看
课程目标

学会用计算机的算法机械表达来完成挑战

学会计算机思维

找到方法论

分解为机械式的步骤

转化为计算机可执行的步骤

计算机的能力

计算

存储

计算机可以完成的计算:

内置函数

我们自己创造的函数

即使计算机能够高速运行、大量储存,仍然需要好的算法来优化计算。

计算机的局限:

在非常局部、微观的问题上(如:预测接下来1小时的天气),需要非常大的运算量来建模,这反过来也能帮助实现加密。

图灵停机问题(类似理发师悖论),说明存在无法在有限时间内通过计算机计算的问题。

什么是计算?

什么是知识?

事实陈述:给与已有知识,但不能给与新知识

方法论:不能给与已有知识,但可以给与新知识

一个程序性知识(方法论)的例子:

“x的平方根y是满足y∗y=x的数”

这是一个事实陈述,可以用来验证数y是否是x的平方根,但不能教我们如何寻找x的平方根。

公元前一世纪Herion of Alexanderia创造了一个算法:

1 初始猜测g

2 如果g∗g和x足够接近,则停止,且说g就是答案

3 如果g不满足上述条件,则取g=average(g,xg)

4 重复2、3直到停止

def root(x):
y=1
for i in range(1000):
if y*y-x<0.001 and y*y-x>0:
break
else:
y=(y+x/y)/2
print(y)


如何实现算法?

1 为算法制造一个机器——“固定程序计算机”

例如:

计算器

1941年,Atanasoff和Berry为解线性方程制造的计算机

1940s,图灵为破译密码制造的bombe计算机

2 既能计算又能存储的计算机——“存储程序计算机”

存储程序计算机的构造

预先定义的原语指令

简单的数学和逻辑

简单的数字字符检测

在机器内移动数据的能力

存储好后

翻译器

按顺序浏览指令并执行

通过检测,在任务完成时使指令流停止

下图中的计算机由以下三部分组成:

内存(存储程序和数据)

控制单元(对已执行的命令计数)

算术逻辑单元(检测特定值的大小是否符合停止或跳转程序的条件)



什么是原语?

图灵完备性(Turing complete):6种原语

语言三要素:

基本元素(数字、字符、简单运算)

语法

语义:告诉我们表达式的意思

静态语义:例如:123/’abc’是不符合语义的运算

形式语义(全语义):同时满足语法和静态语义有效的句子的意义(没有歧义)

好的程序语言会发现错误(bug)并指导你改正

但当程序满足语法和语义有效时,就不会报错,并拥有一定意义,但不一定是我们想要的意义。

这类问题通常这样出现:

计算机停止运作

计算机一直运作直到我们主动停止

计算机给出非我们预期的答案

总结:

我们的目标是学习程序语言的语法和语义,构造合法的程序来用计算机做有趣的事

本质上是将方法论翻译为计算机可以理解的语句,来使计算机为我们服务

优化方法论的思维
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 计算机科学