MIT 6.00 导论课程笔记(一)

本次笔记是观看网易公开课中麻省理工大学计算机科学导论课程Lecture01~04的内容之后得到的一些总结。

Lecture 01

Python

课程借助Python语言展开对于计算机科学与编码的一些说明。
Eric介绍到,编程语言有三个维度:

  • 低级的语言/高级的语言

    低级语言如汇编语言更贴近于底层的物理实现,指令记忆复杂繁琐;高级语言如Python更贴近于人类语言,记忆较为简单。

  • 通用的语言/特定的语言

    通用的语言的意思是几乎可以做所有事,包括完成计算,网络通信,开发app等等;而特定语言是专为某一领域而设计的,如Matlab。

  • 解释型语言/编译型语言

    解释型语言是由语言内置的一个解释器逐行解释代码并进行执行,编译型语言是由编译器先将源代码编译成目标代码(通常为汇编语言),然后再直接执行目标码。

Python是高级的,通用的,解释型语言。

Syntax, Semantics

Syntax中文意思是“句法,语法”,指的是编程语言所允许的合法的表达式表述,如果违反了该表述,则会提示“SyntaxError”

if x = 0:

会弹出

if x = 0:
         ^
SyntaxError: invalid syntax

semantic中文译解为语义,Eric区分了两种semantics

  • static semantics

    指的是在还未运行时程序代码本身是否是meaningful的,这个解释器会帮助你进行debug

  • full semantics

    指的是在代码运行时完全的语义,“what happens when run”,解释器无法完全帮助你进行debug,需要自己对代码进行逻辑判断。

Lecture 02

type

python中“一切皆对象”,对象的type是可以改变的,所以type checking是十分重要的。

straight-line programs

直线型编程,程序完全串行执行


  • branching分支
  • boolean表达:and or not
  • loop/Iteration

因为我本人是有一定编程基础的,所以我只记录了对于我来说较为新的观点和知识。

Lecture 03

tuple, list

tuple是元组,list是列表的意思

#tuple
a = (1,2,3)
a
(1,2,3)
#list
b = [1,2,3]
b
[1,2,3]
a[0]
1
b[0]
1

Simulate code

手工模拟代码可以选用flow chart(流程图)的方式进行逐步模拟。

Defensive programming

防卫型程序设计,对所有可能的路径进行设计。因为我们无法保证用户输入一个什么类型的东西,可能其输入的并不符合我们的要求,所以必须进行全方位的思考。

Turing

Turing six primitives

占个坑,过一段时间再来更新

Tuting complete language

图灵完备语言。
Python是图灵完备的,图灵完备的意思是运用该语言可以计算一切可计算的。
一般,只要包含下列结构,该语言就是图灵完备的。

  • assignments 赋值语句
  • conditions 条件
  • input/output 输入/输出
  • looping constructs 循环结构

Lecture 04

这门课的主要内容是Decomposition和Abstraction。

Function

将代码分解为模块化的代码便于理解和再加工。一种常用的方法是函数

break up into modules

supress details

new primitive

Recursion

递归是一种十分适合计算机的做法,它需要base case和inductive step。
接下来是代码示例

#回文数palindrome
 def inPalindrome(s):
    if len(s)<= 1:
        return True
    else:
        return s[0]==s[-1] and inPalindrome(s[1:-1])
#可以输出缩进的回文另一种显示
def isP1(s, indent):
    print indent,s
    if len(s)<= 1:
        print indent,'start with...'
        return True
    else:
        ans = s[0]==s[-1] and isP1(s[1:-1],indent * 2)
        print indent, ans
        return ans
############################
#裴波那契
def fib(x):
    if x == 0 or x == 1:
        return 1
    else:
        return fib(x-1)+fib(x-2)

猜你喜欢

转载自blog.csdn.net/sjz_hahalala479/article/details/54891901
今日推荐