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