“學(xué)編程最好從匯編開始?!蹦澄蛔苑Q有計算機(jī)背景的領(lǐng)導(dǎo)在一次活動中對我們輸出了這樣的觀點。真的嗎?我估計絕大多數(shù)的信息科技教師都不會認(rèn)可這一觀點。但是,如果我把這個問題更換為“學(xué)編程最好從C或者C++開始”,估計有些教師就開始動搖了。
據(jù)了解,迄今為止,國內(nèi)還有個別地區(qū)的初中信息科技教材使用C++,而高中信息技術(shù)教材則普遍使用Python,這導(dǎo)致出現(xiàn)了少見的難度“倒掛”現(xiàn)象。仁者見仁,智者見智。在這里,我不想深入討論哪一種語言更適合中小學(xué),只想說一個事實:在圖形化編程之前,國內(nèi)做兒童編程的幾乎是鳳毛麟角,而現(xiàn)在信息科技課標(biāo)中都已經(jīng)加入“身邊的算法”這一學(xué)習(xí)內(nèi)容,放在小學(xué)階段。
以史為鑒,我們?nèi)羰钦驹诰幊探逃l(fā)展史的角度去“預(yù)測”人工智能教育,也許能有新的思考和認(rèn)識。高中信息技術(shù)課標(biāo)組專家推薦Python,其中有一個重要原因是Python屬于非程序員的編程語言,畢竟編程教育不是為了培養(yǎng)專業(yè)的程序員。同理,中小學(xué)人工智能教育的目標(biāo)顯然不是把每個孩子培養(yǎng)成人工智能算法研究員,因為那絕對不可能做到。為什么不讓孩子們先學(xué)會使用SOTA模型,如同調(diào)用Python庫一樣調(diào)用現(xiàn)有的算法呢?
這幾年,我常常呼吁新一代人工智能教育要重點關(guān)注深度學(xué)習(xí),要學(xué)會用訓(xùn)練模型解決真實問題。但有些專家認(rèn)為僅僅調(diào)用SOTA模型并沒有真正理解模型背后的數(shù)學(xué)原理。也許他們跟那位持“學(xué)編程最好從匯編開始”觀點的領(lǐng)導(dǎo)一樣,最早是從理解最小二乘法、梯度下降之類的底層數(shù)學(xué)原理開始理解人工智能,下意識認(rèn)為這些是不可越過的基礎(chǔ)知識。實際上,如果不是為了成為算法研究員,學(xué)習(xí)人工智能并不需要先學(xué)習(xí)數(shù)學(xué),正如學(xué)習(xí)計算機(jī)不需要從“與或非”開始一樣,連DOS命令都可以跳過,也如同學(xué)習(xí)互聯(lián)網(wǎng)應(yīng)用不需要先理解哈夫曼編碼和傅立葉變換一樣,連協(xié)議都可以先忽略。
機(jī)器學(xué)習(xí)、深度學(xué)習(xí)真的很難嗎?人工智能的學(xué)習(xí)難度,取決于其使用的工具。布魯納有句名言:“任何學(xué)科都能夠用在智育上是誠實的方式,有效地教給任何發(fā)展階段的任何兒童?!贝蟛糠种行W(xué)生的確無法理解微積分,無法理解梯度下降,但不等于他們無法用人工智能解決真實問題。先普及,然后吸引學(xué)有余力的孩子繼續(xù)探究,這才是青少年人工智能教育的正確路徑。