李琳,毛嘉誠,胡立志,張翰廷,李聰,徐攀
(武漢科技大學(xué)計算機學(xué)院,武漢430081)
現(xiàn)在我們所處的時代是一個日新月異、瞬息萬變的時代,新鮮事物不斷涌現(xiàn),給我們帶來便利生活方式的新興技術(shù)[1],例如電子支付、共享單車、大數(shù)據(jù)、AI人工智能、機器人、物聯(lián)網(wǎng)、區(qū)塊鏈等,其實以上各種應(yīng)用都是與編程密不可分的。
2017年5月,AlphaGo在“圍棋人機大戰(zhàn)”中戰(zhàn)勝人類頂尖選手柯潔,引發(fā)人們對AI人工智能和機器學(xué)習(xí)的極大關(guān)注,還有在《最強大腦》中百度機器人“小度”也在比賽中戰(zhàn)勝了人類頂尖的腦力選手,人們在驚嘆的同時也引起了極大的焦慮,未來人類的工作是否會被機器取而代之呢?其實我們真的不需要如此焦慮,因為機器是按照人類設(shè)定的程序來運行的。換句話說,就是我們對它發(fā)出了怎樣的命令,它就會去完成怎樣的任務(wù)。正如人和人之間的溝通需要語言一樣,在人與機器之間進行溝通的語言就是編程語言,我們用機器能聽懂的話告訴它該去做什么,它就一條條執(zhí)行我們的命令。
那既然機器如此“聽話”,它是如何戰(zhàn)勝人類的呢?這得益于計算機的兩大優(yōu)勢:①海量存儲:計算機中可以存下大量的數(shù)據(jù)和信息;②高速計算:非常復(fù)雜的計算,可以在一瞬間得到結(jié)果。以AlphaGo為例,它的主要工作原理是深度學(xué)習(xí)(Deep Learning),簡單通俗的說,就是在機器中存儲著數(shù)百萬人類圍棋高手對弈的棋譜,機器通過強大快速的計算能力,能夠預(yù)測每一個合法下一步的最佳概率。例如走這一步棋獲勝的可能性通過計算得到的結(jié)果是72%,走另一步棋獲勝的概率是85%,那機器當(dāng)然會選擇獲勝概率最高的方式,一步步走下去從而最終獲得了勝利。
在海量存儲和迅速計算這兩方面,人類無法與機器相比擬,那我們的優(yōu)勢又是什么呢?人類的優(yōu)勢是創(chuàng)造力!以后,危險的和重復(fù)勞動的工作都可以讓機器去做,離我們生活近一點的如很多家里都在用的掃地機器人,它按照編好的程序完成掃地或拖地的任務(wù),不辭勞苦,任勞任怨;機器還可以代替戰(zhàn)地記者去報道新聞,可以代替“城市蜘蛛俠”來清潔高樓大廈。所以真正的人工智能不僅不會抹殺工作,而是會創(chuàng)造更多的工作,更多我們無法想象的工作,研究表明現(xiàn)在的小學(xué)生有65%長大后會從事,現(xiàn)在還未誕生的職業(yè)。那如何提高孩子在未來人工智能時代的競爭力呢?孩子現(xiàn)在要學(xué)的,應(yīng)該是面向未來的思維方式和技能。要更好地理解機器的思維工作模式,未來與機器共處工作,學(xué)習(xí)編程是必然的選擇。人人都需要培養(yǎng)編程思維。蘋果創(chuàng)始人喬布斯說:人人都應(yīng)該學(xué)習(xí)一門計算機語言,因為它將教會你如何思考。
放眼世界,很多發(fā)達國家都在積極推動少兒編程教育,美國少兒編程普及率已達40%以上。美國的很多孩子在六七歲時就開始接觸編程課程,前總統(tǒng)奧巴馬發(fā)起了“編程一小時”的運動,旨在讓全美小學(xué)生開始學(xué)習(xí)編程。編寫程序已經(jīng)差不多形同日常生活技能,要更好地理解機器的思維工作模式,未來與機器共處工作,學(xué)習(xí)編程是必然的選擇。但我國編程方面的人才遠不能滿足市場需要,對青少年這一人群的編程教育幾乎為零?!吧倌陱妱t國強”,青少年是推動未來祖國發(fā)展的主力軍,當(dāng)下也沒有推出一套適合青少年學(xué)習(xí)的編程教育體系,可見必須及時設(shè)計出一套適合青少年的編程教育體系。
正如國務(wù)院的新規(guī)劃所言:我國缺少重大原創(chuàng)成果,在基礎(chǔ)理論、核心算法以及關(guān)鍵設(shè)備、高端芯片、重大產(chǎn)品與系統(tǒng)、基礎(chǔ)材料、元器件、軟件與接口等方面差距較大。因此我們必須狠抓青少年的編程思維培養(yǎng),填補青少年教育的空白,響應(yīng)國家戰(zhàn)略,為國家提供急需的人才。
對于編程,一些家長有疑問:“編程不是程序員的工作嗎?小孩需要這么早接觸編程嗎?”事實上,每個人都可以學(xué)習(xí)編程,但不是意味著每個人都要去當(dāng)程序員[3],學(xué)習(xí)編程最大的好處是,可以對人的思維完整性和邏輯性進行訓(xùn)練,可以培養(yǎng)新的看問題和處理問題的方式。
大學(xué)階段計算機程序設(shè)計課程體系已比較完備。然而目前小學(xué),初中,高中的信息技術(shù)課程大多停留在簡單的多媒體軟件應(yīng)用層面[4],對于編程學(xué)習(xí)基本為零,加之高考升學(xué)的壓力,甚至有部分省市的信息技術(shù)課被其他課程占用,這些嚴(yán)重影響了青少年階段學(xué)生編程思維建立[5]。進入大學(xué)后突然接觸程序設(shè)計課程,由于沒有基本的計算思維和編程思維的能力[6],造成大量學(xué)生編程課程學(xué)習(xí)困難,進而失去了學(xué)習(xí)興趣,最終導(dǎo)致學(xué)習(xí)效果不理想。
反觀培養(yǎng)邏輯思維的數(shù)學(xué)教育,小學(xué)、初中、高中已經(jīng)建立起一套科學(xué)的循序漸進的教育體系[7],因此,在大學(xué)學(xué)習(xí)高等數(shù)學(xué)、線性代數(shù)、概率統(tǒng)計等課程時,學(xué)生由于有較好的數(shù)學(xué)基礎(chǔ),且具備基本的邏輯思維能力,能較快地進入學(xué)習(xí)狀態(tài)。
編程學(xué)習(xí)也要從娃娃抓起。目前在政策層面上存在的主要問題就是,教育主管部門對于青少年計算機教育和編程教育不夠重視,當(dāng)然隨著社會的發(fā)展,今后社會對于人們編程能力的要求變化,這一問題必將逐步改善。而在技術(shù)層面上,首當(dāng)其沖的問題就是缺乏一套適合青少年的編程教育體系。
程序員使用的Java、C++等高級語言所寫的代碼是非常復(fù)雜的,并不適合孩子來學(xué)習(xí)。對于孩子來講,學(xué)習(xí)編程的目的是培養(yǎng)編程思維、邏輯思維能力。美國麻省理工學(xué)院MIT研發(fā)的專門為青少年設(shè)計的編程語言Scratch,讓孩子學(xué)編程就像搭積木一樣簡單。麻省理工學(xué)院在推出Scratch時的指導(dǎo)思想是“Create and share your own interactive stories,games,music and art”,意思是“創(chuàng)造和分享你自己的交互故事、游戲、音樂和藝術(shù)”。其中“create創(chuàng)造”是放在第一位的,可見學(xué)習(xí)Scratch的目的是培養(yǎng)孩子的創(chuàng)造力和動手實踐能力。更關(guān)鍵的是,編程給孩子提供了另一種看世界的方式,提供了新的可能性,從某種角度上來說,編程語言是更大程度上的國際語言,就像通關(guān)密碼,可以自由地解鎖互聯(lián)網(wǎng)信息社會。
對于孩子來說Scratch的操作十分簡單,選定背景,添加角色,使用鼠標(biāo)拖拽的方式,把需要的語句塊拖到腳本區(qū),然后設(shè)定參數(shù),角色就可以活動起來了。每個不同的顏色塊代表了不同類型的程序語句類別,這樣通過顏色可以非常直觀地進行判斷,語句之間的連接就像搭積木一樣容易操作。
編程和數(shù)學(xué)也是密不可分的,學(xué)習(xí)的過程中還會涉及到很多數(shù)學(xué)的知識和概念,例如笛卡爾坐標(biāo)、位置的移動、旋轉(zhuǎn)的角度,等等,這些數(shù)學(xué)知識不再只是書本上的文字,而變成了可以制作自己動畫的基礎(chǔ),看著角色在坐標(biāo)系中按照自己設(shè)定的數(shù)值進行位置的移動或旋轉(zhuǎn),學(xué)生一定會對這些數(shù)學(xué)抽象概念有更深的理解。
課堂中還可以把一些經(jīng)典的數(shù)學(xué)奧數(shù)問題,例如植樹問題、農(nóng)夫過河問題、雞兔同籠等用編程的方法,動畫的形式展現(xiàn)出來。像這樣的PBL項目式學(xué)習(xí),會先給孩子們描述要解決的問題,例如農(nóng)夫過河問題:一個農(nóng)夫帶著一只狼、一只羊和一棵白菜,身處河的南岸。他要把這些東西全部運到北岸。問題是他面前只有一條小船,船小到只能容下他和一件物品,只有農(nóng)夫能撐船。另外,因為狼能吃羊,而羊愛吃白菜,所以農(nóng)夫不能留下羊和白菜或者狼和羊單獨在河的一邊,自己離開。請問農(nóng)夫該采取什么方案才能將所有的東西運過河呢?那先分析該問題,幫助孩子找到問題的解決方案,接著設(shè)計描述該方案的動畫制作,這個動畫里面需要哪幾個角色啊?每個角色有哪些動作需要完成呢?完成這些動作需要哪些不同顏色的積木語句塊呢一步步引導(dǎo)孩子去思考,然后自己動手完成編程的過程,最后檢驗完成的結(jié)果,并總結(jié)同類問題的編程過程,啟發(fā)孩子做更深層次的思考。這個過程中需要用到Scratch的多種顏色積木運算模塊,把運算語句和其他顏色積木語句結(jié)合起來完成。也會提升孩子的邏輯思維能力,培養(yǎng)孩子的編程思維,更細致縝密地設(shè)計每個角色的腳本,以及角色之間的協(xié)作與等待。
游戲是孩子最喜愛的事情,興趣是最好的老師,扎克伯格小時候也是因為喜歡游戲才學(xué)編程的。學(xué)習(xí)到高級階段后,孩子是可以制作出像植物大戰(zhàn)僵尸、超級瑪麗這樣的游戲的。讓孩子們在玩中學(xué),在玩中創(chuàng)造一個新未來。因為孩子的思維中沒有那么多的墻,所以兒童時期是人一生中創(chuàng)造力非常強的時期,沒準(zhǔn)學(xué)生們也可以設(shè)計制作出像《旅行青蛙》這樣的熱門游戲。
圖1
按照青少年各個發(fā)展階段的學(xué)習(xí)特點,總結(jié)出了一套編程教育體系,該體系分成十個階段,從Level 1到Level 10:
(1)第一階段以Scratch做為青少年編程入門語言學(xué)習(xí),這種圖形化編程方式適合零基礎(chǔ)的少兒學(xué)習(xí),用圖形化的表現(xiàn)和拖拽的交互來完成編程的核心邏輯和成果交付。
(2)第二階段著重于Scratch的掌握,對基本操作進行強化和升級,整合Scratch中的所有模塊,并掌握一些基本的編程模式。
(3)第三階段著重于Scratch的精通,使用前面所學(xué)知識,螺旋式提高難度,目標(biāo)為熟練使用并精通所學(xué)知識點。
(4)第四階段為PBL項目制學(xué)習(xí),翻轉(zhuǎn)課堂,先給學(xué)生看完成效果,然后思考嘗試做出同樣的效果,最后教師公布實現(xiàn)方法。
(5)第五階段為編程機器人學(xué)習(xí),通過Scratch圖形化語言為機器人編寫指令,控制機器人運動。
(6)第六階段為編程機器人進階,實現(xiàn)創(chuàng)意性編程機器人的組合動作控制等操作。
(7)第七階段為Python入門,用高級語言Python實現(xiàn)之前做過的例子,完成自然過渡。
(8)第八階段為Python進階,后面第九階段和第十階段還可以進行信息學(xué)競賽類編程的深度學(xué)習(xí),形成一個完整的青少年編程教育學(xué)習(xí)體系。
未來社會,人與機器的共處工作將是不可避免的,能夠更懂機器運行模式的人,會占得先機。所謂知己知彼,百戰(zhàn)不殆,我們不應(yīng)該拿機器的優(yōu)點和自己的缺點比,而應(yīng)該發(fā)揮我們的長處,揚長避短,做更不容易被機器取代的工作,培養(yǎng)可以面向未來的思維方式和技能。保持孩子的好奇心和探索心,孩子會還我們讓人驚喜的創(chuàng)造力!