本次筆記是觀看網(wǎng)易公開(kāi)課中麻省理工大學(xué)計(jì)算機(jī)科學(xué)導(dǎo)論課程Lecture01~04的內(nèi)容之后得到的一些總結(jié)。
課程借助Python語(yǔ)言展開(kāi)對(duì)于計(jì)算機(jī)科學(xué)與編碼的一些說(shuō)明。 Eric介紹到,編程語(yǔ)言有三個(gè)維度:
低級(jí)的語(yǔ)言/高級(jí)的語(yǔ)言
低級(jí)語(yǔ)言如匯編語(yǔ)言更貼近于底層的物理實(shí)現(xiàn),指令記憶復(fù)雜繁瑣;高級(jí)語(yǔ)言如Python更貼近于人類(lèi)語(yǔ)言,記憶較為簡(jiǎn)單。
通用的語(yǔ)言/特定的語(yǔ)言
通用的語(yǔ)言的意思是幾乎可以做所有事,包括完成計(jì)算,網(wǎng)絡(luò)通信,開(kāi)發(fā)app等等;而特定語(yǔ)言是專為某一領(lǐng)域而設(shè)計(jì)的,如Matlab。
解釋型語(yǔ)言/編譯型語(yǔ)言
解釋型語(yǔ)言是由語(yǔ)言內(nèi)置的一個(gè)解釋器逐行解釋代碼并進(jìn)行執(zhí)行,編譯型語(yǔ)言是由編譯器先將源代碼編譯成目標(biāo)代碼(通常為匯編語(yǔ)言),然后再直接執(zhí)行目標(biāo)碼。
Python是高級(jí)的,通用的,解釋型語(yǔ)言。
Syntax中文意思是“句法,語(yǔ)法”,指的是編程語(yǔ)言所允許的合法的表達(dá)式表述,如果違反了該表述,則會(huì)提示“SyntaxError” 如
if x = 0:會(huì)彈出
if x = 0: ^SyntaxError: invalid syntaxsemantic中文譯解為語(yǔ)義,Eric區(qū)分了兩種semantics
static semantics
指的是在還未運(yùn)行時(shí)程序代碼本身是否是meaningful的,這個(gè)解釋器會(huì)幫助你進(jìn)行debug
full semantics
指的是在代碼運(yùn)行時(shí)完全的語(yǔ)義,“what happens when run”,解釋器無(wú)法完全幫助你進(jìn)行debug,需要自己對(duì)代碼進(jìn)行邏輯判斷。
python中“一切皆對(duì)象”,對(duì)象的type是可以改變的,所以type checking是十分重要的。
直線型編程,程序完全串行執(zhí)行
branching分支boolean表達(dá):and or not
loop/Iteration 因?yàn)槲冶救耸怯幸欢ň幊袒A(chǔ)的,所以我只記錄了對(duì)于我來(lái)說(shuō)較為新的觀點(diǎn)和知識(shí)。 tuple是元組,list是列表的意思
#tuplea = (1,2,3)a(1,2,3)#listb = [1,2,3]b[1,2,3]a[0]1b[0]1手工模擬代碼可以選用flow chart(流程圖)的方式進(jìn)行逐步模擬。
防衛(wèi)型程序設(shè)計(jì),對(duì)所有可能的路徑進(jìn)行設(shè)計(jì)。因?yàn)槲覀儫o(wú)法保證用戶輸入一個(gè)什么類(lèi)型的東西,可能其輸入的并不符合我們的要求,所以必須進(jìn)行全方位的思考。
占個(gè)坑,過(guò)一段時(shí)間再來(lái)更新
圖靈完備語(yǔ)言。 Python是圖靈完備的,圖靈完備的意思是運(yùn)用該語(yǔ)言可以計(jì)算一切可計(jì)算的。 一般,只要包含下列結(jié)構(gòu),該語(yǔ)言就是圖靈完備的。
assignments 賦值語(yǔ)句conditions 條件input/output 輸入/輸出looping constructs 循環(huán)結(jié)構(gòu)這門(mén)課的主要內(nèi)容是Decomposition和Abstraction。
將代碼分解為模塊化的代碼便于理解和再加工。一種常用的方法是函數(shù)。
遞歸是一種十分適合計(jì)算機(jī)的做法,它需要base case和inductive step。 接下來(lái)是代碼示例
#回文數(shù)palindrome def inPalindrome(s): if len(s)<= 1: return True else: return s[0]==s[-1] and inPalindrome(s[1:-1])#可以輸出縮進(jìn)的回文另一種顯示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)新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注