【MIT 6.0001 课程笔记】Lecture 1. What is computation?

Lecture 1. What is computation?

随堂阅读资料

  • Chapter 1 and 2.1
  • PPT Lecture 1

作业

  • Problem Set 0

正式笔记

Topics 课程主题

  • 理解数据结构 data structure
    • represent knowledge with datastructures
    • iteration and recursionas computational metaphors
  • 优化代码风格
    • abstractionof procedures and data types
    • organize and modularize systems using object classes and methods
  • 如何评估代码性能
    • different classes of algorithms, searching and sorting
    • complexity of algorithms

What does a computer do 计算机功能

  • 基本性能
    • 计算
    • 存储
  • 计算分类
    • 已有语言:C、汇编
    • 自行编程计算
  • computer only knows what you tell them

不同类型的知识

Declarative Knowledge 陈述性知识

陈述性知识描述了一个事实。如:我会在课程结束前赢得纸牌游戏。

Imperative Knowledge 程序性知识

程序性知识描述了具体的步骤、算法

如:

  • 先放盐
  • 在放葱
  • 再爆炒
  • 出锅装盘

更具体的例子

陈述性知识

x的平方根是y,代表着 y ∗ y = x y*y=x yy=x

程序性知识

要求x的平方根y:

  1. 先猜一个数,g
  2. 如果g*g足够接近x,停止计算,并返回g为答案
  3. 否则,做一次新猜测,新猜测的值是g和x/g的平均
  4. 用新猜测再次尝试,循环直至答案足够接近。

What is a recipe? 怎样才算一个配方(程序性知识)?

  1. 拥有有序(线性)的步骤(控制流flow)
  2. 能够明确执行到任一步骤(控制流的进度)时,是否需要repeat/continue/loop
  3. 一个明确的量化指标,用于评定程序何时停止

计算机的特性

计算机的作用

  • 装有固定程序的计算机
    • 计算器
  • 可存储的计算机
    • 存储和执行指令的机器

计算机的结构

image-20201125143611504
  • 存储模块、控制单元、逻辑计算单元

  • 输入、输出

  • control unit用于计算程序执行次数(c语言for循环中常用的i参数)

  • arithmetic logic unit 执行具体操作,如加减乘除

Stored Program Computer 内储程序计算机

  • 有明确的指令存储在电脑中
    • 根据已定义的基础运算进行编程
      • 算数计算与逻辑计算
      • 简单测试(用于判断)
      • 移动数据、赋值数据
  • 按特定指令执行的程序
    • 用test测试来控制程序执行进度(repeat/continue/loop)
    • 完成后结束程序

程序的基本原则

  • 图灵提出的6大原则

    • Right: Move the Machine’s head to the right of the current square
    • Left: Move the Machine’s head to the left of the current square
    • Print: Print a symbol on the current square
    • Scan: Identify any symbols on the current square
    • Erase: Erase any symbols presented o the current square
    • Nothing/HALT: Do nothing
  • 现代的计算组合更加丰富,可以通过抽象化一些已有步骤来形成新计算原则

  • 任何在某个语言中的计算可以在其他程序语言中被完整还原

    • 所有语言的计算能力是等价的

    • 硬件资源调用和执行时间可能会有区别

创建一个recipe的要素

  • 一个程序语言提供了基本操作命令(加减乘除等)
  • 表达式:指利用基本命令组合实现的内容
  • 无论是表达式,还是计算过程,在程序语言中都有其价值或意义

关于编程语言

基本数据结构/元素

  • 英语:以单词为元素
  • 程序语言:以数字、字符串、简单操作符为基本元素

语法问题

  • 二者都有语法规范性
    • 很容易检测语法错误

Static Semantics 静态语义规则

  • 语法没问题,但没有意义/解释不通
    • 有些软件可以检查出来
    • 可能会导致意料之外的操作

歧义性

  • 英语有歧义性,但程序语言不能有。
  • 但程序语言可能会出现执行情况与预想情况截然不同的可能
    • 程序中断
    • 程序不停止
    • 程序给出非期望结果

关于Python

Program 程序

  • 程序:指一系列的定义和命令

Objects 对象

  • 程序主要针对数据对象进行操作
  • 对象的类型决定了可对其进行的操作
  • 对象分为标量和非标量
    • 标量如数字、字符
      • int
      • float
      • boo
      • NoneType
      • 可用type()函数查看对象类型
      • 可用int()/float()对数据类型进行强制转换
    • 非标量如数组

Print 输出

print()

Expressions 表达式/语句

  • 表达式将对象和操作符结合在一起,形成表达式

  • 表达式有其值,该值有数据类型

  • 基本表达式格式

    <object><operator><object>
    
  • 基本的操作符(算子)

    • 加减乘除
    • %取余
    • **次方
  • 算子优先级

    • **次方
    • *乘号
    • /除号
    • 加减乘除,由左到右

变量的定义

  • 等号在程序中是赋值命令
  • 赋值语句执行后,该变量和值之间有了联系
  • 可通过使用变量来调用所设值
  • 为什么要定义变量?
    • 方便重复使用
    • 方便调整程序(如修改参数)
    • 增强程序可读性
pi=3.1415926

编程和数学的差别

  • 主要在于等号的用法,编程中等号用于赋值,数学中的等号=在编程里为双等号==
  • 编程中还可以用i=i+1更新i值,在这个过程中,i变量与原来的值x的联系被取消,与原来的值x+1建立了新联系
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值