MIT的計(jì)算機(jī)導(dǎo)論課程
一個(gè)8周課程
week1
第一講:計(jì)算科學(xué)簡(jiǎn)潔
課程目標(biāo)
- 能夠讓計(jì)算機(jī)為自己服務(wù)
- 學(xué)會(huì)計(jì)算機(jī)的思維
首先要知道計(jì)算機(jī)能夠做什么?
只做兩件事
- 計(jì)算
- 記錄結(jié)果
自己有基本計(jì)算方法
但是我可以創(chuàng)造更多方法
計(jì)算機(jī)的運(yùn)算速度非常快
存儲(chǔ)容量也非常大
需要一個(gè)優(yōu)秀的算法。
計(jì)算機(jī)的局限
1.太復(fù)雜的問題
例如,精確的天氣預(yù)報(bào)和現(xiàn)代密碼學(xué)
- 本身就不可能被解決的問題
例如:圖靈停機(jī)問題(halting problem)
算法是一個(gè)概念,程序是算法的具體實(shí)現(xiàn)
計(jì)算思維模式意味著一切都可以看做是一個(gè)涉及到數(shù)字和公式的數(shù)學(xué)問題
為什么是計(jì)算?
什么是知識(shí)?
陳述性知識(shí)
程序性知識(shí)——how to(機(jī)械)
告訴一個(gè)方法去完成目標(biāo)、解決問題
什么是平方根?
怎么找到平方根?
怎么把這些方法編程計(jì)算機(jī)能理解的過程
相對(duì)只能完成特定過程的計(jì)算機(jī)
我們有了馮諾依曼式計(jì)算機(jī)

程序計(jì)數(shù)器A program counter
指向程序?qū)?zhí)行的下一條命令points the computer to the next instruction to execute in the program.
我們利用6種基本的運(yùn)算就可以實(shí)現(xiàn)所有東西
我們的目的:理解程序性知識(shí),然后變成機(jī)械性步驟
當(dāng)我們談及程序性語(yǔ)言的時(shí)候
- 熟悉所有的原始語(yǔ)句(結(jié)構(gòu))——數(shù)字、字母、運(yùn)算符號(hào)
- 怎么把他們合法地組合在一起,實(shí)現(xiàn)我們的功能——語(yǔ)法,有點(diǎn)想英語(yǔ)語(yǔ)法那樣
靜態(tài)語(yǔ)義錯(cuò)誤——順序是對(duì),沒有用第三人稱單數(shù)的動(dòng)詞形式
另一種錯(cuò)誤:Semantics,語(yǔ)法上沒有錯(cuò)誤的,但是要的結(jié)果不是程序員想要的。
什么地方能夠讓我們出錯(cuò)?
- 語(yǔ)法錯(cuò)誤——普遍而且容易被抓到
判定一個(gè)字串是否合法Determines whether a string is legal
2.靜態(tài)語(yǔ)義錯(cuò)誤——
判定一個(gè)字串是否有意義Determines whether a string has meaning - 語(yǔ)義錯(cuò)誤——突然停止,永遠(yuǎn)運(yùn)行,不是想要的。
賦予一個(gè)合法的語(yǔ)句意義Assigns a meaning to a legal sentence
這里具體說一下這三種錯(cuò)誤的區(qū)別。
- 語(yǔ)法錯(cuò)誤,就是明顯不符合語(yǔ)法的錯(cuò)誤。例如“cat I have”
- 靜態(tài)語(yǔ)義錯(cuò)誤,就是符合語(yǔ)法,但是有另外錯(cuò)誤的語(yǔ)句,例如“I has a cat”
- 語(yǔ)義錯(cuò)誤,就是有不止一種意思的語(yǔ)句
我們的目標(biāo)
- 學(xué)習(xí)語(yǔ)法與語(yǔ)義
- 上述元素變成解決問題的方法,并被計(jì)算機(jī)理解
- 熟悉這種思維,選用合適的方法解決問題
設(shè)置編程環(huán)境
這個(gè)課程推薦使用的python編程環(huán)境 Enthought Canopy Python Distribution
而且不需要用python3.0以上的版本,只需要用到python2.7就可以了
第二講:編程基礎(chǔ)