MIT 6.00 导论课程笔记(一)
2017-02-06 13:29
1011 查看
本次笔记是观看网易公开课中麻省理工大学计算机科学导论课程Lecture01~04的内容之后得到的一些总结。
Eric介绍到,编程语言有三个维度:
低级的语言/高级的语言
低级语言如汇编语言更贴近于底层的物理实现,指令记忆复杂繁琐;高级语言如Python更贴近于人类语言,记忆较为简单。
通用的语言/特定的语言
通用的语言的意思是几乎可以做所有事,包括完成计算,网络通信,开发app等等;而特定语言是专为某一领域而设计的,如Matlab。
解释型语言/编译型语言
解释型语言是由语言内置的一个解释器逐行解释代码并进行执行,编译型语言是由编译器先将源代码编译成目标代码(通常为汇编语言),然后再直接执行目标码。
Python是高级的,通用的,解释型语言。
如
会弹出
semantic中文译解为语义,Eric区分了两种semantics
static semantics
指的是在还未运行时程序代码本身是否是meaningful的,这个解释器会帮助你进行debug
full semantics
指的是在代码运行时完全的语义,“what happens when run”,解释器无法完全帮助你进行debug,需要自己对代码进行逻辑判断。
branching分支
boolean表达:
loop/Iteration
因为我本人是有一定编程基础的,所以我只记录了对于我来说较为新的观点和知识。
Python是图灵完备的,图灵完备的意思是运用该语言可以计算一切可计算的。
一般,只要包含下列结构,该语言就是图灵完备的。
assignments 赋值语句
conditions 条件
input/output 输入/输出
looping constructs 循环结构
接下来是代码示例
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)
相关文章推荐
- MIT 6.00 导论课程笔记(二)
- MIT 6.00 导论课程笔记(三)
- MIT 6.00 导论课程笔记(四)
- MIT开发课程-计算机科学及编程导论-课程简介及数据类型-笔记
- MIT开发课程-计算机科学及编程导论-列表和可变性、字典、效率简介-笔记
- MIT6.00 1x Lecture 1 - Introduction to Computation 学习笔记
- MIT领导力课程笔记3:前Nokia 总裁Ollila——打造移动未来
- 【MIT领导力课程笔记】现任CISIO CTO(前Motorola CTO)Padmasree Warrior——创新转化产品的无缝转换
- 【MIT领导力课程笔记】前Nokia 总裁Ollila——打造移动未来
- MIT计算机科学及编程导论02课学习笔记
- MIT线性代数课程笔记对应代码-【lecture 3】
- MIT线性代数课程笔记对应代码-【lecture 4】
- MIT 线性代数课程 笔记
- MIT领导力课程笔记:施乐前CEO Anne——在火线上得到的经验
- MIT 6.00 1x Lecture 6 Objects 对象 学习笔记
- Writing in the Sciences 课程笔记 (导论、句子和段落)
- MIT 6.046J / 18.410J 2001秋季课程:算法导论(Introduction to Algorithms, Fall 2001)第一课
- 耶鲁大学开放课程:心理学导论:这就是你的大脑 笔记_2
- MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归
- MIT领导力课程笔记4:现任CISIO CTO(前Motorola CTO)Padmasree Warrior——创新转化产品的无缝转换