去年接觸到了Scratch這個編程工具,它是一種簡易圖形化編程工具,這個軟件的開發團隊來自於麻省理工大學稱爲「終身幼兒園團隊」(Lifelong Kindergarten Group)。java
網址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 加入了 攝像頭互動,樂高機器人控制,以及語音互動功能。這也告訴了咱們人機交互,加強現實,軟硬結合將是趨勢~~