摘要: 原標(biāo)題:孩子學(xué)編程 編程語(yǔ)言不是重點(diǎn)編程中的概念才是 我最常被老師和家長(zhǎng)所問(wèn)到的一些問(wèn)題是:我應(yīng)該選擇哪一種編程語(yǔ)言來(lái)教孩子編程呢?堅(jiān)持選擇
原標(biāo)題:孩子學(xué)編程 編程語(yǔ)言不是重點(diǎn)編程中的概念才是
我最常被老師和家長(zhǎng)所問(wèn)到的一些問(wèn)題是:我應(yīng)該選擇哪一種編程語(yǔ)言來(lái)教孩子編程呢?堅(jiān)持選擇像Scratch這樣的圖形化編程語(yǔ)言作為開(kāi)端很重要嗎?應(yīng)該在什么年齡轉(zhuǎn)換到學(xué)習(xí)代碼編程呢?還有我應(yīng)該如何在Python,Java,還有JavaScript之間選擇呢?
經(jīng)過(guò)將近10年,對(duì)成百上千個(gè)學(xué)生教授編程,我經(jīng)常出席各種會(huì)議,或?yàn)閯偨佑|計(jì)算機(jī)科學(xué)的老師舉辦講習(xí)班。許多老師都是第一次嘗試在他們學(xué)校里建立計(jì)算機(jī)科學(xué)課程,所以他們對(duì)于選擇編程語(yǔ)言的謹(jǐn)慎,是可以理解的。除了試圖找出最適合他們學(xué)生的東西外,教師講授的內(nèi)容還必須在授課舒適度,以及校園、學(xué)生、家長(zhǎng)四者之間取得平衡。
那“合適”的編程語(yǔ)言,真的存在嗎?
編程語(yǔ)言不是重點(diǎn),編程中的概念才是!
就像你猜的那樣,答案自然是否定的。編程語(yǔ)言不是重點(diǎn),但教導(dǎo)孩子如何利用編程去解決問(wèn)題才是重點(diǎn)。理解如何一步一步地建立算法,從而搞定作業(yè),再想出最佳的思路來(lái)編寫(xiě)代碼,這可能才是最困難的部分。
學(xué)習(xí)相當(dāng)少量的關(guān)鍵詞和特定編程語(yǔ)言的簡(jiǎn)單語(yǔ)法很簡(jiǎn)單——比學(xué)習(xí)一門(mén)真正的口語(yǔ)語(yǔ)言要容易得多!相比而言,為了獨(dú)立完成編程,必須了解編程中變量、列表、條件、循環(huán),還有函數(shù)中的基本概念,然后才能知道何時(shí),何地,如何使用它們將算法轉(zhuǎn)換為代碼。
一個(gè)學(xué)生一旦掌握了以上這些概念,并且以一種語(yǔ)言編程成功,這時(shí)再用另一種語(yǔ)言來(lái)編程就不難了。轉(zhuǎn)換編程語(yǔ)言并非打個(gè)響指一樣容易,但確實(shí)可以做到。
話說(shuō)回來(lái),掌握的第一種編程語(yǔ)言會(huì)改變將來(lái)思考和編程的方式嗎?學(xué)習(xí)當(dāng)下行業(yè)里最流行的語(yǔ)言重要嗎?
2018年美國(guó)熱門(mén)編程語(yǔ)言 0【圖源: YoungWonks】
編程語(yǔ)言變化不定,你終將適應(yīng)。
編程語(yǔ)言的流行度會(huì)變,沒(méi)有人敢保證我們今天教會(huì)孩子的東西,在他們進(jìn)入職場(chǎng)的時(shí)候還適用。我學(xué)習(xí)的第一門(mén)編程語(yǔ)言是Pascal(對(duì),你可能得百度一下)。
多年以來(lái),我使用過(guò)不同的設(shè)備來(lái)學(xué)習(xí)不同的語(yǔ)言——其中不乏一些晦澀難懂的。在作為教育工作者的這10年里,我學(xué)習(xí)了Logo,Scratch,Processing,JavaScript,Arduino和Python的一大堆知識(shí),好讓我能在課堂上大展拳腳。
6年前,我建議孩子們從學(xué)習(xí)Logo開(kāi)始,一門(mén)最早應(yīng)用于計(jì)算機(jī)科學(xué)教育當(dāng)中的編程語(yǔ)言,而我相信,它就算放在今天,也依然是一個(gè)頗具影響力的選項(xiàng)。劃重點(diǎn):如果你能教會(huì)孩子們基本的編程概念,他們也能在一門(mén)語(yǔ)言上花上足夠的時(shí)間,他們理論上就已具備了日后轉(zhuǎn)換語(yǔ)言的基本條件。
這還有一條經(jīng)常提到的問(wèn)題:我們總是應(yīng)該優(yōu)先教會(huì)孩子圖形化編程,而非代碼編程嗎?
圖形還是代碼?
差不多10年前,在一節(jié)六年級(jí)數(shù)字設(shè)計(jì)課上,我開(kāi)始使用Scratch,一門(mén)也許是最流行也是對(duì)孩子最友好的圖形化編程語(yǔ)言。我隨后將這門(mén)編程語(yǔ)言拓展到所有年級(jí)。我對(duì)不久前剛發(fā)布的Scratch 3.0中新功能感到興奮——尤其是文字轉(zhuǎn)語(yǔ)音和文字翻譯這兩個(gè)拓展功能。
圖形化編程的出現(xiàn),極大減輕了青少年對(duì)編程的挫敗感,諸如漏掉一個(gè)逗號(hào)或者忘了把右括號(hào)補(bǔ)上之類(lèi),反而讓他們留有更多時(shí)間來(lái)理解當(dāng)中的概念。另外,Scratch對(duì)于創(chuàng)新的鼓勵(lì)以及在圖像創(chuàng)作、聲音編輯、分享和項(xiàng)目混制方面的功能優(yōu)化,讓它在成為各年齡段孩子 編程語(yǔ)言上變得理所當(dāng)然。較之被稱(chēng)為“編程語(yǔ)言”,它更希望被定位為一個(gè)繪圖工具,一個(gè)動(dòng)畫(huà)制作工具,或是一個(gè)故事與游戲創(chuàng)作工具,這些元素綜合起來(lái),讓Scratch變得更友好而不唬人。
我發(fā)現(xiàn)在使用Scratch幾年后,學(xué)生更愿意去嘗試代碼編程,因?yàn)樗麄冇X(jué)得那意味著長(zhǎng)大,只有“真正的編程”才會(huì)被行業(yè)采納。我還見(jiàn)證過(guò)語(yǔ)言的轉(zhuǎn)換中,有時(shí)只需要給孩子們回顧一下例如變量和循環(huán)的概念。
我的中學(xué)學(xué)生們?cè)敢鉃閷W(xué)習(xí)代碼編程付出額外的努力,通常他們會(huì)放慢速度,以保證在處理Python,JavaScript,Arduino和Processing挑戰(zhàn)時(shí)不犯下拼寫(xiě)和語(yǔ)法錯(cuò)誤。不過(guò),學(xué)生一旦能夠通過(guò)剛開(kāi)始時(shí)“我得看著點(diǎn)有沒(méi)有打錯(cuò)字”階段,他們常會(huì)愛(ài)上代碼編程的靈活性和可塑性,尤其是當(dāng)他們發(fā)現(xiàn)復(fù)制、粘貼,協(xié)作和修改在代碼編程中有多方便時(shí),偶會(huì)發(fā)出“也沒(méi)想象中那么糟嘛”類(lèi)似的感慨。
每年夏天,我在Foothill College KCI計(jì)算機(jī)科學(xué)合作課程上,都會(huì)分別用Scratch和Python兩種語(yǔ)言,為教師展示同一個(gè)項(xiàng)目。他們愛(ài)看把兩種語(yǔ)言放一起比較。我們甚至?xí)詡未a,或者叫流程圖作為開(kāi)始,把完整算法在開(kāi)始編程前先寫(xiě)下來(lái)。
這是一個(gè)檢查密碼的迷你項(xiàng)目,它在流程圖,Scratch,和Python中,分別長(zhǎng)這樣:
密碼檢查器流程圖
用Scratch展示的密碼檢查器
用Python展示的密碼檢查器
我課堂中的老師和學(xué)生在沒(méi)接觸過(guò)圖形化編程的前提下,都能輕松學(xué)習(xí)Python,這說(shuō)明好項(xiàng)目在前,從代碼編程開(kāi)始學(xué)習(xí)同樣行得通。
是什么讓一門(mén)編程語(yǔ)言,變成適合孩子學(xué)習(xí)的編程語(yǔ)言?選擇一門(mén)語(yǔ)言的標(biāo)準(zhǔn)是什么?
雖然知道教授編程,更多是關(guān)于它的概念,你也知道不需要再為作出完美的第一次選擇而慌亂,但問(wèn)題依然沒(méi)有得到解答:什么因素讓一門(mén)編程語(yǔ)言成為孩子學(xué)習(xí)編程的好選擇呢?通常由以下幾點(diǎn)來(lái)衡量:速度,應(yīng)用,可用的庫(kù),行業(yè)支持。下面我再來(lái)說(shuō)說(shuō)我認(rèn)為重要的幾個(gè)標(biāo)準(zhǔn)。
它有強(qiáng)大的教育者社區(qū)嗎?
我頻繁提到Scratch和Python的其中一個(gè)原因是他們都有附屬的線上教育者社區(qū)。他們擁有如此龐大社區(qū),背后的原因是他們總是以免費(fèi)的形式,開(kāi)放的姿態(tài),接納來(lái)自世界每個(gè)角落的用戶(hù)。擁有龐大的社區(qū),意味著你能找到更多資源,諸如項(xiàng)目、教案、教程、視頻和書(shū)籍一系列為課堂而設(shè)的材料。
學(xué)起來(lái)好上手嗎?
有許多代碼式編程語(yǔ)言可供選擇,一些在當(dāng)今的科技行業(yè)中更吃香,一些有特別的功能方便他們創(chuàng)造特定的項(xiàng)目。雖然說(shuō)許多高中生最終不得不為通過(guò)計(jì)算機(jī)科學(xué)進(jìn)階入學(xué)考試(AP Computer Science A)而學(xué)習(xí)Java,但這一定不是最簡(jiǎn)單的語(yǔ)言。Python目前看起來(lái)更簡(jiǎn)單,并且憑借著它簡(jiǎn)潔直白的邏輯,在教育界中越來(lái)越受歡迎。在我將Python用作計(jì)算機(jī)科學(xué)選修課語(yǔ)言3年后,我依舊會(huì)被它完成工作的效率,以及中學(xué)生用它編寫(xiě)代碼的速度所震驚。受到Python在教育孩子編程方面的啟發(fā),我花時(shí)間寫(xiě)了一本關(guān)于它的書(shū)。
它背后的設(shè)計(jì)理念是什么?它是為這個(gè)年齡段的用戶(hù)所設(shè)計(jì)的嗎?
為用戶(hù)設(shè)計(jì)適合其年齡的工具很重要,編程語(yǔ)言可以根據(jù)它不同年齡段的用戶(hù)展示或者隱藏相應(yīng)的功能。Scratch,扎根在培養(yǎng)孩子的創(chuàng)造力表達(dá)上,刻意將一些功能性代碼以封裝的形式呈現(xiàn)出來(lái)。ScratchJr.是為還在識(shí)字的孩子而設(shè)計(jì)的,所以它沒(méi)有變量和條件這些對(duì)這個(gè)年齡段孩子來(lái)說(shuō)太難理解的功能。Python為不同類(lèi)型的項(xiàng)目提供擴(kuò)展支持,但這些額外的擴(kuò)展都需要你親手把它們添加進(jìn)來(lái),這樣它們就不會(huì)在你不需要的時(shí)候出來(lái)干擾視線。為更大的學(xué)生所用語(yǔ)言一定要含括對(duì)debugging的支持,基本操作了。如果講授“面向?qū)ο?rdquo;編程是重點(diǎn)環(huán)節(jié),那使用Java教學(xué)就是一個(gè)好選擇。
容易安裝嗎?能跨平臺(tái)運(yùn)行嗎?
這些都是要記在心里的東西,尤其當(dāng)學(xué)生需要回家編程時(shí)顯得更為重要。一些語(yǔ)言只能在特定環(huán)境中工作,譬如Apple的Swift編程語(yǔ)言。如果學(xué)生在Chromebook上編程,那么有一個(gè)穩(wěn)定的,基于瀏覽器的工具就更加關(guān)鍵。需要考慮的另一個(gè)問(wèn)題:這個(gè)語(yǔ)言能讓學(xué)生回到家中也免費(fèi)使用嗎?還是有一些隱藏的擴(kuò)展需要付費(fèi)方才解鎖?
能否輕松地在社區(qū)中分享項(xiàng)目?
Scratch背后其中一個(gè)基本元素就是社區(qū),讓孩子們互相分享,相互學(xué)習(xí)。這個(gè)社區(qū)對(duì)教師們來(lái)說(shuō)也同樣重要。不過(guò),分享也要有計(jì)劃:何時(shí)分享,允許學(xué)生分享多少內(nèi)容,評(píng)論和修改他人的作品等。也許把JavaScript作為第一門(mén)代碼式編程語(yǔ)言進(jìn)行學(xué)習(xí)會(huì)讓你大皺眉頭,雖在易用性和上手難度上都不如Python,但它的優(yōu)勢(shì)在于它是屬于網(wǎng)絡(luò)的腳本語(yǔ)言,只要把項(xiàng)目發(fā)布到校園網(wǎng)服務(wù)器上就能展示給大家看,方便又快捷。
撐起Scratch的一個(gè)重要基本元素——社區(qū)
選擇編程語(yǔ)言時(shí)要考慮的方面還有很多。這個(gè)項(xiàng)目能用到什么語(yǔ)言?不同的語(yǔ)言可能支持不同類(lèi)型的項(xiàng)目。舉例來(lái)說(shuō),Processing和P5.js讓制作動(dòng)畫(huà)變得更輕松;Python把復(fù)雜的數(shù)據(jù)分析甚至是機(jī)器學(xué)習(xí)變?yōu)榭赡?。老師們也可能更傾向一個(gè)強(qiáng)大的課堂工具,便于管理作業(yè)和批改成績(jī),尤其對(duì)小組項(xiàng)目而言。
一個(gè)最經(jīng)常被問(wèn)到的問(wèn)題是:“這門(mén)編程語(yǔ)言現(xiàn)在流行嗎?”流行度對(duì)于學(xué)生選擇學(xué)習(xí)一門(mén)編程語(yǔ)言來(lái)說(shuō)有很深影響,也不難理解家長(zhǎng)希望孩子能掌握對(duì)未來(lái)職業(yè)有利的技能那種心情。無(wú)論如何,教授良好的編程習(xí)慣勝過(guò)教授流行編程語(yǔ)言。
雖然我們可以強(qiáng)調(diào)要找到“完美”的編程語(yǔ)言,但我們不要忘記,最終的目標(biāo)是讓學(xué)生探索基本的編程概念。他們或許在你的課后就不再插手編程,你教的語(yǔ)言在他們長(zhǎng)大后也可能變得過(guò)時(shí),重要的是,教授編程將會(huì)幫助學(xué)生理解計(jì)算機(jī)是如何解決問(wèn)題,收獲批判性思維技能,并希望他們有朝一日洞察到,用代碼創(chuàng)造東西的樂(lè)趣。
原標(biāo)題:武大雷軍班100%具備保研資格 配備最優(yōu)師資力量,實(shí)行小班教學(xué) 據(jù)武漢
快資訊2024-04-11 17:05:21
原標(biāo)題: 官方:一批省會(huì)高校,落戶(hù)縣城! 近日,廬江縣與安徽新聞出版職業(yè)
快資訊2024-04-10 19:24:31
原標(biāo)題:東莞高中引進(jìn)香港高中教學(xué)體系,學(xué)子可參加香港高考 東莞市海逸外
快資訊2024-04-10 19:18:36
原標(biāo)題:盤(pán)點(diǎn)!OSSD課程申請(qǐng)全球TOP大學(xué)有哪些優(yōu)勢(shì)? OSSD全稱(chēng)為Ontario Secondary
快資訊2024-04-08 18:13:22
原標(biāo)題:北京大學(xué),公布重要院系排名! 本科課堂教學(xué)質(zhì)量不僅關(guān)乎學(xué)生個(gè)體的
快資訊2024-04-07 21:05:17
原標(biāo)題:親歷南昌雷暴大風(fēng)天氣的大學(xué)生:風(fēng)雨突然破窗灌入教室 4月2日17時(shí)許
快資訊2024-04-04 19:31:30
原標(biāo)題:一系列新政實(shí)施 澳洲學(xué)簽發(fā)放量暴跌35% 澳大利亞政府本周宣布,由于
快資訊2024-04-01 22:57:11
原標(biāo)題:救命打人可觸發(fā)警報(bào)!多地學(xué)校廁所安裝防欺凌裝置 校園欺凌現(xiàn)象備
快資訊2024-03-31 20:02:29