當前位置:熱點 > 正文

巴伦西亚VS韦斯卡:自學網站編程?這篇國外網友的教程被fast.ai創始人點贊

2019-11-29 15:46:06  來源:量子位

韦斯卡距离马德里 www.mdkice.com.cn 還記得你大學時的Java、C、Python等語言是怎么學習的嗎?讓我們打開經典教材和網絡課程看一下,幾乎都是下面的套路:

學習變量、數組、對象等專業詞匯;

查看編程示例,依葫蘆畫瓢寫代碼;

重復以上步驟,直到學完全部課程。

然而一位程序員Jeff Olsen卻認為,這種教學方式太過時了。

編程和計算機科學的關系,就如同烹飪和化學的關系一樣。即使沒搞清楚化學變化,一樣可以做出美味的煎蛋。

為此,他提出了一套編程教學的新思路,Jeff的想法在Haker News上獲得了廣大程序員的贊同。

甚至連課程平臺fast.ai的創始人Jeremy Howard也來捧?。?ldquo;這與我們平臺上深度學習的教學方法相似。”

有網友指出,對于初學者而已,歸納推理能力的形成非常重要,

這種方法不僅對老師有意義,對于自學編程的人來說也不失為一種更好的學習方法。

改變教學方法

Jeff提出的教學方法叫做“預測至上”。先給學生一段簡單的代碼,讓他們預測會發生什么,然后從運行結果中學習語言的一些特性。

為此,Jeff提出了編程教學的5條標準,符合這些標準的教學課程才能將知識點傳達到位:

還不知道此語法的學生,能找出這段代碼的作用嗎?

這段代碼是否與以后可能遇到的代碼合理的相似?

命名的文字是否有意義,變量是否命名正確?

問題是否允許學生專注于代碼中最重要的部分?

代碼示例是否需要某些先驗知識,還是能讓所有人都能理解?

具體來說,就是不直接提概念,而是先提出一個難題供學生解決。

這個難題包含了當天的知識要點,然后要求學生根據這個難題創造一些新的代碼,在解決問題的過程中學習專業術語。

這不僅是一份給教師的指南,我們在學習編程時,最好也帶著問題去思考、學習代碼,而不是機械地去重復書中的示例,這樣才能真正掌握技能。

幾個例子

Jeff首先展示了編程最基本的Hello World程序,他的方法與傳統方法略有不同。我們先看這段代碼:

name="Tamara"

print("Hello"+name)

運行以上程序會發生什么?

一般,我們憑借直覺能猜到運行結果中會出現Tamara,而實際的運行結果是HelloTamara,中間沒有空格。

接下來如何讓程序輸出帶空格的結果,必然要進行一輪調試。

在這個過程中,Jeff沒有說過字符串、變量等概念,但是在解決這個問題的過程中,我們已經掌握了print函數、字符串的拼接等一系列用法。

Jeff還舉了幾個例子,希望能糾正傳統教學課程里死板的內容。

1、條件判斷

傳統教學:

if1>2:

print("1大于2")

else:

print("1不大于2")

在這個例子中,學生只能查看代碼,而不能通過使用代碼學會條件判斷。

Jeff建議把代碼改成:

age=15

ifage>=18:

print("你可以購買R級電影票")

else:

print(f"再過{18-age}年你才滿18歲")

終端中將輸出什么內容?你的回答應該是:再過3年你才滿18歲。

接著,Jeff丟出了幾個問題:

整段代碼里都沒有3,你怎么知道會出現“ 3年”?我們如何更改程序來顯示其他語句呢?縮進對我們的程序有什么作用。

通過這3問,學生知道了if-else語句的縮進格式,還知道如何用通過更改條件來實現其他的判斷。

2、數組

傳統教學:

a=[3,2,7,5,3,9]

print(a[2])

#returns7

在這個示例中,為何a[2]的結果是7,沒學過編程的人可能無法理解,甚至會產生錯誤的理解:哦,原來是輸出第2個數字后面的一個數字。

Jeff建議改成:

favorite_foods=["壽司","玉米粽子","披薩","烤雞肉"]

print(favorite_foods[2])

這段程序的輸出結果會是什么?我們如何打印出第一種食物、最后一種食物?如果把最后一句改成favorite_foods[10]會發生什么?

通過這個簡單的示例,學生可以了解數組、索引已經索引超出范圍的錯誤。

3、對象

傳統教學

ClassDog:

def__init__(self):

pass

defspeak(self):

print("woof!)

Fido=Dog()

Fido.speak()

這段代碼雖然用小狗做例子,看似生動有趣,其實存在著一些問題:

1、狗并不存在于網絡空間中。

2、使用9行代碼來創建和調用函數,實際可以更短。

3、這種方法創建的所有狗都只有相同的功能,那為何還要創建一個類呢?

Jeff建議改成:

user1=User("Ty","[email protected]",16,"Pa$$word")

user2=User("Sarai","[email protected]",15,"Kangaroo!")

user3=User("Osu","[email protected]",12,"12345abcde")

print(user2.age)

提問環節:第一個用戶的電子郵件是什么?哪個用戶的密碼最弱?最后一行將輸出什么?

學生通過這種方式先學習了創建對象的方法,至于代碼中出現的User(),接下來就可以很自然地教他們如何創建類了。

最后附上Jeff博客的鏈接,希望他的方法對你學習編程有所幫助。

推薦閱讀

工信部組織了503人做監督攜號轉網

歷時8個月,累計投資超30億元,涉及1800多項系統建設改造,全國攜號轉網實時交互聯動系統正式建成。從2010年11月在天津、海南開始試點到今 【詳細】

印度宣布擬對網約車設傭金上限

北京時間11月28日下午消息,據路透社報道,印度計劃針對打車應用如Uber和本土的Ola收取的乘車費用劃定傭金上限,即不超過總乘車費用的10%。 【詳細】

iPhone 11銷售策略失敗 蘋果會推出革命性的新iPhone?

盡管蘋果公司再一次沒有公布iPhone的銷售數據,但是分析人士報告說,第三季度的銷售額下降了10%,這表明iPhone 11的銷售策略失敗了。那么 【詳細】

“黑五”席卷全球 有人歡喜有人憂愁

[ 在美國,亞馬遜正面臨工會組織的壓力。工人們對于商家的銷售額不以為然,反倒認為越多的銷售額意味著會有更多意外傷害情況的出現。據報 【詳細】

常潔:2025年全球5G用戶將達16億

2019新浪金麒麟高峰論壇于11月28日在北京舉行,主題為新征程 新使命。GSMA大中華區創新與生態合作總經理常潔發言稱,2020年到2022年,中國 【詳細】



科技新聞網版權
2019年最赚钱的基金 9u游戏李逵劈鱼 马云未来最赚钱的十大行业 网上口红试色博主怎么赚钱 fg捕鸟达人 发音频赚钱 千聊 赚钱 旺旺彩票安卓 赚钱app钱大师 外国赚钱的生意 麻将开挂软件多少钱 给焊管厂供什么货能赚钱 男人做什么生意最赚钱 腾讯欢乐麻将好友在线 努力赚钱的猫咪图片 网上兼职有手机就能赚钱是真的吗