第1279回-運算思維與程式設計-吳紹裳-1-序言
5/19週六,國中會考的第一天,早上先去逛菜市場,中午去考場看看女兒的狀況,感覺還蠻穩定的。回家後13:30 在FB上看到吳紹裳老師的臉書貼文:
我按了影片連結去觀看,吳紹裳-從運算思維與系統分析談起-1-序言 - YouTube,原本是躺在飄浮式涼椅上悠閒的閉目聆聽,但聽著聽著不禁開始正襟危坐地聽,到後來則是跪著聽,哇!真是天神傳福音啊!對於程式教育的前世今生、還有學習階段和工作階段的連結,都有通透的見解!
由於我比較沒有辦法用聲音來思考,我得看著文字、看著上下文,才比較能夠吸收吳老師的功力。因此我想打逐字稿。
我首先想到的是,用 Chromebook 播影片,然後在手機上開google 文件,把手機靠近小筆電,語音辨識做成文字檔。
後來又想說也可以直接在 YouTube 上做字幕,就像我在第1262回-學習就像終身幼兒園-1-導讀 所使用的做法一樣。
- 將自己程式設計的學習心得,逐一分享給大家!這是一系列的開端,從序言開始,分享我對於運算思維、程式設計與系統分析的想法,並逐步進入主題。
我按了影片連結去觀看,吳紹裳-從運算思維與系統分析談起-1-序言 - YouTube,原本是躺在飄浮式涼椅上悠閒的閉目聆聽,但聽著聽著不禁開始正襟危坐地聽,到後來則是跪著聽,哇!真是天神傳福音啊!對於程式教育的前世今生、還有學習階段和工作階段的連結,都有通透的見解!
由於我比較沒有辦法用聲音來思考,我得看著文字、看著上下文,才比較能夠吸收吳老師的功力。因此我想打逐字稿。
我首先想到的是,用 Chromebook 播影片,然後在手機上開google 文件,把手機靠近小筆電,語音辨識做成文字檔。
後來又想說也可以直接在 YouTube 上做字幕,就像我在第1262回-學習就像終身幼兒園-1-導讀 所使用的做法一樣。
- 從youtube 下載影片
- 上傳到自己的youtube
- 新增字幕 => 自動從語音辨識產生字幕
- 下載英文字幕 srt 檔
- 用純文字編輯器打開英文字幕 srt 檔,一段一段複製到 google 翻譯,把中文翻譯複製到英文這邊來,修改翻譯內容,變成雙語字幕。
- 上傳雙語字幕
- 調整字幕出現的時間點
可惜這個想法是失敗的,因為目前在 YouTube 後台中,只有英文語音可以自動產生字幕,中文還不行。
沒關係先打逐字稿吧!但好久沒打了不知道現在有沒有簡便的方式?而且又要能在 Chromebook 上做,上網搜尋與評估之後,我決定使用開源軟體 oTranscribe 來打逐字稿
沒關係先打逐字稿吧!但好久沒打了不知道現在有沒有簡便的方式?而且又要能在 Chromebook 上做,上網搜尋與評估之後,我決定使用開源軟體 oTranscribe 來打逐字稿
早上九點多稍微試做了一下,覺得還蠻方便的,不用在兩個視窗之間切來換去,兩隻手都在鍵盤上就可以搞定打字和播放暫停影片的動作,因為答應老婆要去山上玩,所以十點先匯出存檔。
中午吃過飯後用大約半小時完成最後的部分,把google 語音辨識的文字修改一下,總比從頭到尾自己打字快!
後來我也用臉書私訊吳老師徵得同意,所以我把逐字稿刊登在此:
中午吃過飯後用大約半小時完成最後的部分,把google 語音辨識的文字修改一下,總比從頭到尾自己打字快!
後來我也用臉書私訊吳老師徵得同意,所以我把逐字稿刊登在此:
大家好!
自從歐巴馬在數年前提出程式設計的重要性,
並且要把課程向下延伸到國小、甚至幼兒園階段,
接下來,全球就如火如荼的
想要在程式設計這一塊領域當中發揚光大
事實上,計算思維跟程式設計,
這兩者之間有什麼樣的關係呢?
我們強調運算思維是要去解決問題的能力,
程式只是解決問題的一種工具,
這兩者之間我們要怎麼樣學習,讓它並行不悖呢?
因此我打算在未來的日子裡,
慢慢的來分享,
個人對於運算思維與程式設計的一些觀念以及想法,
我打算要做的課程,大概有這些:
我們可以從算思維的觀念、能力來談起,
然後再來學習所謂的程式「六力」
利用 Scratch來完成這個程式「六力」,
由於 Arduino 和 Micro:bit 是最近很夯的物聯網,
我們也會提到這一塊
Scratch 積木式的程式語言
畢竟有它的限制性
所以我希望能夠盡快的脫離 Scratch
而回到真正的程式語言Python
完成了前面這幾個階段的課程之後呢
我想要用一些實際的案例
例如
用 Pygame 來寫遊戲程式
用 Django 來寫一個網頁程式
甚至做一些繪圖、圖形、視窗介面的處理
至於這些課程到時候會發展成什麼樣子
我想就邊做邊看吧
首先我們來看看運算思維
在今天的課程裡面
我並不打算談這個
因為你只要打開Google的瀏覽器
打上運算思維四個字
就會有一系列的文章
這個我們留待下一個單元裡面再來討論
我反而要討論的是
在運算思維沒有出現之前
我們是怎麼樣來用電腦來解決問題的
事實上電腦程式設計並不是最近幾年才出現
四五十年前就已經有程式設計了
在當年我們沒有運算思維這個名詞之前
我們通常採用的就是所謂的系統分析與設計的一個概念
今天我們先打算稍微說明一下系統分析與設計的一些想法
下一次你再去配合運算思維
你就會發現這兩個之間其實是有一定的關聯性的
所謂系統分析
一開始我們一定是要確立
我們到底想要做什麼樣的東西
我們需求是什麼
並且把他進行一個的實體描述
比如一家公司要做進銷存管理系統
我們可能確定好這個需求之後
甚至還要去跟每一個單位的員工訪談
跟會計單位訪談
最後確立出我們需要的東西
並且將這些東西進行實體模型圖的建立
比方說這些單位有哪些關聯
這些資料要從哪一個地方流到哪一個地方
這些資料跟實際的單位又有什麼樣的關係
最後把這些資料進行所謂的「正規化」的作業
事實上這個就是傳統式的關聯式資料庫的做法
我們會建立資料欄位、建立資料表
了解資料跟資料之間的關係
然後再考慮我要建置在哪一個系統之上
我要用哪一種程式語言
我的架構是長什麼樣子
我的功能結構圖是長什麼樣子
全部做完之後
才是真正進行程式開發跟除錯的動作
程式開發有很多種語言
用C、用 JAVA、用 Python
甚至用最近的Go、KOTLIN
這些都是可以做程式開發的
我們會透過結構化的設計、物件導向的設計等等
甚至考慮到使用者的介面、網頁的介面
跟一個單純的應用軟體介面是有不同的
甚至,如果自己沒有能力開發
是不是可以委外呢?
就好像一個建築師
他畫好建築圖之後
他也會找優良的營造廠商來幫他去蓋這個房子
這個就是委外的概念
當然做好之後
我們會進行效能的評價
如果發現哪些地方不好
我們可能這邊要再重新來一次
不過由於前面的這些動作
看起來好像跟程式開發一點關係都沒有
尤其是國內
長久以來都是一個工程師
程式設計師
包辦所有的工作
因此在系統分析這一部份呢
可能是大家都比較弱的一環
但是透過上面的說明
大家應該可以了解
系統分析不等於程式設計
因為在系統分析的過程當中
我們並沒有真正去考慮到
程式要用哪一種語言
程式要設計成什麼樣子
而是分析完畢之後
才來進行程式設計的動作
同樣的道理
運算思維也不等於程式設計
運算思維是建構於解決問題的思考模式
透過問題的確立之後
去分析這個問題
需要哪些解決步驟
需要怎樣子的演算法
需要怎麼樣的找出它的規律性
去重構你的方式
這些不是程式設計
只是運算思維完成之後
當我想法想完全之後
才用某一種程式語言來完成我的想法
因此運算思維是屬於高層
這裡講的高層不是指能力
而是指程式設計的外圍
先想好再執行
現在問題來了
是雞生蛋還是蛋生雞?
也就是說
要先有程式設計的能力
才能學習運算思維
還是先有運算思維的能力
才能學習程式設計?
一個完全不懂材料工程、不懂流體力學、不懂建築工學的建築師
怎麼可能畫得出建築圖呢?
反過來說
一個泥水匠
他知道這些材料
知道這些工法
但是他又沒有足夠的能力
他就畫不出建築圖來
所以運算思維重要,
還是程式設計重要?
其實我覺得這兩個都重要
基本上如果能夠擁有程式設計的能力
你可以更了解運算思維
一個完全不懂程式設計的人
有時候運算思維那種觀念想法
他很難接受
因為他並沒有程式設計的能力
所以他沒有辦法用電腦的方法來思考
反過來說如果完全不去學程式設計
完全學運算思維
也學不下去,為什麼?
因為你根本不知道電腦是怎麼樣思考的
你怎樣去規劃
因此,運算思維只是一個概念
程式設計是一個完成這個概念的能力
兩個是相輔相成的
程式語言當中
大家可以看到2017年IEEE的程式語言排行榜
JAVA、C、Python、C++、JavaScript
程式語言非常的多
但是不管是用哪一種語言
其實他運算思維的概念是一樣的
我們運用程式語言完成一件工作
去完成這個工作
是程式語言的目標
怎麼樣去完成
可能就是運算思維所要培養的能力了
程式設計有它一定的基礎跟方法
程式設計裡面
我個人認為有「六力」是非常重要的元素
至於是哪「六力」
這「六力」跟運算思維又有什麼樣的關係呢
我想
今天就先到這裡為止
我們下期再會
謝謝大家
留言