一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py...

49
Py 即合 來自 Python 愛好者的自學心得 胡崇偉 [email protected]

Transcript of 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py...

Page 1: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

一 Py 即合 來自 Python 愛好者的自學心得

胡崇偉 [email protected]

Page 2: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

個人自學經歷● 1995 初學 Linux, BBS, Apache● 1997 嘗試學習 Perl● 2000 學習 Python● 2004 學習 Plone● 2012 籌備台灣 Python 年會

Page 3: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

今天想要交流的子題有 ...

● 人人需要學習撰寫程式嗎 ?● 初學者該如何挑選入門的語言 ?● Python 的優勢和生態系現況 ?● 如何善用不同語言的長處 ?● 人工智能發展會怎樣影響職場和生活 ?● 如何克服資訊教育現場的挑戰 ?

Page 4: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

「電腦課只教學生使用軟體而不教程式設計,就如同僅要學生會閱讀文章,卻不教學生寫作文」● 只教使用軟體 , 其實是讀「制式重覆」的操作手冊而已 , 可能還不到閱讀文章的地步● 所有制式重覆的工作 , 都可能被機器人或人工智能取代● 多數新誕生的工作機會 , 都跟操控或調整人工智能有關 , 都需要用到程式設計能力● 我們無法預測學生的未來 , 但提供一致的機會是我們的責任

Page 5: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

人人都需要學習程式語言嗎 ?

● 人人都需要學習語言文字嗎 ?● 人人都需要成為作家 /文學家嗎 ?● 人人都會跟電腦機器溝通嗎 ?● 人人都需要成為軟體工程師嗎 ?

除非你自絕於數位世界 , 每個人的生活都會被電腦 /網路 /機器 / 人工智能深刻影響想要成為生活的主宰 , 學習如何跟電腦溝通合作是重要的事

Page 6: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

人人需要學習撰寫程式嗎 ?

是 , 也不是 .

學習程式,不是為了讓每個人都成為程式員,就像學習作文、數學、科學,不是為了讓我們成為作家、數學家、科學家。即使我們不是以程式員為業,仍有很多機會要跟程式員合作、使用資訊產品,未來肯定會有許多全新未知的工作型態,因為資訊科技的突破進展而問世,它們不可能被單一學科所定義規範,甚至無法在制式教育體系裡學習。我們已經看到這些事情的發生,未來只會加速這個趨勢。

Page 7: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

過往不曾出現的職業型態

Page 8: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,
Page 9: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

寫程式就像動手玩科學實驗● 重點是實際體驗整個流程● 觀察自己在流程怎樣互動1. 首先試著用語法寫出程式碼2. 測試執行結果3. 依結果調整修訂4. (重覆 )

實驗測試修改

重覆

Page 10: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

大哉問 : 那該怎麼學 ? 怎樣驗證效果 ?

● 能力優先於技術隨著科技進步和世界變遷,過去的教育難以因應未來的社會需求,「課本裡的舊知識在網路上都找得到,如果老師和學生無法透過學校教育共同創造新知識,那機器人取代四師也是必然的。」

● 可以從模仿開始學習 , 但模仿並不是學習的全部

Page 11: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是好的程式語言 ?

● 對初學者而言● 對教育從業人員而言● 對熱愛程式的人而言● 從業界的角度來看

Page 12: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

好 = 適合自己你想當魔戒裡的哪個角色 ?

Page 13: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

初學者該如何挑選入門的語言 ?

情境一沒得選啦 : 媽媽 (學校老師 ) 說什麼就跟著說什麼情境二給自學者最好的建議 : Teach Yourself Programming in Ten Years

● Use Your Friends● Keep It Simple● Play

Page 14: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是好的程式語言 ?

教育領域的三個評估面向● 易學● 易用● 通用

Page 15: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是易學 ?

直覺 / 快速互動 視覺 > 指令 > 編譯

可累積延續 英文 / 數學 / 物理 / 生物

一致性 (可掌控的例外 )

Python 三歲小孩也會 的故事

Page 16: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是易用 ?

寫程式的主要目的是解決問題,但,程式本身就是個問題,程式和原始問題之間,會相交出一系列的問題集。好的程式語言,應該要能讓你專注在原始問題上;好的程式人員,則是有能力降低整體的問題複雜度。想要解決這個問題 ? 很簡單,只要你先準備這個,再學會這個,遇到某個狀況不要理它,你就先照做不要問為什麼,對了,你說要解決什麼問題呢 ?

範例 : Hello World, For Loop Square Operation, Fibonacci Numbers

Page 17: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Java: Hello World

class Main {

public static void main(String[] args) {

System.out.println("Hello world!");

}

}

Page 18: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Initialization: Java Array vs Python List

boolean[] array = new boolean[size];

for (int i=2; i < array.length; i++) {

array[i] = true;

}

alist = [True] * size

Page 19: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是通用 ?

情境想像 : 此刻 , 你身處一個會議現場 , 會眾來自全球五大洲 , 人數比例和語言背景 , 就是照現況來平均分佈 , 只能選一種語言溝通 , 那你會選擇什麼語言 ?

Python 就是數位世界的通用語言 高支援度也是評估通用性的因素之一 ( 來自 Peter Norvig 的 Teach Yourself

10 Years 建議 )

Python Excel 微軟考慮使用 為 的語言選項

Page 20: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

為何 Python 適合教育領域 ?

Python 的原型起源自 ABC 語言 , 一個專為教育功能 , 以一般人為對象 , 而設計的程式語言 . 難怪 Python 在教育領域能夠吸引注意 . 但 , 為何 ABC 沒有成功呢 ? 可能原因是它不是開源專案 , 因此 Python 發展之初就決定要走開源之路Computer Programming for Everybody (CP4E)

70s: Can We Have a Computer on Every Desk?

80s: Can Every Computer be Connected?

90s: What WIll Happen If Users Can Program Their Own Computer?

開發中學生的教材 , 建立輔助工具 , 維護自學社群

Page 21: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

從設計目的來看 : C/C++ vs JavaScript vs Python

起源和應用 : 作業系統 /函式庫 / 硬體 vs 網頁程式 vs 科學 /教育 /資料 /人工智能Python 是唯一從程式教育角度來設計的語言 : 繼承自 ABC (不是系統語言 )

但加入 Exception Handling

Executable pseudo-code

待辦事項的範例ShoppingAssemble Chair

ShoppingEggsBaconTomatoes

Assemble ChairChair LegsSeat BackChair Cover

Page 22: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Python 是持續成長的語言 , 而且背後沒有特定的商業公司 , 為何全世界日益增加的愛好者與專家願意投入貢獻 ?

Python Zen:

追求用最簡化的方案解決複雜的問題別忘了還要有趣Python 文化 :

Clever 在 Python 世界裡並不算稱讚人的形容詞 , Pythonic 才是程式員追求的境界

Page 23: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

升學的角度● 美國大學先修課及大陸高考的規格調整● 美國大學程式教學最受歡迎的選擇

Page 24: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

就業的角度資料科學與人工智能的普及化人工智能入門工具 : Google TensorFlow

風格規範 ( 注意 Style Guide 的語言文化 , 程式寫完不是只有一個人要看 )

職場轉變的趨勢範例 : 高盛公司原本有近 500位股票交易員 ,現已刪為 3位交易員 ,但新增 9000位程式設計員 雇主 vs 工程師 : 對工具的思維不同

Page 25: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

自學程式跟學習畫圖的過程能夠參照 初學畫圖的人會拿鉛筆或蠟筆 , 不會跳到油畫

程式語言會演化 , 觀察某些關鍵點 , 你可以預知哪些語言會走進演化的終點

Page 26: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

熱愛程式的人 , 怎樣挑選語言 ?

Great Hackers (2004)

The Python Paradox

使用 Python 的專案,會比 Java 的專案,容易吸引到更聰明的程式人員。

Page 27: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

受歡迎的原因 ? 簡單一句話 ...

Python is either the best or the second best language for anything.

Page 28: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

動態演化的程式語言世界 十年前曾經預言 Java 有天會停止演化而滅絕 開始有人在討論 Python 是否正在走下坡

許多語言新秀崛起 : 函式和非同步運算的功能受到重視專業人士並不會只學一種程式語言 , 人們通常是為了新的思維才學習新語言

Page 29: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

什麼是運算思惟 ?

系統性地利用電腦 / 新鮮的肝來解決問題 著重創意 vs 著重技巧 (好的程式員會寫 , 偉大的程式員會抄 )

創意很難教 (如果真能教的話 ), 從既有技巧去精進是簡單的 , 兩種可以併存但比例不同Google 的看法:

● Decomposition: 將任務或問題拆解成數個步驟● Pattern Recognition: 預測問題的規律並找模式來測試● Pattern Generalization and Abstraction: 找出產生模式的原則或因素● Algorithm Design: 設計能夠解決類似問題並能重複執行的指令流程

Page 30: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Python Zen 就是運算思維的一種型式和練習There should be one -- and preferably only one -- obvious way to do it.

Page 31: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

同時學會物理和程式 , 可能嗎 ?

VPhysics 教學經驗 : 物理背後的方程式是核心 , 傳統方式是讓學生解數學題 , 無法引發觀察物理現象的興趣 , 透過程式來模擬物理現象反而創造好的開端 . 另外程式能力就是虛擬世界的創造力 , 引領學生迎向新藍海

Page 32: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

不同層次的理解1. 邏輯理解 (見山是山 )2. 語法正確 (見山不是山 )3. 語意正確 (見山還是山 )

程式是給人讀的 ,只是碰巧被電腦執行

Page 33: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Python 應用與教學工具科學 : SciPy

數學 : NumPy, Pandas

代數 : SymPy

物理 : VPhysics

生物 : BioPython

地理 : QGIS

音樂 : Music21, MuseScore

Python 利用 模擬變化球

影像辨識 : OpenCV

3D動畫設計: Blender, SuPy

網頁程式框架 : Django, Pyramid, Flask

可攜式電腦 : Raspberry Pi

電腦遊戲設計 : PyGame

手機 App設計 : Kivy

Page 34: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

EduBlocks: Easier from Scratch to Python

Page 35: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Mu: Python Editor for Beginners

長久以來 Python 內建的 編輯器是 IDLE

影片介紹 Mu 專案的緣由

Page 36: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

pythontutor.com

圖解執行步驟線上即時同步教學

Page 37: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

BioPython

Page 38: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

OpenCV

https://github.com/tjwei/ ComputerVisionWorkshop

Page 39: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,
Page 40: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

CycleGAN Face-off 直播換臉https://youtu.be/Fea4kZq0oFQ

Page 41: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

生態系與社群支援Python Software Foundation

Community Code of Conduct

PyCon, PyData, PyLadies

Diversity

Page 42: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

自用教學兩相宜 Jupyter Notebook

第一印象 : 在瀏覽器裡執行程式編輯可以互動的講義操作環境簡介 : Cell, 快速鍵Kernel 核心 : 支援 Python, R, Julia, Scala

外部支援 : NBViewer, Kaggle, Google Colab, Microsoft Notebook

遠端連線 : jupyter notebook --ip=0.0.0.0 --port=9876

Page 43: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,
Page 44: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Jupyter Notebook Sample Handout

http://bit.ly/python-handout

https://py.checkio.org/group/the-beginners

Page 45: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

身為家長 , 我期待的程式語言教育是 ...

自學 vs 同儕學習 : 牆中洞的啟示自身的印證 : 為了玩桃太郎電鐵而學日文單字沒學到並不是最慘的事 , 毀了學習意願才是更慘的事創造父母的陪伴 : 無價教學相長 : 師長學習當教練 , 從發問學起 , 引導去體驗

Page 46: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

桃太郎電鐵

Page 47: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

教育 vs 訓練● 不同的切入點 : 面對未知問題的能力 vs 面對已知問題的能力● 教育可能是從舉一反三的訓練當起點● 知識 /事實的描述 , 透過網路百科獲得初級的認識 , 透過專業社群來獲得進階的認識● 學習不是讀課本 , 而是透過 (工具能力 ) 整理知識 , 去產生自己版本的課本● 體驗 / 同理是人工智能無法取代的能力● 跨領域的創造才是新世代的藍海機會 : 21世紀 5C 關鍵能力

(工程師可能容易忽略)

Page 48: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

夢想與機會

Page 49: 一 Py 即合 - exp1.slat.orgexp1.slat.org/westart/web/sites/default/files/2018-07/一 Py 即合.pdf · 僅要學生會閱讀文章,卻不教學生寫作文」 只教使用軟體,

Thank You

[email protected]