DAVID MALAN:歡迎回來,大家好。 所以昨天,你會記得, 我們針對這些主題在這裡。 因此,我們有四個首要topics-- 隱私,安全和社會; 互聯網技術;雲計算; 最終,Web開發。 沒有人有 帶寬或時間 觀看小約翰 奧利弗昨晚? 這其實很有趣, 如果不是有點恐怖。 對任何事情有任何疑問 我們昨天做? 任何澄清? 要做出任何疑問 相信我們觸及到今天以某種形式? 所以洗涮。 那麼什麼是上了議事日程今天? 因此,我認為我們今天會開始 一起來看一下什麼是一般 被稱為在計算thinking-- 簡單化的風險,思考 像一台計算機,也許 想著像一個工程師, 並試圖開始 組織你的想法 或者給你一個更好的感 涉及什麼實際指揮 一台電腦做一些事情 通過編程方式。 我們會保持它在一個相當 高的水平,相當多的英語, 但嘗試使用熟悉的 舉例正式如何 你會去解決問題。 我們將重溫一些CS 主題,像抽象, 裡面傳來了一對夫婦 次昨日, 算法,然後表示。 而這也正是我們將開始 今天在短短的時刻。 然後我們將看看節目。 我們就來看看一些 基礎構造 與您可能熟悉 甚至可能會發現很直觀。 我們來看看,其實, 在樣品編程 環境是非常便利, 很愛玩,也確實有針對性 對於年齡在12歲以上。 我們將花幾分鐘時間有 然後拿東西到較低的水平 實際上談一些 的算法和數據結構, 可以這麼說,那 程序員通常使用 解決更為問題 效率可能比你 能夠不通通做。 午餐後,我們就一起來看看 在技​​術堆棧,這僅僅是 說的一種假想方式 技術集合 你可能使用 解決一些問題。 我們將談論字母表 中存在的語言湯today-- Java和Python和C ++ PHP和 Ruby和各種其他的東西。 我們將看一看簡要 在設計模式。 程序員,隨著時間的推移, 有採用的方法 傾向於幫助他們 解決問題更容易。 當你開始看到自己寫的 同樣的代碼連連, 人的正式重複 而歸於名字給他們 然後用它們和 推進當中,最終。 我們將討論一點點 關於移動戰略, 像什麼意思實際上 使移動應用或移動網站。 你為Android做呢? 你於iOS呢? 你為那些呢? 什麼是取捨? 然後最後,我們將採取 看看網絡編程,這 是的總稱 真正描述的任何時間 你寫軟件的 為了在網絡上運行, 無論是在手機還是 桌面或筆記本電腦。 下面我們通過一個簡單的介紹一下 數據庫和設計 其中,如果僅僅是因為幾乎所有的 有趣基於網絡的應用 這幾天有某種數據庫。 否則,它會 只是靜態內容。 和數據庫使您可以 隨時間的變化,無論是你自己 或者從用戶。 我們會考慮如何 會去設計 該數據庫的那種行話 可能出現的以工程師 在白板討論 當實際執行 首次的應用程式。 我們將討論簡單說一下 API的,有用的服務 您可以使用站上 別人的肩膀上,無論公司 或個人,以及解決您的 自己的問題更迅速。 然後,我們也許會涉足 有點用JavaScript, 該公司使用的編程語言 無論是在瀏覽器這些天,但也 在服務器上。 也許,我們將 重溫,時間允許的話, 一些動手網絡的東西,我們的 昨天做和整合兩個 我們一起休會之前。 因此,與that--什麼ahead--是 有什麼遺漏,你 想確保我們插入 並在某些點觸摸。 如果是彈簧介意, 要拿出來不久。 但是,我們為什麼不開始與 看看計算思維。 讓我提議, 計算思維是,同樣, 排序的高層描述的 什麼是計算機科學家可能會做。 事實上,讓我們開始 有三個成分, 可能會進入計算機思維。 這僅僅是一個描述它的方式。 我們當然可以定義 這在任何數量的方式。 但是,讓我提議, 今天的緣故, 這世界上的問題, 所有的世界難題, 當由接近 計算機科學家可以 如被看作是我們將 電話輸入, 需要得到送入我們就這麼叫 算法,則得到的輸出。 換言之,整個 解決問題的我主張世界 可以蒸餾成 這三種成分。 所以,我是什麼意思的投入? 輸入正是你在做什麼 遞給為了解決。 舉例來說,這裡的 一個老同學的問題。 如果我這裡有電話本和 我想看看東西進去, 這是我的意見。 我有1000個左右 在電話簿頁面。 這是輸入到我的問題。 我想找到的東西 像邁克·史密斯,這樣的朋友 其名稱和編號是 希望能在這個地址簿。 這是細胞的天前 手機,所以我不能只是搜索。 所以,我必須這樣做舊 學校實際上搜索 這些投入對於一些答案。 這答案是正要 被稱為輸出。 所以輸入是電話簿。 該算法是任何集 步驟我用找到邁克·史密斯。 和輸出,希望 邁克·史密斯的電話號碼。 而這則是剛 最具代表性的任何問題 與你手輸入 並希望產生的輸出。 因此,我們認為這個過程之前, 通過它我們可以解決這個問題, 尋找邁克·史密斯和 類似的東西, 讓我們考慮的第一和 的last--輸入和輸出。 物理上,當然,輸入在這裡 由紙一大堆粘在一起 在電話簿的形式。 但是電腦,筆記本電腦course-- 和台式機甚至是手機 這些days--那些 電子設備。 和在一天結束時,什麼 唯一的輸入到電腦? 嗯,這是像 在這份電源線。 我將其插入牆上, 我得到的電子流, 這讓我運行的機器。 或者,也許這些都是電子 我的電池的方式產生。 但在一天結束時,這是 唯一進入我的筆記本電腦。 和這麼多有趣 東西最終是 中走出來,無論是 由打印機的方式 或屏幕或audially或類似物。 所以,如果我們所有的作為我們的 基本輸入到計算機 電,所以才 電子進入和或縮小, 所以我們如何使用該輸入 實際上代表的信息? 換句話說,我們如何獲得 從電力的簡單流程 到代表實際 數字或字母實際 在屏幕上或實際圖像 或實際的電影或電子郵件 或任何數量的這些 更高層次的概念, 如果你願意,在 到頭來不知​​何故 已被存儲在這 電子機械裝置 只使用簡單的ingredients-- 電子出入? 因此,它似乎是, 在最簡單的形式, 唯一的一種狀態 我在我的世界,所以 到speak--條件 在我的天下 - 要么是 我有電子流,電 流動的,或者我不是 - 等等,關閉。 讓我們正式開啟和關閉, 作為一名計算機科學家可能, 只用1和0。 讓我們只介紹一些武斷 但一致的編號。 1意味著,0表示關閉。 或者你也可以認為這是 對真正的手段和虛假的手段。 你也可以做黑色 和白色或紅色和藍色。 你只需要兩個描述符。 和計算機科學家們 一般只要用0和1。 所以,如果是這樣的話,我唯一的字母 是由0和1的,如何 我可不可以去連號 2在一台電腦,更別說3號 或一個字母 或圖像或電影? 我們怎麼樣的引導 從自己這一基本原則 的0和1的和實際 代表更有趣的東西? 好了,讓我們把這個問題 擱置一會兒就好了 並考慮什麼 希望熟悉, 即使你有沒有想過 它在任何細節為10,20,30,40,50 更多年。 這是什麼? 你將如何發音呢? 不是一個很難回答的問題。 一個數字,但它是什麼? 1,2,3,或123。 我喜歡你是怎麼說的1,2,3, 因為這是觀看它的一種方式。 1,2,3,它的一個序列 三個符號。 這是圖片,我們 現在有話。 如果你之類的閱讀全部 同時,在英國一個典型的人類 會說123。 這就是形式的 更高層次的概念, 感覺就像一個相當大的數字。 但是,我們是怎麼到達那裡? 嗯,這可能是因為一段時間 你想過這個問題是這樣, 但早在我的一天,我 那種得知這個 作為1的專欄中,10級的 列和100的列。 從而Lakisa說,這是 1,2,3,但它也是123。 但是,我們如何從中獲取 前者向後者? 那麼,你通常會做 100的專欄中,我有一個1。 所以,這等於是說100次1。 然後在10的專欄中,我有2個。 所以,這等於是說10次2。 在1的專欄中,我有3個。 所以,這等於是說1次3。 如果我添加這些東西 在一起,這當然 是100加10加3。 呵呵,這就是為什麼我得到這個 123更高級別的概念。 這只是基本的數學運算,由此這些 符號具有權重給他們,如果 將佔位符或列的值。 有一次我乘的一切 出來,我得到這個號碼。 所以,你知道怎麼很多怎麼說話 binary-- 0和1's--像電腦一樣? OK,完美的,沒有一個人,或 你們沒有覺得你做的。 不過,我會聲稱你 其實已經知道了。 我們只需要幾分調整 我們的心智模式一點點。 但是這個過程是完全相同的。 讓我離開這一個那裡, 而不是拉下來了一會兒。 在計算機世界, 我們只有0和1的。 這樣一來,事情那 要改變的是什麼? 那麼,在我的人類世界中, 十進位制,DEC意義10, 我已經在我手上了多少位? 10,對不對? 0到9,當然。 這就是為什麼我們有 10的地點和100的位置。 那是哪裡來的? 那麼,這是10到0的力量。 這是10到1的功率,10 到2的冪,等等。 你只是保持你的乘以列 10,出發只需1 在這裡最右邊的之一。 因此在世界上 電腦,如果你只 有binary--雙向含義 2--或0和1的,我們只是 真的需要改變 那數學的基礎。 因此,換句話說,現在我們只是 有1的專欄和曲風 這是哪裡going-- 2的專欄中, 4個專欄,也許超越。 這是為什麼? 那麼,這是2 0次方。 這是2 1。 這是2到2,依此類推。 因此而在這裡,我們有1,10年代, 100的,1000的,萬的,10萬級的,1 數以百萬計,等等,這裡 我們有1個,2個,4個,8個,16個,32,64。 你只要保持乘以2, 而不是繼​​續乘以10。 所以,現在,如果目標在 一方面是代表 僅使用0和1的數字, 讓我們考慮我們如何到達那裡。 此,當然,是模式0 0 0,但什麼號碼概念 它代表什麼? 那麼,4次加0 2次加0 1次0,讓我們添加這些在一起。 4次0,當然,0,加2 次0是,當然,0加1次0 是,當然,0。 所以啊,這代表了 一些我們人類所知道的0。 好了,現在,讓我們很 迅速快進。 如果我不是沒有代表 0 0 0,但讓我們做1 0 1, 這可能是如何Lakisa,此前, 只會念它1 0 1。 但是現在,我們怎麼把它帶到更高 水平,我們人類可能知道多少? 那麼,什麼是這個數字? 這是5,我們知道5的數量。 那麼,這是為什麼? 好了,我們才能真正的排序 穿行有條不紊 4次1,2 0次,1次1。 添加這些在一起,所以 這是4加0加1。 而這,的確,5。 所以它現在變得有些乏味 一次又一次地做算術。 但是這個過程是完全相同的。 有唯一 在我們的世界變了 是,我們的列是1,2,4,8,16, 等,代替1,10,100, 1000。 而這僅僅是因為我們的字母表 從0到9減少到只有0到1。 因此,作為一個小測驗這裡,怎麼會 你代表二進制數字7? 0? 好吧,0,你的意思是0 0 0? 再說一遍,卡琳娜。 完善。 這是為什麼? 這是有效的4加2加1。 很好。 我們如何代表一點點 another--怎麼樣2號? 關閉,而是倒退。 所以,這是什麼? 為4加1,以便再次是5。 所以what's--對不起,卡琳娜? 0 1 0。 0 1 0將是2,因為再次,甚至 如果是那種不跳出你, 只是做數學題。 4次0,0,2倍 1是2,1次0為0。 因此,這是我們所知道的2的數量。 如何對數8? 嗯? 好。 所以,我們種需要另一個佔位符。 我們需要1 0 0 0。 這就是我們的那種真正的 老同學十進制。 你如何代表人數1000? 嗯,你似乎是 那種在一個艱難的位置, 如果問你代表 數字1000, 因為即使你給自己喜歡 這些9,這些9,這些0, 這是最大的數字,你 有,你沒有完全得到為1000。 所以,如果你1000,你只需要另 的位置,這樣就可以做1 0 0 0, ERGO人數1000人。 所以,現在,讓我們來映射這種 概念性的討論給硬件, 再次在這裡,輸入只是 這個小電力電纜,電 進來和流出。 所以對於從這裡被映射 在那裡,那麼,我們真的需要? 那麼,你能想到的是一個內部 電腦,一大堆的燈泡, 如果你願意。 他們真的叫晶體管。 和晶體管只是切換 這可以是打開或關閉。 所以,你能想到的 晶體管那是上 是允許電力流動, 晶體管那是冒充停止 電力流入。 而非採取 在這裡的燈光, 為什麼不讓我做這種 新的派風格。 因此,這可能是一個圖1中,手電筒 正對,僅勉強雖然。 而這可能是0,現在是關閉。 因此,使用這種物理設備,我 現在可以表示二進制的系統。 我只需要兩個狀態。 不要緊什麼 顏色是或它是什麼。 所有重要的是,我有 在一個國家和另一個國家了。 因此,使用我的手機在這裡,我該怎麼辦 代表我們所知道的0的數量? 或者把等價,是什麼 數字我現在能代表? 0,因為該設備處於關閉狀態。 如果我這樣做呢? 而現在,我該怎麼辦 表示數字2? 我能借你的手機 在這裡,正如我們昨天做? 因此,讓我們來看看,所以如果我要代表 數字2,這是2號? 沒有。 什麼號碼是我不小心 代表在這裡? 這實際上是數字3。 那麼,哪一個做我想要關掉? 黑手機or--好,如果they're-- 黑手機或白色手機? 白色手機。 所以,如果我把這個關閉,我們 線它在這裡,我們有一個1 在2的地方,並 0在1的位置。 所以我現在 表示數字2。 而這,當然,會是多少 3,因為現在這兩個燈 在...上。 我會停在這裡, 但按理說 如果我想代表 號4或8或更高, 我將需要更多的手機。 但是,這一切是怎麼回事。 所以,如果你曾經聽說過 中A--裡面感謝你 - 計算機 是數百萬個晶體管,這是 只是數百萬小小的開關。 他們不是光 燈泡是打開和關閉, 但他們要么允許電 某處流動或停止。 所以,有你的兩個 states--開或關,開或關。 所以我們現在似乎 有這種能力 代表這個概念, 我們希望在實際硬件。 但是,所有我們現在擁有的是能力 來表示數字又好像。 那麼,我們如何去代表 英文字母,這 感覺像一個排序功能的你 將要添加到現代計算機 一旦你有數字嗎? 事實上,如果你仔細想想 它在歷史上,計算機 真的被引入到 作為數字計算器。 但當然,這些 天,他們做更多的事情。 即使當他們啟動,你 通常會看到一個或多個單詞。 那麼,你如何表現的話, 如果你已經是再次 在電的結束 天,或等效地0和1的? 是啊。 是的,我的意思是,我們種做 這個昨天以某種形式, 其中,在某些時候, 我想我隨意 說,如果我們想要代表 字母A,我們可以只把那個叫1。 它是在加密的情況下, 在這裡我們只是需要某種形式的代碼, 某種映射。 因此,也許A將被表示為 1,和B將被表示為2, 和Z將被表示 作為26,例如。 然後是唯一需要注意的是,如果我 要在我的電子郵件編碼的信 還是在我的短信 數字,大家 必須同意使用 同組約定。 事實上,世界 做了這一點。 有在世界上的系統 所謂的ASCII,美國標準 信息交換碼, 這是一個簡單的決定,有些年份 以前,人類製造的 決定,是要平等的,不 1,2,和26,以及因此forth--它是一個 小different--但65,66,67。 我拉了 圖中只是一瞬間。 但它的隨意性。 但沒關係 它的隨意性。 世界上有只保持一致。 現在,最近, 有一些票友 所謂的Unicode,因為世界上的那種 來實現,發明電腦後, 有比多好 在世界上256個符號 我們可能要代表, 尤其是當你介紹 亞洲語言和其他符號 需要比你更表現 可以容納的最早版本 這個代碼,這被稱為ASCII。 所以Unicode的實際上允許 您使用起來更加的0和2。 特別是,你不斷聽到 字的字節社會中甚至只 昨天。 而一個字節又是什麼? 什麼是字節? 這只是8位。 那麼是什麼究竟意味著什麼? 嗯,這意味著,更早的時候,我們 談到二進制和我所用 任意三位當我們 談到binary-- 1的地方, 2的地方,和4的place--好, 一個字節只是意味著你在說 未在三個單位,但 四,五,六,七八, 這給了我們8的地方, 16年代,32年代,64年代,和128的。 換句話說,比特是不是所有的 該措施的有用單位, 因為它就像一個很小的小 片的信息,開啟或關閉。 因此,一些年前, 世界剛剛決定 它稍微更方便地在說話 字節為單位,在時間八件事。 於是從而誕生 一個字節的概念。 所以,我們在這裡有八位。 而事實證明,也為類似 原因,世界上決定年 以前,來表示一個ASCII字母, 你要使用8位的單位。 所以,即使你不 需要那麼多,你 始終將使用8位 代表一個字母。 這是方便的, 因為那樣的話,如果你 收到具有0 0 0 1 1信息 1 1 0後跟另一個1 1 1 0 1 0 0 1,因此,如果您收到16 位,世界正好可以 假定第一8是一個字母 第二是8的另一封信。 不要緊,有多少。 它只是事項 我們都一致 當我們解釋這些位。 而這只是隨機的。 這意味著什麼,但我沒有 仔細想想這意味著什麼。 所以這是一個白色的小謊言。 原來,ASCII 實際使用的僅7位。 而第八位 所謂擴展ASCII。 但問題是,最終是一樣的。 世界一般 標準化的8位。 因此,這似乎是一個小 限制,因為我只能 代表資本A, 通過資本Z.資本2 但是確實不,如果我去中場休息 有一堆資源 線上,例如, asciitable.com,這 將是一個小 壓倒在第一。 但我會指出, 這裡是什麼是非常重要的。 這恰好be--,我會 walk--讓我們來看看,如果我去在這裡。 這裡,在該小數 列,數65。 而在右手列字母 性格,人權委員會,是字母A. 而且你可以忽略,現在, 一切都在中間。 這是十六進制, 八進制,和一個HTML代碼。 這個網站只是試圖拋出 你有很多一次的信息。 但是,我們關心的是十進制 列和字符列。 因此,通過這樣的邏輯,是什麼 數,世界 已經決定代表小寫? 是啊,97。 而僅僅是用來迷惑 可能略有下降, 什麼號碼已經是世界決定 將代表數字1? 沒錯,因為we-- 49,似乎 在這裡,在底部向下走了。 現在,我是什麼意思呢? 所以,事實證明, 在計算機系統中, 一般是有 根本的區別 之間的數字和字符。 一個數字是我們的事 學會長大的時候 我們在小學的超級年輕。 這事你算。 但一個字符僅僅是一個形狀, 字形,可以這麼說,在屏幕上。 現在,我們人類那種見 一些看起來是這樣的。 而我們說,哦,那是2號。 但是,沒有,這只是看起來的象徵 就像我們所知道的數字2。 所以有這 根本的區別 實際數字和字符之間。 這是一個數字。 但是總體來說,在 一台電腦的情況下, 如果你不是看到 像這樣quoted-- 而你總是不 必須看到它引用, 但對於discussion--的緣故,如果 你看到周圍的一些報價, 現在這是一個字符。 因此,這2號下方 一個計算機的內部機罩 將與一個圖案來表示 代表的比特數 50,根據圖表聯機。 然而,如果計算機 剛看到這一點,這 將與表示 位0 0 0 0 0 0 1 0模式。 然而,這種性格會 實際as--現在代表, 我覺得有點harder--所以這 人物將與0來表示 0 1--需要什麼嗎? 0 0 1 1 0 0 1 0。 我是如何做到這一點? 嗯,這是50號,如果你 使用這些列繁衍出來, 這是2號,等等 這就是為什麼有這種二分法。 而這僅僅是一個 現在傳情的特點 中存在的編程語言 我們將簡要地對今天晚些時候觸及。 在編程語言, 你一般有, 但並非總是如此,事 調用不同的數據類型。 換言之,一個programmer-- 當他或她正在寫, 程序員獲取決定什麼 格式存儲自己的數據。 您可以將數據存儲為 原始數據,如數字2。 或者你可以將它們存儲為字符串, 或字符序列 你會通常與表達 報價在您的編程語言。 你可以擁有的東西called-- 我會簡單化,並呼籲他們 實numbers--使數字, 就像數字2不是整數, 但喜歡的數字4.56。 所以實數還可以 有小數點, 所以這是一個根本的不同 在計算機中的數據塊。 然後,你甚至可以有 其他數據類型仍。 所以這真的只是一個傳情 最簡單的設計決策 一個程序員可能 使引擎蓋下方。 所以,只是還沒有什麼問題嗎? 因此,讓我們試著讓 這一點更真實。 此硬件不 這麼多的使用了。 但大多數人在這個房間可能 從小一起長大的,並仍然使用硬盤驅動器 某種程度上來說。 儘管大多數的 我們的筆記本電腦不再 有一個這樣的操作設備, 今天,而不是一般筆記本電腦 有固態硬盤 沒有移動部件。 並且更趨於昂貴, 不幸的是,但有點快 和A--很好,經常,速度快了很多, 這是原因之一。 而且它不 產生很多熱量。 它可以更小,因此它的 通常一個淨正。 但是,這使我們能夠映射 多一點具體什麼 我們在0的談論和 現在1的水平提升到一個物理設備。 這是一件事對我說話 大約0和1中術語 我的手機或抽象的術語 的開關被打開和關閉。 但對於硬盤驅動器? 在你的筆記本電腦,如果你有一個舊 之一,或在您的台式電腦, 或肯定服務器 今天,在這裡你有 有硬盤驅動器 的空間兆兆位 4 TB的空間, 還有什麼意思呢? 一個硬盤驅動器1 空間的手段太字節 有1萬億字節 它以某種方式裡面, 或等價內8萬億比特。 1 TB的將是8兆兆位 或1萬億位, 意味著如果你有一個硬 驅動器,你有不知何故 或其他一萬億0 和1的內部的它。 如果我們只是來看看的 硬盤驅動器的任意圖像 的代表,這是一個多麼難 驅動器可能通常看起來像裡面。 它也有點像 一個老唱機 但一般用 多個記錄裡面,所以 到speak--多 盤片,因為他們是所謂的, 金屬圓盤,和 這時,一個小的讀頭, 很像一個老唱機。 和讀頭前後移動 提出並以某種方式讀取位。 什麼是對這些盤片,甚至 雖然我們人類無法看到它們, 無論是在現實還是在這張照片, 有微小的磁性顆粒。 而且,即使你早就 忘了電的使用原理, 磁性粒子 即通常的充電 有北邊和南邊 end--所以南北。 這樣一來,世界剛 決定前一段時間 即,如果基本上是一個磁性協議 在這樣的排列,南北, 讓我們把那個叫1。 如果它是代替南北, 我們只需要調用一個0。 所以,如果你有 您的處置一萬億 小小的磁 particles--和希望, 硬件中匠心 為了翻轉周圍的人 當你看到fit--,如果你想 代表一大堆0,你 只需要8磁性顆粒 所有的排列是這樣的。 如果你要代表 8個1的,你只要 需要對齊的8磁性顆粒 回背靠背這樣。 這是什麼意思了 磁性粒子? 坦率地說,這些年過去了, 仍然在我腦海中的東西 就是這個傢伙,如果你 從小一起長大的這件事情。 這為little-- 這些unfamiliar--一個 小童年的玩具 這裡有這個人無毛 擁有所有這些小小的黑色 磁性粒子隨之而來。 而使用紅棒, 這僅僅是一個磁鐵, 你可以排序的給他鬍子或 眉毛或頭髮他或任何東西。 所以,事實上,如果我們放大 在,例如,這 是一種遊戲,你 可以用長毛威利玩。 而這只是說,這些 大得多的磁性粒子 比實際是一個硬盤驅動器上, 和少得多的磁性粒子。 但是讓我們真正看到 那麼,如果你確實有 微小磁性顆粒在 硬盤驅動器,你怎麼能真正 使用這些表示數據。 [視頻回放] -The硬盤是你的電腦 大多數商店的永久數據。 要做到這一點,數據 沿RAM旅行 軟件的信號,告訴 硬盤如何存儲這些數據。 硬盤驅動器電路的轉換 信號轉換成電壓波動。 這些,反過來,控制硬盤的 曲子分為移動一些為數不多的搬家 零件留在現代計算機。 一些信號控制電機, 其中旋轉的金屬塗層的拼盤。 您的數據實際上是 存儲在這些盤片。 其他信號移動讀/寫磁頭 讀或寫在盤片的數據。 該機械是如此精確 一個人的頭髮甚至無法 首腦之間傳遞 和旋轉盤片。 然而,這一切工作以驚人的速度。 [結束播放] 你可以在看 視頻的尾部, 一般有多個盤片。 因此,閱讀頭 不只是讀頂部。 這有點像三 四個或更多的讀出頭 這一舉動像這樣, 同時讀取數據。 所以有很多的 複雜性和排序時機 該公司參與了硬盤驅動器。 而事情是真的紡織補 速度快,所以有很多的複雜性。 但是,讓我們在一個小更深的放大和 看到這些磁性顆粒 以及如何我們在他們得到。 [視頻回放] - 讓我們看看我們 只是慢動作看到的。 當電力的短暫脈衝 被發送到讀/寫頭, 它翻轉上一個微小的電磁 用於第二的一小部分。 磁鐵創建 場,它改變 一個很小,很小的極性 金屬顆粒的一部分 其中每個大衣盤片表面。 圖案系列這些微小的 磁盤上的充電區域 表示在數據的單個位 由計算機使用的二進制數字系統。 現在,如果當前正在發送的一個 通過讀/寫頭的方法, 該區域在一個方向上偏振。 如果當前在發送 相反的方向, 極化反轉。 你如何讓數據從硬盤? 剛剛反轉的過程。 因此,它是在粒子 磁盤獲取當前 在讀/寫頭移動。 放在一起的數百萬 這些磁化段, 和你有一個文件。 現在,一個單一的文件的塊可以是 散佈在驅動器的盤片, 有點像亂 在你的辦公桌上的文件。 因此,一個特殊的額外的文件保留 跟踪的東西在哪裡。 難道你不希望你有 類似的東西? [結束播放] 所以被提到的有,或許是 在刪除昨天的話題。 當你刪除一個 文件,昨天我們說 一台電腦實際上做 什麼,當你拖動的東西 到回收站或垃圾桶? 它只是忘記它。 但是0和1的, 磁性粒子 看起來像紅色和藍色 這裡的東西,或在這裡我的手臂, 仍然存在硬盤上。 所以存在軟件 - Norton實用程序和昔日 和其他更現代 軟件 - 剛 將掃描整個硬盤驅動器尋找 在所有這些0和1的,因為它 事實證明,大多數文件formats-- Word文檔,Excel文件,圖像, 視頻files--都有一定的 圖案,其中常見的。 每個視頻文件可能 是一個不同的視頻, 但前幾 位通常是相同​​的。 或最後幾個位 通常是相同​​的。 因此具有較高的概率, 你可以看一下這些模式。 而且,即使該文件已被遺忘, 你可以以很高的概率說, 但是這看起來像一個Word文檔, 讓恢復它和取消算了吧, 如果你願意。 所以這就是你如何恢復 數據要么被意外 刪除或刪除或故意 刪除的任何目的。 相比之下,安全刪除做什麼 在這樣的圖像的上下文中? 沒錯,讓他們全部隨機。 所以它像是移動的一些 他們失望,他們中的一些起來, 留下他們中的一些不變, 通常會使隨機噪聲出來, 或只是也許使所有的 他們0或全部的1的。 而這也可以一般 擦洗你的數據了。 現在讓我們回到問題 的計算思維,即 我們有公式輸入。 和算法給出 你最終輸出。 我們現在專注於投入和 輸出,因為現在,我 要求我們有辦法 表示輸入和輸出。 我們只是要使用二進制。 而且不管我們 今天想代表, 不管它是一個數字或字母 或其數千電話簿 或圖像或電影,在結束 這一天,它的所有0和1。 而我堅持認為,儘管這 是一個超級簡單的世界,只是0 和1,我們可以建立自己的。 而我們看到的一個例子 與字母迄今。 現在讓我們專注於此 中間成分的算法。 讓我們回到本 例如邁克·史密斯。 所以在這個電話簿,這不可否認, 我們不使用那麼多了, 有待解決的問題。 我們希望找到一個像邁克·史密斯。 而且我可以做什麼找邁克? 好吧,我可以打開這個 書,開始在第一頁, 實現,哦,我在一節。 邁克不在那裡。 我需要史密斯在S部分。 所以,只要保持在同一時間開啟一頁。 讓我假裝這是所有 白頁,而不是黃頁, 因為我們不會找到 邁克黃頁反正。 但是,我在白頁。 而現在,我在B部分。 我還沒有找到他。 所以我一直在同一時間開啟一頁。 這是一種算法。 它是一組指令 為解決一些問題。 換句話說,看 頁面上,如果麥克的不就行了, 翻頁,並重複 再,再而三, 理想情況下低頭,你正在做的。 所以該算法中, 這個過程中,是否正確? 抱歉。 不,我聽到一些​​號。 OK,但它is--是啊, 它肯定乏味。 就像,我們將在這裡一整天,如果我 保持在這個速度尋找邁克。 但讓​​我聲稱它是正確的。 這是愚蠢的,但它是正確的。 在一天結束時,只要它可能 走,我會找到邁克,如果他在那裡 而我關注。 我最終到達他的頁面。 如果我太遠,如果 我得到的T形截面, 然後,我可以稍微優化 而只是說,HM,全部完成。 我甚至都不需要浪費 時間要到Z的。 但是,這是一個非常 線性方法,如果你 將一個很有幾分左到右 方法中,一條直線。 而它的正確的,但速度慢。 所以我從小學記得,排序 從小學一年級學生的優化, 在那裡我學會了如何不算數 由那些而是由twos--所以2,4,6。 這是一個,要困難得多 這樣做,但在理論上,這是 faster-- 8,10,12,14,等等。 怎麼樣的算法? 是不是更有效? 是不是更快嗎? 聽眾:這是有效的。 DAVID MALAN:是的,所以它的def--它的 從字面上快一倍,假設我 不要讓她絆倒了我的手指。 這是快一倍,因為 我轉向通過兩個 一次,而不是一個網頁,但它是 潛在地正確的,因為為什麼呢? 聽眾:你跳過一些。 DAVID MALAN:對,如果邁克會發生什麼 被也許sandwiched--當我後來 在電話簿,麥克恰好是 夾在這兩個頁面之間, 我只是一味地略過。 因此,我們需要一點點修復那裡。 有一次,我打了T形截面,我 不能只是自信地說, 我們沒有找到邁克·史密斯。 我大概有原路折回。 或事實上,當我到達的人 命名為S-N,而不是S-M代表史密斯, 馬上,我可能會增加一倍 回來了,因為也許他 是以前的頁面上。 但我沒有遠加倍奉還。 從理論上講,如果我這樣做,在合適的 那時,我剛回去一頁。 因此它僅添加一個額外的步驟。 所以,我已經走了快一倍, 但它花了我一個額外的頁面。 但是,這感覺就像一個淨贏。 但是,這並不怎麼大多數人 這個房間將解決這個問題。 什麼將一個典型的人,也許是 幾年前做的,找邁克·史密斯? 是啊,沒發現邁克。 我該怎麼辦? 因此,獲得更近了一點,但我做的 知道 - 什麼是真正的關於電話簿? 聽眾:這是連續的。 DAVID MALAN:這是連續的。 這是按字母順序排列。 所以,如果我在M部分, 邁克顯然是正確的, 我可以從字面上撕裂 在half--問題 它通常比that--容易撕裂 一半的問題,並把它扔掉, 所以現在,我有一個問題,這就是 不再是1000 pages--這是辛苦, 因為我覺得我居然撕毀 電話簿這個時間 - 不 1000頁,而500元。 所以,問題是字面上一半大。 這是相當有吸引力的,因為 與我以前的算法,版本 圖1和2,我只是使問題 一個頁面較小,兩頁小 在一個時間。 而現在,我做到了500 頁面的小的一次。 好了,現在,卡里姆建議 我去的右半部分。 所以我要去大致 到中間,給予或採取。 如果我這樣做數學, 我可以去正確的中間。 而現在,我意識到,哦, 我在T節。 其實我走得太遠。 但我可以再次撕裂 一半的問題,把它扔掉。 而我的字節不一樣大。 這只是什麼的,256頁或250 頁面,給予或現在服用。 但它仍然方式更 超過一頁兩頁。 所以現在,我去大致中間。 哦,我沒去很遠夠了。 所以我重複,重複,重複, 重複,直到我希望 只剩下一個頁面。 這樣邀請問題,如果我 開始的約1,000名頁面, 做到了多少步帶我 我的算法1版本? 好吧,如果邁克是在S 部,在最壞的情況下, 這是相當接近 字母表的末尾。 因此,如果電話本有1000頁, 我會在1000頁找到邁克, 給予或採取。 也許它就像800左右,但 這是相當接近1000。 然而,在第二 算法,多少 翻頁最大可能我 需要找邁克·史密斯? 有1000多頁,但我 在時間做他們二。 對,所以最大似500ish,因為 如果我去通過整個電話簿, 在這一點,我可以停止。 但我可以刮掉一小部分被 只是停在T形截面。 但它在最壞的情況下,500頁。 所以,我有多少次可以分割 1,00o頁電話簿中再次半 並一次again--從 1000至500至250至125? 多久之前,我打一個頁面? 是啊,這是10個左右。 根據舍入和這樣,它的 約10頁共需要開啟 或電話簿需要被撕裂。 所以這是非常強大的。 我們開始了1000頁的問題 在所有這三個故事。 但是在第一種算法,它 拉著我,最壞的情況下,1000頁 周折找到邁克。 第二種算法,500 網頁找到邁克。 第三個算法,10頁找到邁克。 而且它更 強大的,當你認為 有關排序相反的情景。 假設電話公司下一個 今年也許合併兩個鄉鎮一起, 和電話簿突然 這厚厚的,而不是說這個, 所以2000頁,而不是1000。 好吧,我的第一個算法尋找 邁克·史密斯在2000頁的電話本, 更糟糕的情況下,要採取 明年有多少頁打開? 電話簿為2,000頁, so--好,不是一個。 如果電話簿兩倍厚 第一算法,第一算法, 2000,對不對? 在最壞的情況下,邁克真的 關閉到書的結尾, 所以它的2000翻頁。 第二種算法通過去 三三兩兩,像1000頁。 但是怎麼樣在我的第三個 和最近算法? 如果電話公司的一倍 從1000至2000的頁數, 多少次需要我撕 那本書一半找到邁克? 聽眾:剛才之一。 DAVID MALAN:只要多一個, 因為一個頁面撕裂, 我可以從字面上分 和征服,如果你願意, 在半則服用了這個問題 一個巨大的咬出來。 所以這是一個例子 效率,可以說是一種算法 與我們所有人都 排序直觀地熟悉。 但它只是為正確 我的其他算法 與對TWEAK 第二算法, 但它是如此有效得多。 而事實上,什麼是計算機 科學家,或者反過來程序員, 書寫時通常會做 代碼是揣摩, 沒事,我不希望我的 節目剛是正確的, 我也希望它是有效的 問題和解決問題很好。 今天在現實世界中想像, 像谷歌索引,搜索 像數十億個網頁,試想如果他們 使用第一算法來查找的貓 一個十億pages--看著之中 第一頁在他們的數據庫, 第二個,第三個,只是尋找 一隻貓,尋找一隻貓。 這是相當不錯的減緩它似乎。 他們可以改用東西 稱為二進制搜索,這 沒有coincidence--雙向含義二,我們 不斷分裂東西2,在half-- 他們可以使用二進制搜索 也許找貓甚至更快, 或不管它是你正在尋找。 坦率地說,有 更炫的算法 該做的不僅僅是更多 分東西兩半 為了快速查找信息。 我們將討論一點點 今天的午飯後。 因此,讓我只能盡力代表這一點。 我們並不需要進入 任何數學或實際數字。 我們可以抽​​象地談論這個。 但讓​​我求婚,如果你 現在是具有討論 與工程師 提出這種算法 而你試圖讓 計算的決定, 因為也許 工程師對你說,你 知道嗎,我可以實現 像2分鐘線性搜索。 就是這麼簡單。 二進制搜索是不是花哨,但 它會帶我像10分鐘, 所以5倍長。 有一個行業在這裡,即使是在條件 在決定寫什麼軟件。 你寫的簡單算法, 這將只是把你們倆分鐘呢? 或者你花更多的時間,10分鐘, 寫愛好者算法? 你如何決定樣的問題​​? 或者你可以讓它多了幾分真實。 我告訴我的老闆是要採取 我任何一個星期10週 實施 在這種方式的軟件,如何 你決定哪些 算法綠燈? 卡里姆? 聽眾:觀眾,我猜。 DAVID MALAN:觀眾。 你說的觀眾呢? 聽眾:如果它是怎麼回事 由用戶使用 誰[聽不清]使用者[聽不清]。 但是,如果它的東西你 只是在做自己 便利的問題, [聽不清]更快。 DAVID MALAN:是的,它的快速和 臟來形容它的好方法。 事實上,如果你是 描述了很多我的時間 在研究生院,其中很多時候, 我寫了糟糕的代碼自覺so-- 至少,這就是我如何 合理化它 - 那麼自覺, 因為即使我在寫代碼 這是執行相對緩慢, 我能寫代碼本身 相當快,支出僅幾分鐘 或小時而不是幾天。 而事實證明,我 偶爾需要睡覺。 所以,即使我的代碼需要8 小時運行,很好,很好, 我只是走在它運行時睡覺。 所以在當時,我認為這是 很巧,即使我顯然 通過我的博士工作非常慢。 但是,反過來是 即,如果我寫的軟件 其他人誰 更要緊比我好, 讓他們等候8小時 拿回自己的搜索結果 是不是所有的引人注目。 所以,花更多的時間 前面編寫軟件 即更高效,更 像我們的第三個算法, 可能有利於用戶在一段時間。 因此,它實際上取決於在 時間如何將這些費用加起來。 如果你將要寫作 軟件使用一次, 可能還不如做 快速和骯髒的,因為他們說。 只是把它在一起。 它的代碼尷尬 你,這是如此糟糕, 但它得到正確地完成任務, 即使它是沒​​有效率。 相反,你花更多的時間 的東西,得到它恰到好處。 然後攤銷隨著時間的推移, 時間的前期費用 也許是值得的,如果你繼續 優化為常見的情況。 事實上,這是在一個主題 編程,或計算機科學更多 通常,試圖優化 不是為罕見的情況下 但共同的case--什麼操作 是要一次又一次地發生? 如果你想擁有數十億美元 用戶搜索您的網站上, 你應該花額外的 週前面編寫更好的軟件, 讓所有的用戶受益。 現在,讓我們嘗試捕捉這個 形象地少,但沒有這麼多 數字。 因此,這裡只是一個老同學的圖表。 讓我說,這就是時間。 並不要緊what-- 其實,不,不是的時間。 讓我們把那另一個軸。 讓我們說,這是時間, 這就是問題的大小。 和一個計算機科學家 通常可能調用 這僅僅局限於N。 n是像 我們去到變量中,其中 n是一個數,n個,以及它的 你有任何的投入數量。 因此,在這種情況下,n是 的頁數。 所以它可能是1000中 的情況下,我們只是告訴。 所以,時間可以是任何計量單位。 也許,這是第二次。 也許,這是天。 也許,這就像翻頁。 沒關係。 無論你希望計算,即 將時間或等效的成本。 因此,與第一個 算法,如果我,例如, 有一個1000頁的電話本, 我要畫一個點那裡, 因為如果它是1000頁,花了 大約1000翻頁,給予或採取。 然後,如果我有一個 2000頁的電話本, 我要去畫第二 在此點,因為2000頁, 它就像2000秒 或翻頁或什麼的。 因此,當我前面說的,這是 樣的線性關係, 這是故意的,因為我想 後來on--權now--劃清界限。 這是怎樣的一個直 行的關係。 斜率是1/1,如果你願意。 同時,第二算法 說,如果你有1000頁 而你使用第二算法, 在那裡我數2的,把 同時兩頁,我要畫一個 點低於或者高於我的原始點? 聽眾:下面。 DAVID MALAN:下面,因為正如我們所看到的, 它需要較少的時間,一半多的時間。 所以點應該是一半 高達另一個。 而同樣的協議在這裡,此點 也許應該是大致那裡。 所以我的第二個算法,同樣地, 具有隨時間的線性關係。 而且我們可以得出它是這樣。 所以,現在,第三個和最後 算法是有點難以得出。 但是直覺,如果我有1000 我的第三個算法的網頁, 它應該只把我像10步。 如果我有2000頁 我的第三個算法, 應採取我不要10 步驟,但11,只是多一個。 因此,我們只能勉強維持會看到這一點。 而事實證明,如果 我放大此,我 要誇大的效果, 該線的形狀,最終 不是直line-- 因為,事實上,如果它是, 它看起來更像 others--它實際上是一個曲線 ,如果我們放大,是怎麼回事 看起來更像這一點。 它 - 嗯,好吧,忽略這一部分。 這是我的鋼筆一樣的角度。 這是一個曲線,就是始終 越來越多,永遠,永遠,永遠 增加,但只是勉強。 所以,隨著時間的推移,你有一個 關係,即更喜歡這個。 它看起來幾乎筆直。 但它是非常緩慢地上升。 但沿著幾乎所有的點 您的x軸,水平軸, 它比其他行低。 所以這可能是一個關係 N,因此,如果您有n頁, 你需要n秒。 這可能是有關係的n / 2。 您有n個網頁,它需要 你N / 2秒,一半多。 而這是一個對數 關係,這 如果你還記得,日誌N捕獲基地2 這種增長,可以這麼說。 因此,這是何許神聖 在這三個中的聖杯 在這裡,因為它只是這麼多 高效,但可以說更複雜 實現。 任何問題? 那麼,讓我做到這一點,讓 我打開一個文本窗口 只是讓我們可以嘗試 在這裡正式的東西。 所以,現在讓我繼續前進, 實現這個算法 在代碼中發現邁克·史密斯, 如果你願意,偽碼。 我不打算使用Java或C ++。 我只是要使用排序 英語的語法,這是我們 一般會叫偽代碼。 在這裡,我有一個空白窗口。 而且我說的很第一步 第一種算法是拿起電話簿。 第二步是開卷第一頁。 步驟3將看 麥克·史密斯頁面。 如果頁面上,叫麥克。 其他依次頁,轉到第3步。 完成後,讓我們說。 所以它不是相當完美, 我們將看到一個時刻。 但是,讓我們考慮一下 概念我在這裡介紹。 所以步驟1和2和3 有相當多的動詞。 他們聲明,actions--做到這一點。 因此在編程 語言,我們一般會 叫他們陳述或 函數或過程, 打電話給他們許多東西。 但他們只是actions--做到這一點。 第4步是根本不同的, 因為它是一種問一個問題。 它說我們是一種 的在一個岔路口。 如果麥克在頁面上,請致電 他,所以左轉,如果你願意。 如果沒有,回去一定 其他page--或者說,對不起, 回去一些其他步驟,其中 導致某種循環結構。 而我們一次又一次地做一遍。 而實際上,你知道嗎? 是啊。 否則,如果在書站結束。 因此,我們需要怎樣的一個第三 狀態,因為你 不能讓翻頁廣告 nauseum,因為最終,我會 撞書的結尾。 並且在一個程序中的錯誤可能是 沒有預見到的情況。 然後我才意識到,哦,等等 一分鐘,我需要第三個場景。 如果我出的網頁,我 真的應該只停留。 否則,它是不確定的。 這是怎麼回事,如果我繼續發生 說翻過這一頁,回去, 這是當電腦 死機或崩潰,當你打 一些未預料到的情況那樣。 現在,邁克 史密斯的第三算法 - 拿起電話本, 翻書序曲一到 不,不是第一頁這個時候, 到middle--哦,嗯,那倒是 是第二算法。 讓我們只是跳到第三。 聽眾:哦,對不起。 DAVID MALAN:那很好。 讓我們只是跳到third--開放 以中,現在找邁克·史密斯。 如果頁面上,叫麥克。 然後,我們究竟要在這裡說什麼? 還有什麼? 我們可以表達這種 在任何數量的方式。 有沒有正確的答案。 好吧,如果不再,但我們需要 be-- OK,我們確實需要兩分, 但做我們想要去向左或向右走? 我們如何表達這一概念? 那麼,在小李的情況下,是的,這是公平的。 但是好了,這實際上是一個很好的點。 沒關係。 我們將繼續與這個邏輯下去。 所以 - 聽眾:不到一半。 DAVID MALAN:是的。 所以,如果別的頁面,我們會說,少 比·史密斯,史密斯的左側, then--讓我們來看看,是 這要複雜? 否則,如果屏幕出現之前,史密斯, 撕了一半,扔掉哪一半? 聽眾:我想 這是[聽不清]。 DAVID MALAN:我聽說兩個答案。 聽眾:左。 DAVID MALAN:OK,扔 遠的左半邊,如Lakisa 前面說了,左 一半的話,我有種 想只是去中場休息,我去的權利。 或等價的,我做了一個小 一開始的有點亂在這裡, 我切實想 再去步驟2, 其中,開到middle--或open-- 是的,我們只能說,頁面中間。 而這種修復它。 它不再是一本書。 這只是一本書的一半, 如此開放頁面中間。 else--是幾乎沒有。 第6步,否則,如果屏幕出現後,史密斯, 撕成兩半,扔掉右前衛, 然後轉到步驟2。 別的不干了,第四個情況下,如果 我們沒有離開頁面打開。 這樣我們就可以打掃一下。 我們應該打掃一下。 這是很偽代碼,如果你 會的,非常高的水平的描述。 但它確實一般拍攝的想法。 並再次,在這種情況下,我們 有一個條件的概念, 一個分支,在一個岔路口,使得 一個decision--如果,走這條路, 否則如果走這條路, 否則如果走那條路。 而這是一個非常普遍的 編程技術 決定哪個方向 去,可以這麼說。 我們也有一些 的循環結構,其中 我們一次又一次地做一些事情。 現在,事實證明,很多 如在本實施例中, 作為超級精確是非常重要的。 但是,我們也看到了一些 我們保持通話抽象。 這是什麼意思拿起電話簿? 我們只是那種服用 理所當然的在這個房間 這是有一定的語義。 我們都只是一種知道,哦, 好了,拿起電話本。 這是什麼究竟意味著什麼? 嗯,這實際上意味著延長 手,俯身,延長手指, 手指之間捏書, 站起來,用手拉向你。 我們可以真正做到 迂腐這一點, 真的是超級精確 至於我在做什麼。 但是,所有這些步驟都統稱 這意味著什麼,拿起了電話本。 因此更早的時候,我說,每 前兩個語句 可以被認為是一個 繼續或函數, 實際上它代表了我們 保持通話的抽象。 這就像一個高層次的概念 的問題的說明那 實際上涉及相當多的步驟。 所以這一點,也是一個 在編程中經常性的話題, 因此我可能會寫一個程序 使用語法像this-- pick_up_phone_book()。 然後,語法,我 要偷東西 從大多數編程語言。 現在,第1步看起來更加 更像是一個函數, 作為一個程序員調用它。 它看起來像代碼有人 給一個名稱,並給予 我在其他使用somehow-- 也就是說,什麼線我突出 代表的功能,也許 我甚至沒有實現自己。 有人年長,比聰明 我已經想通了 如何表達你的觀點 的拿起電話簿。 它就像五個步驟我只是 列舉了,把我的頭頂部。 但他或她已經實現 這一點,給了那些幾個步驟 一個名字,pick_up_phone_book。 而括號是 正是大多數程序員 在做這樣的語句的結束。 我現在能站在他或她的 肩膀再也沒有, 想想這意味著什麼 拿起電話簿。 我只能說,拿起電話簿。 而這正是 我們所有的人在這裡做。 當我們大概1 歲,2歲時, 有人曾教給我們什麼 為了拿起電話簿。 從那之後, 我們已經抽象化了 從這些很無趣 機械步驟。 我們只是有一個 直觀的了解 中意味著什麼 拿起電話簿。 你現在可以推斷 更複雜的things-- 建築大樓。 像對某些人來說, 實際上具有意義。 承包商,建築師, 有一定的意義。 他們會知道該怎麼做,如果 我說,去構建一個建築。 但在房間裡我們大多數人不能 處理抽象的那個級別。 你需要告訴我們喜歡去拿 鏟去得到具體 並釘上木塊 一起和其他任何 參與建設的建築。 那是因為我們還沒有 尚未被編程理解 這意味著什麼建築大樓。 我們沒有這樣的抽象。 我們沒有這個功能。 所以你會看到 編程語言,在一般情況下, 尤其是更現代的語言, 像Java,PHP和Ruby和Python, 他們更成熟 比舊的語言, 像C和C ++,但其他人。 因此他們提出更多 功能內置的。 更多的代碼已被寫入 人們過去 我們現在可以通過電話或 召喚或使用,因為我暗示 在這個位置突出顯示的行。 所以,即使我們不說話 大約本身的編程語言, 只是偽代碼,所有的 想法仍然在討論中。 而事實證明精度 超級重要的,是抽象。 讓我們試著 傳達如下。 我不小心可能會被寵壞 這個在屏幕上閃爍的幻燈片 過早。 但讓​​我問一個勇敢的志願者, 如果你不介意的話來了。 你會在前面 相機,如果你與確定。 有沒有人願意來,並給 說明在這裡你的同事? 只要有到這裡來和 站在這裡了,說一些話。 維多利亞是微笑最 並避免我的眼睛最。 你願意來上了? 好。 如果每個人都在你的座位 可以拿出一張廢紙, 如果你願意。 橫格紙是罰款。 過來這樣。 或某些紙張的那 你昨天給予, 隨便一個空白頁 紙,如果你能。 如果你沒有任何,只 如果你可以問你的鄰居。 所以,就目前而言,對於 本例中,維 將要發揮的作用 一個程序員,工程師,誰 需要你的程序是,作為 電腦,做一些事情。 我們會看到什麼假設 你決定做。 我們將看到她選擇的精確度是。 如果這個演示雲 教學上很好,很多錯誤 將作出,我們會再使用 隨著討論的機會。 但你應該挑戰 要避免這些錯誤, 成為一個優秀的程序員。 因此在手的挑戰,如果 你喜歡在這裡走了過來, 在屏幕上的維多利亞前 這裡 - 並希望,沒有你 當我記得這個 閃現在屏幕上。 不要轉身可言,因為 還有另外一個屏幕在這個房間 我可以關掉。 所以,不要回頭。 在維多利亞面前 是一樣的尖叫。 而她現在的工作是告訴你 你一張紙上畫什麼。 我們將看到,基於 單單口頭指示, 計算機代碼,如果你願意, 如何準確的圖紙 are--你的實現是。 合理? 聽眾:是的。 DAVID MALAN:OK,執行。 聽眾:畫一個正方形。 [笑聲] DAVID MALAN:而且沒有 問題可能會問。 只能做有人告訴你什麼。 哦,如果你有今天的幻燈片 在標籤頁中打開,不看你的標籤。 好? 聽眾:OK,畫一個圓。 一個slope--我能說的斜率? DAVID MALAN:給你。 聽眾:一個斜坡。 和一個三角形。 DAVID MALAN:好的。 而在這裡呆一會兒就好了。 而且我要來 在短短的時刻左右。 沒必要把你們的名字。 讓我來到我身邊 收集您的圖紙, 如果你不介意撕裂出來。 下面是我們回來。 我會投影在屏幕上。 我看到一個正方形,圓形, 一個斜率和一個三角形。 所以這是一個答案在那裡。 和let's--哎呦。 謝謝。 這裡的另一個品種, 和一個它的後面。 因此,他們似乎都捕捉到的精神。 謝謝。 還有一個,這裡是另外一個。 斜坡的解釋是 有點不同,有點彎曲。 與最接近的,或者是因為 與你已經特異性精彩 描述的,或者你有種 看到它之前,這確實是 維多利亞什麼實際描述。 但現在,那些你們誰 沒有得到它完全正確, 讓我們在這裡提供了一些異議。 所以維多利亞先說畫一個正方形。 而現在,我們可以假設 今天的緣故 大家都知道 如何繪製一個正方形。 但是,這並不完全清楚,對不對? 你怎麼還能有 畫出的方形,或在 可能是一些模棱兩可的 這裡的電腦嗎? 聽眾:位置和大小。 DAVID MALAN:位置,對不對? 在座的各位有一些形狀的紙, 一般矩形,但稍微 不同的尺寸。 但你肯定會已制定, 如果你想,一個巨大的廣場,也許 一個小廣場。 也許,有人旋轉。 我不認為我們看到了。 但是,它可能是更多的鑽石 喜歡但還是儘管如此, 數學上的正方形。 所以這是可以說是模棱兩可。 然後她說,畫一個圓。 你們有些人根本旁邊繪製 它,這是沒有道理的, 因為人類傾向於認為或閱讀 從右到左的大多數語言,所以不是 一個壞的猜測。 但那個圈子可能 一直在正方形內, 本來是圍繞著 廣場上,本來是在別處 在紙張上的,所以可以說是模棱兩可。 斜率可能已經也許 採取最自由口頭 有什麼意思。 和你們中的一些解釋 它作為一個波浪線 或直線等。 然後三角形,也可以有 被定向在任何數量的方式。 因此,在短期,即使有一些 你一眼,你就像,哇,好 簡單,小孩子可以 得出這樣的,好了沒有 真的,除非你 超級,超級說服力 並告訴計算機 究竟該怎麼做。 因此,如果我們可以,如果你有 另一張紙上,讓我們 試試這一次。 我想給維多利亞1 這裡,屏幕上的其他的例子。 再次,不掉頭 不看你的幻燈片。 我給她一點時間 想想如何描述這一點。 不要讓他們看到 恐懼在你的眼前。 [笑聲] 再次,這一次槓桿 其中一些外賣 並試圖讓幾乎所有人 至少正確的答案。 聽眾:OK,取 一張紙,看看 在一張紙的中間。 在那片中間 紙,畫一個立方體。 [笑聲] DAVID MALAN:有我們學到了什麼? 我們是如此接近。 OK,重複,如果你能為大家。 聽眾:在的中間 一張紙,畫一個對象, 它看起來像一個立方體。 DAVID MALAN:OK,這是 你所得到的工作。 請允許我以分析 並沒有那麼多的關鍵, 但要索賠 維多利亞肯定 似乎非常想在 高層次的抽象,它 不是沒有道理的。 因為否則的話,我們都會 是非常不正常的, 如果我們是有史以來如此精確 與我們所做的一切的世界。 但話說到了我middle-- 以為我們是在這樣一個良好的跟踪 那裡,就像去正中央 頁面,然後繪製一個立方體。 於是,她的思維抽象, 因為她還是觀看 什麼是確實是屏幕上的立方體。 但是,有這麼多的機會 口譯那裡。 而事實上,有這麼多 你可以表達其它方式 是,我將在稍後提出。 所以在這裡我們有一個化身 在picture-- whoops--之一 圖片的化身,所以 小三維它, 這是很好的。 這裡是另外一個,在這裡你有 同樣的,雖然它是一種開放的立方體。 有些人把它一點點 更加扁平化,二維的。 這很好。 所以,確實是在 紙張的中心。 這一次我想你會 喜歡,因為如果我們何去何從, 這就是她被描述的。 所以,現在,讓我提出怎麼回事 我們可以描述這種情況。 早在一天,一個最 比較常見的方式來學習編程 是寫代碼,寫 指令線, 該控制的小 龜在屏幕上。 標誌和本其他的變種 是語言的名稱。 而龜生活的世界。 因此,假設該矩形 空間是他的世界。 你會被assuming--我做起 真的不知道怎麼畫烏龜, 讓我們像這樣做。 然後,他有一個殼 然後也許有些腳。 所以,你可能有這個小 字符在屏幕上。 並在此對象 程序設計語言 是迫使龜 往上走,下,左,右 並把他下筆 或拿起他的筆了, 因此他居然可以在屏幕上繪製 在這個平面呈長方形的世界。 那麼,我想你可能會去, 並且,你應該考慮跳水 到精神上描述時, 說明更一般地, 我會聲稱,就是把你 筆在middle--下降 我們會擺脫 烏龜,因為我真的不能 不斷吸引他很好。 而現在,還能怎樣 我說畫一個立方體? 好了,我們可以這樣說平局 一個對角線東北,例如 或以45度角向上。 而這可能會在這裡得到了我。 而我從一個立方體很遠。 但現在,我可以說的東西 像旋轉90度到左側 畫線的 等長西北部。 而且我可以繼續 具有類似的方向。 而且這不是一件容易的事。 坦率地說,我們可能會 在這裡已經五分鐘。 但也許我們會得到以 東西,在一天結束時, 最終被一個立方體,但我們 跳水是抽象的內 做到這一點在如此低的 級別你不能真正 看到你在做什麼,直到整個 事情是居然還有在頁面上。 所以這是一個總的原則, 再次,programming--這個想法 抽象。 它是如此奇妙 強大,因為再次, 她只是說,畫一個立方體,所有的 我們幾乎將神交非常快。 我們只是知道, OK,繪製一個立方體。 我們可能不知道的方向, 所以我們可以是一個小更精確, 但我們可以大致想像 或者知道一個立方體是什麼。 這是非常有用的, 因為如果你每次 坐了下來,作為一個程序員在 鍵盤來寫代碼, 如果你不得不想在這樣 較低的水平,我們誰也沒 會永遠做成任何事情。 當然,沒有人會 享受編寫代碼的過程。 它會像在0和1的寫作, 坦率地說是不是所有的很久以前 人類是在0和1的編寫代碼。 我們很快就想出了 這些較高級別languages​​-- C ++和Java等。 因此,讓我們試試這個一次剛 翻轉表,讓我們所有的人 不得不思考的機會 在相當的方式相同。 我們可以得到一個更多志願者這 來時間最長的板和借鑒, 不背誦? 是啊,OK。 本,上來吧。 而且,本,在這種情況下,一旦你 面對董事會,不看左邊, 不看的權利。 只能做你的 同事在這裡告訴你。 而對於其他人的 房間裡,你現在的程序員。 他的計算機。 和畫面我在這裡選擇 提前這是一個在這裡。 他們just--他們在想 一個有趣的笑話就是一切。 所以會有人不喜歡 志願的第一條指令 或聲明應 命令Ben的筆嗎? 我們會集體這樣做,也許 從每人一個指令。 對不起? 聽眾:畫一個圓。 DAVID MALAN:畫一個圓 是我聽到的第一件事。 聽眾:向上頂。 DAVID MALAN:往上頂。 OK,我們可以讓你刪除,撤消。 而現在,別人。 丹,你會舒服 提供的下一個指令? 聽眾:當然,繪製中心 圓的底部的, 與small--一點 從狹小的空間, 畫一條直線下降到三 的方式季度在案板上 一個微小的角度,以你的左邊。 DAVID MALAN:好。 聽眾:很小的角度。 DAVID MALAN:撤銷,Ctrl-Z鍵。好。 安德魯,你想提供 向上的下一個指令? 聽眾:當然。 從該行的底部, 進一步輕微angle-- whoops--也許大約三分之一 長度[聽不清] 很小的角度向下像 第三[聽不清]的長度。 所以是的,從這一點來說, 畫一條線第三 先前的長度的 線進一步向左側。 DAVID MALAN:那行嗎? 直線,這是確定? OK,奧利弗,你要 提供了下? 聽眾:[聽不清]從 圓的底部,[聽不清]。 借鑒右側 的[聽不清]厘米。 [笑聲] DAVID MALAN:我想你會 要轉換這裡是英寸。 聽眾:停止。 [笑聲] DAVID MALAN:OK。 [? ARA,?]你想 提供了下? 聽眾:繪製[聽不清] 上部[聽不清]相同。 [聽不清]畫圓,畫到 [聽不清],並繪製[聽不清]。 DAVID MALAN:OK,沒有更多的撤消。 讓我們做一個或兩個指令。 克里斯,你想提供一個? 聽眾:在底部 圓的,[聽不清] 繪製平等線噴濺 向下向左[聽不清]。 DAVID MALAN:OK。 安德魯? 我們did--卡里姆? 聽眾:從右邊線開始, 左行的末尾,底部 你要去說得對 的長度相同線 你在,繪圖 正確的[聽不清]。 [聽不清]度,所以[聽不清] 度在右側。 DAVID MALAN:好的。 讓我們暫停一下。 不要轉身呢。 讓我們暫停,讓我們 嘗試另一個嘗試 我們之前透露給本 他一直畫。 您可以隨機播放奔 在right--或實際, 沒有,我們只是給你 另一塊板,甚至更好。 所以會有人現在想 採取更多的辦法 維多利亞在早期花了,在那裡 我們在一個更高層次的抽象說話 在短短一個句子 兩個描述奔 沒有什麼畫 漸入雜草, 可以這麼說,在這一個較低的水平? 維多利亞。 [笑聲] 聽眾:畫一個圖 的行走的人。 而他的腿和胳膊 必須是右側。 DAVID MALAN:OK,這就是你得到的。 好吧。 我們為什麼不透露給奔他做了什麼。 所以,掌聲雷動。 這是最難的也許。 因此,即使我們談論 在相當愚蠢的條款 關於剛剛繪製 圖片,希望你 才能真正體會的程度 表現,可能是必要 為了告訴計算機做什麼。 而事實上,這一事實本 之所以能夠如此迅速地得出這樣的 是有點遺囑於使用 語言,也許是更高層次 英文版本,允許他 只是使用的話,或者聽到的話 從維多利亞,這讓他 這些abstractions--只畫 一個人影步行到 right--那種有 一些語義它不是 幾乎一樣明顯,當你只是 他說,把你的下筆,畫 到右側,繪製到左邊。 所以這也很 常見的編程。 這可以說是像 非常低級語言,編程 在0和1的,如果你願意。 並且這將是一個更高的水平 編程語言在Java中, 或類似的東西。 的A位 過於簡單化,但是這 該有點像情緒 感覺,你覺得當 用一種東西或其他。 無奈有點這裡所需要 對於這樣的精度,但機會 是有點寬鬆與 這裡的解釋。 不過,當然,錯誤 可以作為結果產生。 如果您想在home--我們 不會做這一塊的分類 - 但如果你想 這帶來一個歸屬, 我以為我們會潛入這一點。 所以,如果你想打這個 遊戲與其他顯著 或孩子或類似物,則 可能會喜歡這一點。 因此,讓我們繼續前進,並期待在最後 這裡計算思維的東西。 這給我們帶來了約翰 奧利弗,不為剪輯 你可能已經看到昨晚, 但是有點最近的問題。 幾個月前,大眾汽車 花了很有點高射砲 是什麼原因,如果你知道嗎? 他們怎麼惹上麻煩呢? 是啊,所以他們emissions-- 試圖擊敗排放 通過實質上有測試他們的 汽車污染環境少 當他們的汽車被正在測試 ,污染環境的更 當汽車沒有被測試。 什麼是越來越有趣 在世界上,你可能已經推斷出 從like--討論是什麼 它 - CarPlay,蘋果軟件汽車 而事實上,許多 我們越來越多地 有觸摸屏在我們的汽車, 有一個可怕的量 在人們的軟件 今天的汽車,這 坦率地打開蠕蟲的時候一個整體 它涉及到安全和人身風險。 但在今天,讓我們 只關注什麼 參與編寫軟件 可能已耍花招系統。 對於的定義 問題,對於那些不熟悉, 讓我們來看看約翰·奧利弗。 而對於那些熟悉 這個問題,讓我們來看看它 在通過約翰·奧利弗一個有趣的鏡頭,以及。 因此,讓我打這個遊戲,我 認為,三分鐘的介紹。 該死的。 [視頻回放] -汽車 - DAVID MALAN:很明顯, 在YouTube上,it's-- - --the最聰明的字符 在速度與激情的電影。 本週,德國汽車製造商 大眾發現自己 在醜聞的中間 潛在的犯罪比例。 -Volkswagen是支撐數十億 罰款,可能的刑事指控 其高管,如 公司道歉 索具1100多萬輛汽車,以 幫助其擊敗的排放測試。 - 某些柴油車型設計 與先進的軟件, 使用的信息,包括位置 方向盤和車輛的 速度,以確定汽車是 進行排放檢測。 該種情況下,發動機 將減少有毒物質的排放。 但是汽車操縱旁路 當它被驅動。 排放量增加10至40 次超過可接受水平的EPA。 -Wow,10〜40倍 大於EPA允許。 這是最糟糕的事情 大眾已經做過, 是你可能會說,如果 你從來沒有聽說過二戰。 但也許是如何最確實的標誌 比較麻煩大​​眾是, 是人們在很 上面已經下台。 該公司首席執行官辭職後,週三 爭著做損害控制, 說他對不起不休,這 響起了巨大直到它橫空出世 他只有10%的遺憾 但操縱了他的嘴 人為誇大他的sorriness。 而與此同時,大眾汽車在美國 首席有他自己的道歉。 - 讓我們清楚這一點, 我們公司是不誠實的。 而在我的德語單詞,我們 已經完全搞砸了。 是啊,但完全擰 最多是不是德國人的作品。 和德語 有許多美麗的短語 來形容,就像這樣的情況下, 如[德國],這意味著大致, 自帶的悲傷 從業務相關的謊言, 或[德國],換算 作為羞辱那些涉及父親 汽油雲。 這是一個美麗的語言。 它只是帆了舌頭。 順便說一句,而男人的 道歉也許聽起來誠懇, 值得注意的是,他在講話 2016年官方發布派對 大眾帕薩特,這意味著短期內 說對不起後,他這樣表示。 - 謝謝的光臨。 享受夜晚。 旁邊是藍尼·克羅維茲。 [音樂] -OK,OK,你的結局 道歉與旁邊 藍尼·克羅維茲不 尖叫清醒悔悟。 它的尖叫聲,我們問苯教 喬維,他說沒有。 大眾汽車的品牌有 遭到嚴重破壞。 坦率地說,他們的新廣告 運動是不完全幫助。 - [德國],我們在大眾汽車希望 為欺騙你道歉 我們的車輛。 [結束播放] DAVID MALAN:所以這是一個 環島路of-- sorry-- 這是一種迂迴的方式 引入一個基本問題 在軟件,這是你 需要檢測一定的條件。 這樣一來,在眼前的問題在這裡 是,請問有車有可能, 作為在軟件中實現 這些程序員, 檢測到它實際上被測試? 所以要超清晰, 他們在做什麼 是,在環境中 程序員想通 該車當時正在 經過測試,他們不知何故 汽車排放少排放,少 排放量,所以毒性較低的煙霧 和這樣的。 但是,當它通常 駕駛的道路上, 它只是發出盡可能多 污染,因為它想要的。 所以,我們怎麼可能寫 偽這個算法? 我們怎麼能寫的偽代碼 在汽車運行的軟件? 我的意思是,簡而言之,沸騰 到這樣的事情。 在被測試,減少排放。 其他排放更多。 但是,這是一個小 過高的水平,對不對? 讓我們嘗試潛​​水至於這是什麼 被測試手段抽象。 換句話說,即使你什麼都不知道 問題關於汽車,什麼樣的 也許你為了確定是否問 你正在測試中,如果你的車? 什麼樣的特點可能是 目前如果汽車正在測試? 聽眾:檢測設備。 DAVID MALAN:檢測設備。 因此,如果檢測設備 在附近,然後減少排放。 所以,我可以想像實施 與某種相機 或者檢測什麼是你的周圍。 讓我,讓我們 只是感覺太複雜 實際上還有其他 硬件只是用於這一目的。 聽眾:如果你在 公園,如果你的引擎蓋打開。 DAVID MALAN:在公園或 引擎蓋打開,所以這是很好的。 聽眾:與汽車的運行。 DAVID MALAN:所以這是一個有點 更concrete--和汽車的運行。 因此,這將是一個會合 幾個不同的情況下,如果你願意。 因此,如果汽車在公園裡,甚至 雖然這是一個非常機械的東西 通常情況下,我可以 想像編寫軟件, 特別是因為有 常光有這些天, 我可以想像那裡是 軟件可以查詢器 或什麼不是,你在公園裡,有 你的驅動器,你在相反。 我可以回去了 回答是肯定的任 或無來者的題型。 所以,我也大概可以回答 一個問題一樣,是引擎蓋打開。 也許,有一些類型的傳感器 要么給我回1或0, 真的還是假的,發動機罩打開。 然後車跑,我可以檢測 通過什麼樣的機制,不知何故? 一樣,汽車運行過程中,我 可以檢測到它的上, 我能以某種方式檢測 該汽車在行駛? 聽眾:RPM包。 DAVID MALAN:是啊,所以有 總是那針 告訴你每多少轉 分鐘的車輪正在經歷。 因此,我可以看看那個。 如果它不是0,這可能 是指汽車在行駛。 但是,我們必須是一個 稍微細心那裡, 因為 - 讓我們簡化this-- 如果我們只是說,如果車跑, 我們不希望只是減少排放, 我們想,如果汽車運行 和它的被測試。 所以有一些其他 成分,鄉親 已經假設該軟件是幹什麼的, 由於缺少實際的源代碼, 您可以從只有幾分推斷 汽車的物理效應,以什麼 可能是下面怎麼回事 罩中的軟件。 所以,如果車跑,也許, 比如說,後輪不動, 這可能預示 的一種考驗? 我究竟在暗示這裡? 是的,也許,這是在一個 這些輥的事情, 其中類似的車輪轉向 在前面或在後面, 取決於它是否是前輪或 後輪驅動,所以一半的輪子 是移動的,但該 另外兩個都沒有,這 是在現實世界中一個奇怪的局面。 如果你開車在 道路,這是不應該的。 但如果你是在一個倉​​庫 對某種輥系統, 確實可能發生。 我認為,人們還提出,也許, 如果汽車是運行和轉向 沒有秒針輪動,即 太可能是一個信號, 因為這是合理的 就像道路上的通俗易懂。 但即便如此,人類可能是 移動一點點或肯定 超過幾秒鐘。 或一過程 分鐘,賠率是它不 要在對被固定 完全相同的位置。 因此,換句話說,我們 可以採取減法, 你正在測試, 打破這個功能 到這些部件的成分。 這就是真正的大眾汽車什麼的 工程師在某種程度上做到了。 他們編寫軟件自覺地 檢測汽車是否正在測試中, 因此,減少排放,否則 發射在通常的方式。 這裡的問題也是如此, 是,軟件不是 是你真的可以看到,除非 有所謂的源代碼。 因此,有兩種不同類型的 代碼 - 至少兩種不同類型的 在世界上的代碼。 有一種叫做源 碼,這是不不像 我們一直在寫,源代碼。 這是源代碼寫在 一個叫偽語言, 這只是一些英語等。 還有就是它沒有正式的定義。 但是,C,以及Java,C ++,這些 都是正規的語言說, 當你在寫他們,你有什麼 是包含源代碼的文本文件。 但也有一些在 世界稱為機器代碼。 和機器代碼,不幸的是, 僅有0和1的。 所以機代碼是什麼 機器理解,當然。 源代碼是什麼人懂。 一般,但不 總是有一個節目 一個程序員使用了採用源 代碼並把它變成機器代碼。 而這程序 一般被稱為編譯器。 所以,你的輸入源代碼, 你的輸出是機器代碼, 而編譯器是一塊 軟件,做這一進程。 所以實際上很好地映射到 我們的投入,算法的輸出。 但是,這是一個非常具體的化身 的這一點,這是說, 即使你擁有大眾汽車的一個 汽車就是犯了這一點, 它不喜歡你可以打開 罩或打開的用戶手冊或者查看 在源代碼,因為由時間 到達您的車停在你的車道, 它已經被 轉換成0和1的。 而且它是很辛苦的,不是不可能的, 但很難收集很多的事情 從剛剛在看 底層0和1的。 所以,你自己看著辦吧,最終,如果 您了解機器operates-- 英特爾inside--如果你了解 英特爾架構, 但它是非常耗時。 而即使在那裡,你可能 無法看到的一切 該代碼可以做。 這個或任何疑問 樣的過程更普遍? 而實際上,我們可以配合這個討論 蘋果昨天的討論。 這也就是為什麼聯邦調查局不能只 去看看在犯罪嫌疑人的手機 找到的代碼行,為 例如,使密碼 或啟用,80毫秒的延遲。 因為到那時它的 在老鄉的iPhone, 它已經被 轉換為0和1的。 好吧,讓我們暫停這裡為我們 看看計算思維。 我們為什麼不採取有15分鐘的休息時間。 而當我們回來,我們將 看看編程 本身並開始繪製一些 這些高層次的概念 一個實際的,如果俏皮, 編程語言。