思考的演算:跟著電腦學思考,你也可以成為計算思考大師
思考的演算:跟著電腦學思考,你也可以成為計算思考大師
  • 定  價:NT$360元
  • 優惠價: 79284
  • 可得紅利積點:8 點
  • 庫存: 3
  • 加入購物車
分享:
 限量贈品
行走好讀帆布袋(贈品)詳情
贈品已送完!
商品介紹
  • 商品簡介
  • 作者簡介
  • 名人/編輯推薦
  • 目次
  • 書摘/試閱
  • 「程式語言」只是表層,更重要的是背後的――「計算思考」
    西方國家已經將「計算思考」列入中小學課程。107年,台灣也正式列入!

    計算思考:新世代的必備思考工具與溝通能力!
    許多國家都在提倡計算思考,甚至將之列入中小學課程。在此全世界都在夯程式設計之時,我們不禁問:一定要學會程式語言嗎?事實上,比起程式語言,更重要是學會背後的電腦運算思維,即計算思考。而計算思考的核心,就是培養解決問題的能力,是新世代必備的溝通能力。
    所以即使你不會寫電腦程式,你也可以成為一個計算思考者。不論您的天賦為何,都能在了解計算思考的基本概念後,和自己的生活或是擅長領域結合來使用。換句話說,無論你未來的職業為何,都需要學習計算思考的技巧。
    然而,計算思考到底是什麼?它所能做的事情超過你的想像!

    .透過不斷改良搜尋演算法,電腦科學家可以幫忙閉鎖症患者如鮑比,更有效率寫出《潛水鐘與蝴蝶》一書,也幫助因肌肉萎縮症而無法說話的偉大物理學家霍金,無礙地跟和世界溝通!

    .魔術師擁有電腦設計師一樣的思考!計算思考能讓魔術師在舞台上永不出錯!

    .只要一張紙、一隻筆,你也可以立刻設計出你的對話機器人,甚至詐騙機器人。

    .如何讓一台電腦學會真正的「觀看」,背後的演算思考出乎你意料之外的簡單。

    .你放假在咖啡店打工,然而每到假日咖啡店就大排長龍,顧客排到火冒三丈。透過計算思考,你找出問題,並對工作團隊做些微小改變,整個流程就會變快,問題獲得解決。

    本書在國外是為青少年而寫,內容簡潔易懂,案例豐富有趣,是每個人都可以真正讀懂的計算思考入門書籍。書中以解謎、魔術、桌遊、實際醫學應用案例、建造簡單的談話與詐騙機器人等真實又具挑戰性的例子,實體又清楚地將計算思考原則一一帶出,讓人了解現代電腦可以做到的事,以及如何做到的。
    在這個計算思考已經改變所有人生活、工作、遊戲方式,以及科學進行的方式的年代,這本書能讓你對程式書寫所需的技巧初步瞭解,並能協助改善你生活中的解決問題能力,更能讓你更深入瞭解你自己的大腦以及數位世界,讓你能發想出絕妙點子並能付諸實行,絕對值得一讀!
  • 保羅.科松是倫敦瑪麗皇后大學的電腦科學教授。他的研究興趣是電腦科學教育、人機互動以及正規方法。他於2010年得到了高等教育學院全國教學獎,並贏得2007年的英國工程和自然科學研究委員會年度非職業電腦科學作家以及數個教學獎項。他共同創辦了Teaching London Computing 為教師提供持續專業發展課程。保羅第一次自學寫程式是在南法的一個海灘上。

    彼得.馬克歐文也是倫敦瑪麗皇后大學的電腦科學教授,研究興趣是電腦視覺、人工智能和機器人學。他於2008年獲頒高等教育學院全國教學獎,並因為對於不同領域觀眾推廣電腦科學的努力於2011年獲得IET Mountbatten獎章。彼得是個業餘魔術師,對於科幻小說有著健康的喜愛。

    保羅和彼得共同創辦了國際知名的電腦科學好好玩(Computer Science for fun)計畫(www.cs4fn.org),並是英國Computing at School網絡(CAS)的創始成員。保羅現在是CAS的董事會成員。

  • 現代人非學寫程式不可嗎?
    洪士灝 (臺大資訊工程系、網路與多媒體研究所教授)

    思考的演算(computational thinking),也稱計算思考或運算思維,是當前我們很希望融入教育、改良產業,讓社會更進步的重要技能。電腦已經大幅改變了這個世界,但還有更多、更大的改變正在發生之中,因為對現代社會的人們來說,計算的能力已經無所不在,但如何利用這些隨手可得的計算能力來強化思考、解決問題,難道只有少數懂得寫程式的人才行嗎?事實上並非如此,近年來用計算思考來解決問題的門檻已經大大地降低了,而廣義的計算思考更是擴大問題的範疇到社會的各層面,涵蓋了教育、產業、消費、娛樂,乃至於改變我們學習、工作和生活的方式。

     因此,許多國家都在提倡計算思考,甚至將之列入中小學課程。然而,我們要如何學習和應用計算思考呢?非學會寫程式不可嗎?其實,理解計算思考的方法很多,透過寫程式與電腦互動是最直接有效的方法,但寫程式這件事情並不是計算思考的全貌,好比學會寫字並不代表能寫出一篇好文章,而且文字只是諸多創作的方式之一,繪畫、音樂、舞蹈、戲劇也都是創作展演,除了通曉技能之外,創作者的素養也是極為重要的。從某個角度看,計算思考也是一種創作,把想法透過計算的形式呈現出來,但創作者必須理解計算、駕馭計算的工具,才會產生出好的作品。

     究竟什麼是計算思考?這是一個非常難回答的問題。如果讀者先翻到《思考的演算》這本書的最後一章,會讀到一些非常抽象的概念,包括演算法思考、計算模型、科學思考、抽象化、通化、拆解、評估、創造力,但可能在讀完這一章後對這些抽象概念仍然非常模糊。很多會寫程式的人對計算思考也是一知半解,因為對於現代電腦如何做好工作,缺乏系統性的理解。

     我認為,廣義的計算(computation)不只是算術,而是包括所有能夠用電腦(computer)完成的工作。這樣的定義有點弔詭,因為如果我們把電腦定義為做計算的東西,那麼就成了循環定義,但我想強調的重點在於:現代電腦能夠完成的工作,遠遠超過一般人所理解的計算,也遠超過數學所關切的範疇,與其定義電腦,不如直接去認識電腦以及電腦能做的事情。所以我建議學生在學習計算思考的時候,除了由下而上從基本的演算法和程式邏輯學起,最好也由上而下去看看現代電腦能夠做什麼,理解如何能做到那些事情。透過研究思考個案把上下融會貫通起來,才能真正體會計算思考的內涵。

     國內現在有很多教程式設計的地方,也有不少創客(maker)的社群和教材,但是非常缺乏由上而下從問題導向去探索計算思考的科普教材。本書的出現,對於我們提倡計算思考的教育工作者,如同一場及時雨。作者藉由豐富有趣的個案引人入勝,介紹現代電腦能做的事情,並且引領讀者去探索電腦如何能做到那些事,由這些個案呈現出解決問題的方法,歸納出關鍵的計算思考,這是我樂見的教學法。每一章的個案,都有助讀者理解某些有助於解決問題的計算思考法則,而本書的十件個案,極有系統地逐步涵蓋重要的計算思考法則,因此我非常樂意推薦這本好書,給想體會和運用計算思考的朋友們。

  • 序言
    關於作者
    致謝

    第1章 未來必備的思考能力
    像電腦科學家一樣思考,你可以將隨處可見的想法化為現實

    第2章 尋找說話的方式
    若你某天跟《潛水鐘與蝴蝶》作者尚-多明尼克.鮑比(Jean-Dominique Bauby)一樣,在醫院的病床上醒來後,發現自己全然癱瘓,只剩下眼睛可以眨動,你要怎麼跟外界溝通?電腦科學家也能幫助閉鎖症候群患者溝通嗎?

    第3章 魔術也是一種演算法?
    想成為一位傑出的舞台魔術師,你需要的技巧竟然和傑出的電腦科學家一樣?
    計算思考如何讓你的魔術萬無一失?

    第04章 投入一萬個小時練習,能讓你成為專家
    如果你想要成為某領域的專家,就要發展你的模式比對和通化技巧。
    若要被認可為專精於某項技巧,首要規則就是你需要投入一萬小時的練習。

    第5章 騎士之旅和城市導遊
    兩個表面上看來不同的問題一旦經過通化後,實際上是同一個問題,解也一模一樣。

    第6章 人類初學者的機器人建造課
    就算沒有電腦,你也可以創造自己的聊天機器人。
    你只需一疊空白卡片、一支筆和一點思考,就可以辦到。

    第7章 建立一顆腦
    有了人工智慧電腦,我們便可以直指核心深入探索,身為人類是什麼意思?

    第8章 建造一個詐騙機器人
    巴納姆效應建基於一個事實:當一段敘述可應用於大多數人身上時,人們往往會相信這段關於他們的敘述是對的。就好像「有時你懷疑自己是否做了正確的選擇」,或是「你的某些夢想滿不切實際的」。

    第9章 生命也可以轉變成網格遊戲?
    細胞自動機的遊戲,讓我們理解植物在雨林中如何散布生長、珊瑚礁如何發展、地震如何發生,以及動物如何遷徙。也讓我們理解塞車如何形成,疾病在人群中如何傳播。

    第10章 如何讓電腦觀看?
    人類大腦總是在尋找模式,因為要在影像中觀察到模式,才能辨認出圖像中的事物。因此我們的觀看能力來自於我們能在影像中找到邊界。那麼,電腦要如何「觀看」到邊界呢?

    第11章 翻轉醫學的奇蹟
    高科技醫療器能拯救生命,也能奪走生命。這些儀器都是醫護人員在使用,但醫院是個繁忙又充滿壓力的地方,因此科技在設計時應該把這點考慮在入,讓心理學家及人因專家參與其中,一起創造出更為實用的科技。

    第12章 人類也能像電腦一樣完美思考?
    人類大腦有許多偏誤和偏見,因此我們常常會犯錯,但機器能幫助我們不犯錯。提款機先取回卡片後吐鈔的設計,就是機器幫助我們減少犯錯的案例之一。

    第13章 究竟什麼是計算思考?
    對人有所瞭解,必須是計算思考問題解決的中心。

    延伸閱讀
  • (第二章)
    二十個問題?

    用五個提問解決問題
    無論你是否想出了答案,我都可以向你保證,只要我們問一個不同的問題,你就會知道那問題是正確的。
     讓我們來玩玩「二十個問題」這個童年遊戲:我想像我是某個名人,由你來問我各種問題,然後試著猜出我是誰。轉折在於我只能用是或不是來回答問題。和朋友玩一次這遊戲,思考一下你在猜測時會問什麼問題,如此來看看遊戲可能進行的方向。

     「你是女的嗎?」不是
     「你還活著嗎?」不是
     「你是個電影明星嗎?」不是
     「你來自英國嗎?」是的
     「你是個作家嗎?」是的
     「你活在二十世紀嗎?」不是
     「你活在十九世紀嗎?」不是
     「你是莎士比亞嗎?」是的

     玩這個遊戲時,你可能會提出類似的問題。你不太可能會從提問「你是亞里斯多德嗎?」「你是詹姆士.龐德嗎?」「你是居禮夫人嗎?」這樣的問題開始,若用這種方式提問,你可能永遠也沒辦法在二十個問題之內得到答案。你只有在最後,你已經很確定答案時(就像例子中那樣)才會提出這種問題。相反地,你可能會先提出「你是女的嗎?」之類的問題。
     做為第一個問題,為什麼這是個好問題呢?這是因為無論答案為何,它都排除了另一半的可能性。如果你提問的是「你是女王嗎?」這樣的問題,若你剛好對了,你可以排除掉百萬種以上的可能性,但如果你是錯的(這種可能性較大),你就只排除掉一人。換句話說,提出這樣的問題得要有中樂透的運氣,才能玩得好這個遊戲。所以,玩「二十個問題」的秘訣在於,無論答案是什麼,你每一次都要提出能排除一半人選的問題。

    這樣做有多好?
    提出這種二分法的問題,比每次只提出一個人名好上許多,但有多好呢?假設一開始我想的是一百萬人中的一個人,那麼透過每次提問來排除掉一半的人,總共需要幾個問題呢?在提出一個問題後,人選只剩下五十萬人;兩個問題後,變成二十五萬人;在提出十個問題後,人選只剩下原本一百萬人當中的一千人了(見圖1)。持續進行下去……之後每再一個問題分別會剩下五百人、二百五十人、一百二十五人……,而在第二十個問題時,只剩下一個可能人選。因此,如果你每次都能提出完美的二分法問題,你一定可以贏得這個遊戲。你永遠都可以在二十個問題裡猜出答案。
     這全都是演算法思考。我們一直在試著找出一個能玩「二十個問題」遊戲的演算法,雖然我們尚未想出一套完整的演算法,但我們確實已想出提出問題的方法。當你玩這遊戲時,這就是你的問題了。我們在此使用了另一個計算思考的技法:拆解(decomposition)。我們將問題切(拆解)成不同部分,好讓我們能分別專注處理每一個小問題。我們已經想出整體的策略;至於要想出能排除半數人選的問題,則是另一個不同的問題。
     拆解是個常見的解決問題策略,也是電腦科學家的一個必要工具。電腦科學家在寫程式或設計處理器(好比你筆電或電腦中的那種)時要解決的問題,數量往往十分龐大。現代電腦晶片比起整個地球的道路網絡還更複雜,可想而知想要一次就設計完成有多困難。只有把它拆解成你可以分別處理的元件,才有可能完成工作的一天。
      拆解仰賴的是抽象化,即將細節藏起來。此處,我們將所要提出的確切問題這種細節隱藏起來,只思考該問的問題類型。我們前面在思考我們的演算法效率有多高時,也使用到了拆解。我們將寫完整本作品所需的時間這問題,拆解成溝通單一字母所需的時間,以及將結果轉化為寫完整本書所需時間這兩個問題。

    一個新的演算法
    所以,在提出正確問題的前提下,最糟情況只需詢問二十個問題,就能從一百萬個可能性中找出我在想的那個人。將上述遊戲與從二十六個字母中找出病患所想的那個字母平均需要十三個問題(最糟情況是二十六個問題)做比較,我們就會發現,當我們問「是A嗎?是B嗎?」時,我們所做的事等於是在問「你是米老鼠嗎?」「你是尼爾森.曼德拉嗎?」你在試著從許多事中找出我在想的那一個人,一模一樣。再一次,它本質上的確是一樣的問題,就像聯想字詞一樣!
     如果這本質上和找出一個人正在想的字母是一樣的問題,那麼很明顯地,同樣的策略能給我們比之前所想到的種種解決方法,都還要好的解答。此處我們再次使用到了模式比對及通化。我們正在轉變問題,好再次使用過去已經得到的解。那麼,我們的排除半數解決方案使用在字母上,會是怎樣的對應方式呢?我們一開始可以問「這是一個母音嗎?」但剩下來的四個問題該問些什麼呢。既然我們每一次都需要排除半數的字母,那麼第一個問題顯然會是「這是一個在A到M之間的字母嗎?」如果答案是「是」,那麼我們再問「這是一個在A到F之間的字母嗎?」如果答案是「否」,那麼我們就改問「這是一個在N和S之間的字母嗎?」以此類推。這樣一來,我們就一定能在五個問題內得到那人心裡想的字母,如圖2的決策樹所示那般。從圖的頂端開始,根據已知的是╱否問題一路向下走。在最糟的情況下,你也永遠會在五個問題後得到一個字母;這就是演算法思考的另一部分。而在可能出現混淆狀況時,我們則需確保雙方同意一致的細節,比如當我們說「這是一個在A到M之間的字母嗎」時,我們需要清楚知道,我們是否有把字母M包括進來(我們有)。
     我們甚至可以使用頻率分析技巧,來進一步改善這個解。舉例來說,在二十六個字母中,我們可以用比五個問題更快的方式得出字母E以及其他常用的幾個字母。你可以試試看,設計出一個能做到這件事的決策樹;我們也可以使用聯想字詞的技巧,來猜測只拼了一部分的單字。我們從早先的演算法所得到的解決方案,仍然適用於此處;我們再次重新使用了過去的解決方案。
    ……………………………………………………
    (第十章)
    讀心術
    看見無所不在的模式

    有多少次你抬頭仰望夏日晴空中的雲朵,在雲中發現了胖嘟嘟的動物?或是有多少次你在早餐盤裡新鮮的炒蛋中,發現某個電影明星的臉正在盯著你看?這兩個都是我們大腦嘗試從周遭世界尋找模式的例子。在這些例子中,我們的大腦只是在尋找隨機出現的模式,但我們的大腦還發現其他更為重要的模式——它們甚至能夠幫助我們活下去。
     尋找並預測模式,無疑是我們大腦的主要工作,包括嘗試找尋視覺模式讓我們看見物體,或是尋找聽覺模式讓我們聽見聲音。其他模式還包含我們做出的決策、採取的行動等等;這些決定的基礎,來自我們對於之前發生過的事所擁有的經驗模式。我們喜歡模式;模式讓我們覺得舒服。舉例來説,電視新聞按照固定模式進行:它會告訴我們接下來發生什麼事,接著展示新聞,然後再次提醒我們剛剛播了什麼——這就是我們在觀看電視新聞時經驗到的三個階段。
     文學中也充滿了我們喜歡並熟悉的模式。單一神話(monomyth)是作家暨神話學家約瑟夫.坎伯(Joseph Campbell)於1949年提出的概念,指出所有英雄的旅程都遵循一個類似的模式,而這模式反覆出現在現今及歷史上的許多故事及電影中。這模式包含一個踏上探險路程的人、他面對了一個主要挑戰、他克服了挑戰、最後以改頭換面之姿回到故鄉。這模式具備戲劇的三段式結構,即起始、中段及結論,出現在荷馬的史詩《奧迪賽》、大部分莎劇,以及托爾金的《魔戒》中。它也是《星際大戰》及《法櫃奇兵》等電影的基礎。這模式似乎提供故事堅實的架構,因此我們覺得這些故事很有趣、容易瞭解,並且令人感到滿足。
     我們已看到模式比對也是計算思考的核心之一,被使用在觀察抽象化及通化上,藉此找出產生式規則並選擇合適的表示法。電腦科學家對尋找及預測模式的最佳理解方式深感興趣,因此將計算思考應用在發明模式比對最好的方式上,結果通常找到的,是以複雜模式比對演算法呈現的方式。這些演算法被應用在電腦上,讓機器能自己進行模式比對——計算思考甚至能被應用在計算思考本身背後的概念上。
     模式比對的演算法,會檢視組成我們基因數據的化學基礎,從中尋找模式,用來與特定疾病患者的模式進行比對。這類演算法會嘗試預測金融市場的變動,提供競爭優勢。這類演算法也會預測電腦遊戲中的角色,該如何和所偵測出的你的遊戲風格對應,以保持你對這遊戲的興趣。這類演算法甚至會讓機器以我們的方式「觀看」這世界。為什麼機器不能從雲朵中也看到小動物呢?模式無所不在,重點在於要怎麼找到它們。

    魔術比對:密碼和變魔術
    讓我們看一些簡單的模式比對演算法,以此得到基本概念。魔術師很早之前就理解到,他只要知道一個你不知道的秘密模式,便可以用這個模式來創造魔術效果。舉例來說,雙人讀心遊戲就有很長的歷史。魔術團隊中的一名成員在舞台上矇上眼睛,另一人則從觀眾席中選出一個物品。透過「心電感應」,舞台上的矇眼者儘管眼睛被矇住,還是可以找出剛剛被挑出的物品是什麼。這個魔術之所以可以完成,借用的是精巧的文字密碼,這可需要兩名表演者做大量記憶。
     舉例來說,如果選中的物品是支筆,助手會問:「好的,我手裡有什麼?」而如果選中的是懷錶,他的問題就可能會變成:「我手裡是什麼東西?仔細想,慢慢來。」當然,這些都只是猜測:魔術師可能會發展出更細緻的文字密碼,讓他們的規則更難記住。這種娛樂形式在過去很受歡迎,於是表演者發明出越來越精細的密碼,這模式就藏在舞台上所進行的對話中。透過解碼,不可能的事情就可以發生。

    你也會讀心術
    你也可以自己進行讀心術,對隱藏模式的威力進行實驗。這版本不需要和傳統版本一樣用上那麼好的記憶力,但你需要一個共犯,也就是一個與你一起表演的夥伴,還有一屋子的觀眾。要讓這表演看起來魔幻神秘,需要讓團隊中的一名成員——也就是魔術師——離開房間,然後觀眾秘密選出房裡的一個物品,等魔術師回到房間後,要求他猜出是哪個物品。
     「為了證明表演的公正,沒人改變主意」,魔術師助手需留在房內。一旦魔術師回到屋內,助手就要看似隨機地往某個方向看去,手指不同的物品,一一詢問同一個問題:「這是被選出的物品嗎?」魔術師每次都要回答是或不是。
     你不用記住一套複雜的口語密碼,才能達到效果;你可以使用預測演算法的簡單的模式比對。事先和你的助手討論好一些物件,像是一盞燈。無論你們選擇哪個物件,讓我們稱它為X;而秘密信號就是,當助手指向那個物件時,那麼下一個他指到的物件,讓我們稱為Y,就是觀眾選出的物品。這個共享的秘密是圖62中的共享演算法。當然,你們兩人需要事先對X是哪項物品達成共識。
     如果你被要求再次進行同樣的表演,再猜一連串的物品,那麼這模式可能會太過明顯。但只要運用一點計算思考及衍生演算法,你便可以輕鬆迴避這個窘境。每一次你表演這個魔術時,你在指向被選中物品前,都使用一個不同物件做為參照:第一次是檯燈,第二次是地毯,接著則是開關,以此類推。現在,X每次都會改變。你們兩人共同想出的密碼看起來會像圖63。
     當然在開始之前,你要確定房間裡確實有盞燈、有塊地毯,門邊有個開關。接著你在要猜第一個物品時(當猜測次數為一時)指向燈,要猜第二個物品時(當猜測次數為二時)指向地毯,而要猜第三個物品時(當猜測次數為三時)指向開關。此時,最後的預設陳述要出場了,以免你被要求找出第四、第五甚至第六個物品,因為有些人就是永遠不會滿足!你還沒有準備好,但是優秀的演算法思考指出,你應該要把每一種可能性都包含進去。因此,當觀眾要求你在原本準備的三次猜測以外再次進行猜測時,你在這裡可以使用預備的理由:「我的法力沒了。抱歉,我無法再繼續下去了。」

    推薦書展
    公司簡介服務條款隱私權政策異業合作人才招募圖書館採購/編目三民禮券兌換處好站連結三民‧東大‧弘雅目錄古籍‧古典目錄