""像學 Scratch 一樣學 Python

文 | 某行人

編輯 | EarlGrey

推薦 | 編程派公眾號(ID:codingpy)

對學習的理解必須是緣起性的。這就是說,它必須追溯到知識的緣起。一個人可以學到的東西,他學習的方法,取決於他現有的思維模型。那他又是怎麼獲取這些思維模型的呢?如此說來,所謂“學習的法則”,就是新的知識結構如何從現有的知識結構中生長出來,並在這個過程中構建邏輯性和情感聯繫。-- Seymour Papert《Mindstorms》

編程學習

使用有視覺反饋的項目來學習編程是比較受歡迎的做法。初學者一開始對程序的執行細節和計算機科學或編程語言理論通常興趣不大,強迫他們從知識的細枝末節開始恐怕不是什麼好主意。讓他們 real playing通常是好的起步(Alan Kay的建議)。

我贊同OnlinePythonTutor項目作者Philip Guo教授在為什麼Python對於基礎編程課程中的初學者來說是一門很棒的語言(目前已經由CodeLab Mindstorms翻譯)開頭提到的:

我堅信大多數入門學習者根本不關心計算機科學或編程語言理論,他們只是想讓計算機簡單運行一下他們的代碼,而不必大費周章寫一堆樣板代碼。需要編寫的代碼越少,可能遇到的bug和錯誤就越少; 而遇到的bug和錯誤越少,他們就越不容易在入門之初因為沮喪而放棄編程。

Play

在這個意義上,對於入門Python,Play是個不錯的項目,它宣傳自己是:

使用Python編寫遊戲和圖形項目的最簡單方法

Python Play是初學者入門圖形編程的絕佳選擇。它被設計為具有與MIT Scratch相似的命令和簡易性,並且與Pygame,Arcade或Pygame Zero等項目不同,因為它不需要一堆樣板代碼,且具有易於理解的命令(像易於閱讀的英文)和直觀的API。

Play不僅適合於入門圖形編程,對於入門Python這門語言也是很合適的。

為什麼要使用Python Play?

該項目的目標是在編程的最初幾分鐘內給予那些從未編程過的人積極的直觀反饋。

許多現有的編程語言和圖形庫給新手程序員帶來了不必要的困難:起步困難、語言混亂、程序流程混亂、後向引用(未解釋的概念)。最初的不愉快經歷很可能讓人們遠離編程,我們希望儘可能地防止這種結果。

Python Play的靈感來自麻省理工學院的Scratch,它幫助數百萬兒童和成人入門編程,並幫助他們創建和分享對於個人有意義的計算項目。Python Play的主要設計師專業地使用了一段時間Scratch。但我們發現,對於一些學習者來說,Scratch雖然具有圖形塊和豐富多彩的界面 ,但並不像“真正的編程”。為了幫助那些希望使用主流文本編程語言學習者,同時消除這些語言中圖形編程的困難,我們製作了Python Play。

Python Play的設計原則包括:


  • 沒有樣板代碼 - 每行代碼都應該做一些有意義且易於理解的事情。我們希望學習者不會困惑於“為什麼我們必須包含這行代碼?”。


  • 命令儘可能立即產生視覺效果。例如,如果程序員鍵入new_image命令,則精靈應立即顯示在屏幕上。他們不應該理解初始化精靈和繪製精靈之間的無形區別。

  • 代碼行應該很容易複製和粘貼。


  • 命令值應具有描述性標籤,使其儘可能清楚地表示值的含義。而不是play.new_image('character.png', 50, 100),play.new_image(image='character.png', x=50, y=100)。


  • 儘可能使用普通英語。嘗試使用更容易讓年輕人輸入和拼寫的短名稱。使錯誤儘可能清晰和有建設性。許多命令和名稱都是從Scratch借來的,Scratch的設計師花了數十年的時間與孩子們一起工作並觀察他們對哪些語言有意義。


Python Play也設計了一個自定義的Repl.it IDE(即將推出),它可以顯著降低編程的可用性問題(安裝語言、使用文本編輯器、使用終端、運行程序、顯示哪些命令可用 等等)。

雖然Python和Python Play的學習曲線對於新手依然不夠理想,但我們仍然認為它為新手開始使用圖形編程提供了一種很好的起步方式。

從Scratch過渡到Python

圖形化編程(Scratch)過渡Python,是國內少兒編程教育中,備受關注的一個問題。隨便挑一家國內做少兒編程的公司,看看他們從圖形化過渡到代碼的編程體驗就知道大家做得有多糟糕,而且糟糕得千篇一律。

儘管我不認為 圖形化編程(Scratch)過渡Python這種過渡是必要的,但我也不反對,我的看法在使用Python拓展Scratch的能力做過表述:

事實上,我不認為這種過渡是必須的。當然我也並不反對從圖形界面過渡到代碼。如果這種過渡是必要的,我希望它們是漸進的,而不是割裂的,否則就不叫過渡了。初學者熟悉scratch,也喜歡它,我知道大多數使用scratch的孩子,對它的好感大都勝過文本語言。你不必拋棄scratch,如果你需要一些更強大的功能,使用Python去擴展它,這個過程應該很愉快,你寫了很少的Python代碼,立馬就能應用到你喜歡的Scratch項目上,你看到你逐漸能做更多有趣的事,你感到充滿樂趣,所學的新知識,立馬應用在你感興趣的項目裡。

以上觀點我們通過CodeLab Adapter已經將其踐行:我們打通了Scratch3.0和Python,使其兩者能彼此增強,而不是割裂式的切換或者只是做個語法翻譯。

我們將play也視為 圖形化編程(Scratch)過渡Python這個問題下一個有趣的套索。

官方示例

最後來看一下官方示例,結束本文:

"像學 Scratch 一樣學 Python

文 | 某行人

編輯 | EarlGrey

推薦 | 編程派公眾號(ID:codingpy)

對學習的理解必須是緣起性的。這就是說,它必須追溯到知識的緣起。一個人可以學到的東西,他學習的方法,取決於他現有的思維模型。那他又是怎麼獲取這些思維模型的呢?如此說來,所謂“學習的法則”,就是新的知識結構如何從現有的知識結構中生長出來,並在這個過程中構建邏輯性和情感聯繫。-- Seymour Papert《Mindstorms》

編程學習

使用有視覺反饋的項目來學習編程是比較受歡迎的做法。初學者一開始對程序的執行細節和計算機科學或編程語言理論通常興趣不大,強迫他們從知識的細枝末節開始恐怕不是什麼好主意。讓他們 real playing通常是好的起步(Alan Kay的建議)。

我贊同OnlinePythonTutor項目作者Philip Guo教授在為什麼Python對於基礎編程課程中的初學者來說是一門很棒的語言(目前已經由CodeLab Mindstorms翻譯)開頭提到的:

我堅信大多數入門學習者根本不關心計算機科學或編程語言理論,他們只是想讓計算機簡單運行一下他們的代碼,而不必大費周章寫一堆樣板代碼。需要編寫的代碼越少,可能遇到的bug和錯誤就越少; 而遇到的bug和錯誤越少,他們就越不容易在入門之初因為沮喪而放棄編程。

Play

在這個意義上,對於入門Python,Play是個不錯的項目,它宣傳自己是:

使用Python編寫遊戲和圖形項目的最簡單方法

Python Play是初學者入門圖形編程的絕佳選擇。它被設計為具有與MIT Scratch相似的命令和簡易性,並且與Pygame,Arcade或Pygame Zero等項目不同,因為它不需要一堆樣板代碼,且具有易於理解的命令(像易於閱讀的英文)和直觀的API。

Play不僅適合於入門圖形編程,對於入門Python這門語言也是很合適的。

為什麼要使用Python Play?

該項目的目標是在編程的最初幾分鐘內給予那些從未編程過的人積極的直觀反饋。

許多現有的編程語言和圖形庫給新手程序員帶來了不必要的困難:起步困難、語言混亂、程序流程混亂、後向引用(未解釋的概念)。最初的不愉快經歷很可能讓人們遠離編程,我們希望儘可能地防止這種結果。

Python Play的靈感來自麻省理工學院的Scratch,它幫助數百萬兒童和成人入門編程,並幫助他們創建和分享對於個人有意義的計算項目。Python Play的主要設計師專業地使用了一段時間Scratch。但我們發現,對於一些學習者來說,Scratch雖然具有圖形塊和豐富多彩的界面 ,但並不像“真正的編程”。為了幫助那些希望使用主流文本編程語言學習者,同時消除這些語言中圖形編程的困難,我們製作了Python Play。

Python Play的設計原則包括:


  • 沒有樣板代碼 - 每行代碼都應該做一些有意義且易於理解的事情。我們希望學習者不會困惑於“為什麼我們必須包含這行代碼?”。


  • 命令儘可能立即產生視覺效果。例如,如果程序員鍵入new_image命令,則精靈應立即顯示在屏幕上。他們不應該理解初始化精靈和繪製精靈之間的無形區別。

  • 代碼行應該很容易複製和粘貼。


  • 命令值應具有描述性標籤,使其儘可能清楚地表示值的含義。而不是play.new_image('character.png', 50, 100),play.new_image(image='character.png', x=50, y=100)。


  • 儘可能使用普通英語。嘗試使用更容易讓年輕人輸入和拼寫的短名稱。使錯誤儘可能清晰和有建設性。許多命令和名稱都是從Scratch借來的,Scratch的設計師花了數十年的時間與孩子們一起工作並觀察他們對哪些語言有意義。


Python Play也設計了一個自定義的Repl.it IDE(即將推出),它可以顯著降低編程的可用性問題(安裝語言、使用文本編輯器、使用終端、運行程序、顯示哪些命令可用 等等)。

雖然Python和Python Play的學習曲線對於新手依然不夠理想,但我們仍然認為它為新手開始使用圖形編程提供了一種很好的起步方式。

從Scratch過渡到Python

圖形化編程(Scratch)過渡Python,是國內少兒編程教育中,備受關注的一個問題。隨便挑一家國內做少兒編程的公司,看看他們從圖形化過渡到代碼的編程體驗就知道大家做得有多糟糕,而且糟糕得千篇一律。

儘管我不認為 圖形化編程(Scratch)過渡Python這種過渡是必要的,但我也不反對,我的看法在使用Python拓展Scratch的能力做過表述:

事實上,我不認為這種過渡是必須的。當然我也並不反對從圖形界面過渡到代碼。如果這種過渡是必要的,我希望它們是漸進的,而不是割裂的,否則就不叫過渡了。初學者熟悉scratch,也喜歡它,我知道大多數使用scratch的孩子,對它的好感大都勝過文本語言。你不必拋棄scratch,如果你需要一些更強大的功能,使用Python去擴展它,這個過程應該很愉快,你寫了很少的Python代碼,立馬就能應用到你喜歡的Scratch項目上,你看到你逐漸能做更多有趣的事,你感到充滿樂趣,所學的新知識,立馬應用在你感興趣的項目裡。

以上觀點我們通過CodeLab Adapter已經將其踐行:我們打通了Scratch3.0和Python,使其兩者能彼此增強,而不是割裂式的切換或者只是做個語法翻譯。

我們將play也視為 圖形化編程(Scratch)過渡Python這個問題下一個有趣的套索。

官方示例

最後來看一下官方示例,結束本文:

像學 Scratch 一樣學 Python
  1. # pip install replit-play

  2. import play


  3. cat = play.new_text('=^.^=', font_size=70)


  4. @play.repeat_forever

  5. async def move_cat:

  6. cat.x = play.random_number(-200, 200)

  7. cat.y = play.random_number(-200, 200)

  8. cat.color = play.random_color


  9. cat.show


  10. await play.timer(seconds=0.4)


  11. cat.hide


  12. await play.timer(seconds=0.4)


  13. @cat.when_clicked

  14. def win_function:

  15. cat.show

  16. cat.words = 'You won!'


  17. play.start_program

原文:https://blog.just4fun.site/replit-play.html

回覆下方「關鍵詞」,獲取優質資源

回覆關鍵詞「 pybook03」,立即獲取主頁君與小夥伴一起翻譯的《Think Python 2e》電子版

回覆關鍵詞「pybooks02」,立即獲取 O'Reilly 出版社推出的免費 Python 相關電子書合集

回覆關鍵詞「書單02」,立即獲取主頁君整理的 10 本 Python 入門書的電子版

"

相關推薦

推薦中...