自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

是時(shí)候改變自學(xué)編程方法了,這篇國(guó)外網(wǎng)友的教程被fast.ai創(chuàng)始人點(diǎn)贊

新聞 前端
Jeff提出了一套編程教學(xué)的新思路,他的想法在Haker News上獲得了廣大程序員的贊同。甚至連課程平臺(tái)fast.ai的創(chuàng)始人Jeremy Howard也來(lái)捧場(chǎng):“這與我們平臺(tái)上深度學(xué)習(xí)的教學(xué)方法相似?!?/div>

 本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

還記得你大學(xué)時(shí)的Java、C、Python等語(yǔ)言是怎么學(xué)習(xí)的嗎?讓我們打開(kāi)經(jīng)典教材和網(wǎng)絡(luò)課程看一下,幾乎都是下面的套路:

學(xué)習(xí)變量、數(shù)組、對(duì)象等專(zhuān)業(yè)詞匯;

查看編程示例,依葫蘆畫(huà)瓢寫(xiě)代碼;

重復(fù)以上步驟,直到學(xué)完全部課程。

是时候改变自学编程方法了,这篇国外网友的教程被fast.ai创始人点赞

然而一位程序員Jeff Olsen卻認(rèn)為,這種教學(xué)方式太過(guò)時(shí)了。

是时候改变自学编程方法了,这篇国外网友的教程被fast.ai创始人点赞

編程和計(jì)算機(jī)科學(xué)的關(guān)系,就如同烹飪和化學(xué)的關(guān)系一樣。即使沒(méi)搞清楚化學(xué)變化,一樣可以做出美味的煎蛋。

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

甚至連課程平臺(tái)fast.ai的創(chuàng)始人Jeremy Howard也來(lái)捧場(chǎng):“這與我們平臺(tái)上深度學(xué)習(xí)的教學(xué)方法相似。”

是时候改变自学编程方法了,这篇国外网友的教程被fast.ai创始人点赞

有網(wǎng)友指出,對(duì)于初學(xué)者而已,歸納推理能力的形成非常重要,

這種方法不僅對(duì)老師有意義,對(duì)于自學(xué)編程的人來(lái)說(shuō)也不失為一種更好的學(xué)習(xí)方法。

改變教學(xué)方法

Jeff提出的教學(xué)方法叫做“預(yù)測(cè)至上”。先給學(xué)生一段簡(jiǎn)單的代碼,讓他們預(yù)測(cè)會(huì)發(fā)生什么,然后從運(yùn)行結(jié)果中學(xué)習(xí)語(yǔ)言的一些特性。

為此,Jeff提出了編程教學(xué)的5條標(biāo)準(zhǔn),符合這些標(biāo)準(zhǔn)的教學(xué)課程才能將知識(shí)點(diǎn)傳達(dá)到位:

  1. 還不知道此語(yǔ)法的學(xué)生,能找出這段代碼的作用嗎?
  2. 這段代碼是否與以后可能遇到的代碼合理的相似?
  3. 命名的文字是否有意義,變量是否命名正確?
  4. 問(wèn)題是否允許學(xué)生專(zhuān)注于代碼中最重要的部分?
  5. 代碼示例是否需要某些先驗(yàn)知識(shí),還是能讓所有人都能理解?

具體來(lái)說(shuō),就是不直接提概念,而是先提出一個(gè)難題供學(xué)生解決。

這個(gè)難題包含了當(dāng)天的知識(shí)要點(diǎn),然后要求學(xué)生根據(jù)這個(gè)難題創(chuàng)造一些新的代碼,在解決問(wèn)題的過(guò)程中學(xué)習(xí)專(zhuān)業(yè)術(shù)語(yǔ)。

是时候改变自学编程方法了,这篇国外网友的教程被fast.ai创始人点赞

這不僅是一份給教師的指南,我們?cè)趯W(xué)習(xí)編程時(shí),最好也帶著問(wèn)題去思考、學(xué)習(xí)代碼,而不是機(jī)械地去重復(fù)書(shū)中的示例,這樣才能真正掌握技能。

幾個(gè)例子

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

  1. name = "Tamara"  
  2. print("Hello" + name)  

運(yùn)行以上程序會(huì)發(fā)生什么?

一般,我們憑借直覺(jué)能猜到運(yùn)行結(jié)果中會(huì)出現(xiàn)Tamara,而實(shí)際的運(yùn)行結(jié)果是HelloTamara,中間沒(méi)有空格。

接下來(lái)如何讓程序輸出帶空格的結(jié)果,必然要進(jìn)行一輪調(diào)試。

在這個(gè)過(guò)程中,Jeff沒(méi)有說(shuō)過(guò)字符串、變量等概念,但是在解決這個(gè)問(wèn)題的過(guò)程中,我們已經(jīng)掌握了print函數(shù)、字符串的拼接等一系列用法。

Jeff還舉了幾個(gè)例子,希望能糾正傳統(tǒng)教學(xué)課程里死板的內(nèi)容。

1、條件判斷

傳統(tǒng)教學(xué):

  1. if 1 > 2
  2.     print("1大于2"
  3. else
  4.     print("1不大于2"

在這個(gè)例子中,學(xué)生只能查看代碼,而不能通過(guò)使用代碼學(xué)會(huì)條件判斷。

Jeff建議把代碼改成:

  1. age = 15 
  2. if age >= 18
  3.     print("你可以購(gòu)買(mǎi)R級(jí)電影票"
  4. else
  5.     print(f"再過(guò){18 - age}年你才滿(mǎn)18歲"

終端中將輸出什么內(nèi)容?你的回答應(yīng)該是:再過(guò)3年你才滿(mǎn)18歲。

接著,Jeff丟出了幾個(gè)問(wèn)題:

整段代碼里都沒(méi)有3,你怎么知道會(huì)出現(xiàn)“ 3年”?我們?nèi)绾胃某绦騺?lái)顯示其他語(yǔ)句呢?縮進(jìn)對(duì)我們的程序有什么作用。

通過(guò)這3問(wèn),學(xué)生知道了if-else語(yǔ)句的縮進(jìn)格式,還知道如何用通過(guò)更改條件來(lái)實(shí)現(xiàn)其他的判斷。

2、數(shù)組

傳統(tǒng)教學(xué):

  1. a = [327539
  2. print(a[2])  
  3. # returns 7 

在這個(gè)示例中,為何a[2]的結(jié)果是7,沒(méi)學(xué)過(guò)編程的人可能無(wú)法理解,甚至?xí)a(chǎn)生錯(cuò)誤的理解:哦,原來(lái)是輸出第2個(gè)數(shù)字后面的一個(gè)數(shù)字。

Jeff建議改成:

  1. favorite_foods = ["壽司""玉米粽子""披薩""烤雞肉"
  2. print(favorite_foods[2]) 

這段程序的輸出結(jié)果會(huì)是什么?我們?nèi)绾未蛴〕龅谝环N食物、最后一種食物?如果把最后一句改成favorite_foods[10]會(huì)發(fā)生什么?

通過(guò)這個(gè)簡(jiǎn)單的示例,學(xué)生可以了解數(shù)組、索引已經(jīng)索引超出范圍的錯(cuò)誤。

3、對(duì)象

傳統(tǒng)教學(xué)

  1. Class Dog: 
  2.     def __init__(self): 
  3.         pass 
  4.     def speak(self): 
  5.         print("woof!) 
  6.  
  7. Fido = Dog() 
  8. Fido.speak() 

這段代碼雖然用小狗做例子,看似生動(dòng)有趣,其實(shí)存在著一些問(wèn)題:

(1)狗并不存在于網(wǎng)絡(luò)空間中。
(2)使用9行代碼來(lái)創(chuàng)建和調(diào)用函數(shù),實(shí)際可以更短。
(3)這種方法創(chuàng)建的所有狗都只有相同的功能,那為何還要?jiǎng)?chuàng)建一個(gè)類(lèi)呢?

Jeff建議改成:

  1. user1 = User("Ty""Tdog@aol.com"16"Pa$$word"
  2. user2 = User("Sarai""SMendes@hotmail.com"15"Kangaroo!"
  3. user3 = User("Osu""Osu22@gmail.com"12"12345abcde"
  4. print(user2.age) 

提問(wèn)環(huán)節(jié):第一個(gè)用戶(hù)的電子郵件是什么?哪個(gè)用戶(hù)的密碼最弱?最后一行將輸出什么?

學(xué)生通過(guò)這種方式先學(xué)習(xí)了創(chuàng)建對(duì)象的方法,至于代碼中出現(xiàn)的User(),接下來(lái)就可以很自然地教他們?nèi)绾蝿?chuàng)建類(lèi)了。

最后附上Jeff博客的鏈接,希望他的方法對(duì)你學(xué)習(xí)編程有所幫助。 

 

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2020-03-03 11:00:11

代碼開(kāi)發(fā)工具

2020-03-16 10:34:30

開(kāi)源技術(shù) 趨勢(shì)

2012-04-10 17:40:49

Instagram創(chuàng)業(yè)

2025-04-09 09:23:00

2013-08-05 10:57:21

編程學(xué)習(xí)

2023-12-01 14:50:57

AI破產(chǎn)

2020-02-03 15:46:26

編程語(yǔ)言PythonJava

2010-03-15 14:36:07

Python編程語(yǔ)言

2019-08-26 10:53:38

Oracle 甲骨文Larry Ellis

2015-12-03 14:09:28

創(chuàng)始人成功創(chuàng)業(yè)

2015-05-19 14:34:17

程序員編程語(yǔ)言

2010-05-04 16:22:45

Unix系統(tǒng)

2024-06-25 10:41:03

2023-11-12 17:17:49

2013-03-06 14:33:57

2025-03-13 00:03:35

Rust函數(shù)Python

2024-05-17 17:30:00

訓(xùn)練數(shù)據(jù)

2013-04-08 10:38:00

2023-03-07 18:37:20

ChatGPTAI

2023-10-04 09:46:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)