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