去年接觸到了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 加入了 攝像頭互動,樂高機器人控制,以及語音互動功能。這也告訴了我們人機交互,增強現實,軟硬結合將是趨勢~~