Scratch不僅適合小朋友,程式設計師和大學老師都應該廣泛使用!!!
去年接觸到了Scratch這個程式設計工具,它是一種簡易圖形化程式設計工具,這個軟體的開發團隊來自於麻省理工大學稱為“終身幼兒園團隊”(Lifelong Kindergarten Group)。
網址https://scratch.mit.edu/
使用這個工具,當時我是為了教孩子們,在使用了一段時間之後,一些想法不自主的就萌生出來了。
Scratch可使大學教學更有互動性
我記得當年讀大學的時候,老師都是用C在一個黑色或藍色背景的編輯框中,敲入或輸出一些非常無趣的字元。
我只想說老師,其實我就想知道遊戲是怎麼做出來的,怎麼就出來一架飛機,它就能移動且發射子彈了。
那麼這個在Scratch工具中很容易實現,可以加入一個Sprite,然後圖片切換來實現物體的運動。
當時老師如果能先用Scratch來實現一個東西,然後分析一下原理,然後再程式碼來一通,這知識點不就聯絡起來了?
Scratch對面向物件的理解有幫助
Scratch絕對是面向物件程式設計入門的神器。因為程式碼都是寫給每個物件的。
這樣能很好的使你在思考程式實現的時候,只考慮當前物件應該有的行為,而不是老想著在某一個物件裡去直接控制其它物件行為。
在Scratch裡物件的行為都是靠“事件”來驅動的,這樣你能很好的理解事件的概念。
在Scratch中物件都是獨立的,鬆耦合的,那麼物件直接的協作主要是通過“訊息”來控制,這樣你也能很好的理解訊息的概念和工作方式。
Scratch是個很好理解程式語言的工具
在scratch中你會經常需要用到 變數 , 迴圈 , 判斷 ,和 方法定義 來實現一些功能。
擴充套件模組,其實就是用來定義函式,這樣能使你更好的理解函式的使用方法,使用場景和使用函式的好處。
用來理解 遞迴 也比java等程式碼來得直觀。
Scratch是個很好的建模工具,使你關注於程式設計邏輯而非語言本身
有時候為了解決某個問題,你有個很好的演算法。
但是為了驗證這個演算法,你需要將其用C,C++或java等其中某一種語言來實現。
由於你不太熟悉程式語言語法以及它提供的方法,使得你花很多時間來編寫程式,有時甚至執行不起來。
你原本目的是驗證演算法,然而大部分時間都花在了熟悉程式語言,以及debug上面。是不是很得不償失?
Scratch使用模組拖拽,你不再需要關注語言,語法,而更多的是演算法,建模。
如下圖的:氣泡排序
思考用Scratch將邏輯視覺化
其它的程式設計類工具,要實現解釋一個演算法或原理,一般都很晦澀,學生很難理解。
如果能用圖形化介面,程式設計之後,讓它動態的顯示出來,那就生動得多了。
還是上面排序的例子,如果將上面的數字,轉化成圖片,然後圖片根據演算法動態的一輪一輪交換位置,最後排出想要的結果。
這個能讓學生更直觀的掌握排序或其它演算法。
“搜尋演算法”和一些“貪心演算法”,“動態規劃”等都出現在了我的腦海中。
我深深的覺得,Scratch這種形式的視覺化程式設計工具,會讓更多的人進入程式設計行業,程式語言將不再是障礙,也許未來程式設計就是這樣。
想想視覺化的程式碼和資料庫建模工具吧,是不是就是在朝這個方向發展啊。
最後(思考一下):“N.Wirth(沃斯)提出,程式=資料結構+演算法.資料結構指的是資料與資料之間的邏輯關係.演算法指的是解決特定問題的步驟和方法.”
上面提到了資料結構和演算法,並沒有提到程式語言,程式語言只是實現程式的一種工具,
所以“程式設計師,程式設計師,要會資料結構和演算法的才能算得上程式設計師,只會敲程式碼的那就是碼農,不是程式設計師!”
這讓我理解了,為什麼很多公司後來不喜歡招那個“xxx鳥” 機構培訓出來的學員了~~
P.S. 2018年的總結忙得忘了寫了,人就是這樣,過了那個點就不想補了:)
這篇是最近腦海裡的想法,寫於2019年農曆初四~~
再過10多分鐘,迎財神咯~~
補一句 scratch 3.0 加入了 攝像頭互動,樂高機器人控制,以及語音互動功能。這也告訴了我們人機互動,增強現實,軟硬結合將是趨勢~~