王旭卿 陳凱
陳凱:看了本刊2021年第6期中的幾位老師關于國產操作系統的對話,很有感觸,甚至有一種埋藏已久的熱情被再次點燃的感覺。對話中,梁森山老師提到,在高科技領域,我國存在著繞不開的痛點,既缺少芯片,又缺少操作系統。謝作如老師提到,應該在教育中推廣開源操作系統的應用,這會在兩方面為將來國產操作系統進入基礎教育做好準備,一是讓學生們養成開源系統下的用戶習慣,為建立良好的軟硬件生態環境做好準備,二是能讓學生通過接觸到更多操作系統底層知識,從而對探究計算機原理產生動力。那么,就有必要討論一下,推動開源系統進入基礎教育,理由是否充分?當下使用開源系統開展信息技術教育的進展又大致如何呢?
王旭卿:這里先大致將開源系統分為開源的硬件系統和開源的軟件系統。在軟件系統中進一步細分,可以包含開源的操作系統、數據庫、程序開發語言、應用軟件等,甚至可以更寬泛一些,像開源的各類文檔、作品,都可以納入到廣義的開源系統的范疇中。總之,這些開源的資源在發布時,都根據具體情況設定了不同程度的開源許可協議,我認為,這在很大程度上提高了資源利用和建設的效率,同時,也加強了對核心技術的可控性,對于打破技術壁壘有著很重要的意義。
一方面,目前開源硬件的內容已經進入到《普通高中信息技術課程標準(2017年版)》,所以說,開源硬件的內容進入基礎教育是一個進行時態的事情,相信中學信息技術教師對Arduino、掌控板、樹莓派、虛谷號等開源硬件的名稱,起碼知曉其中一二,而且我注意到,已經有很多教師都開始嘗試進行有關開源硬件的教學實踐了。至于開源軟件,概覽教材中涉及的應用軟件和系統軟件,大部分是開源或免費的,尤其是Python編程語言環境,不僅其本身具有開源屬性,而且在數據結構和人工智能教學模塊中用到的Python庫也大多是開源的。至于開源的操作系統,如Linux系統,據我了解,目前還很少有學校將其安裝到機房中的每一臺學生機上,在一般學校,使用Linux系統作為服務器的情況也并不是特別多,并且,一線教師中對Linux系統比較熟悉的也不多。所以我想,關于開源系統進基礎教育的問題,如果從形式上要普遍推廣開源操作系統的應用,要讓學生在開源操作系統上進行信息技術的學習,就普通學校的狀況而言,是需要非常大的努力才能達成目標的。
但另一方面,不能說因為困難就不作為。站在國家人才發展戰略的視角看,培養學生技術自信、自主創新意識和能力,是越來越重要的事。在課程中使用國產的開源軟硬件,這是樹立學生民族自信心的途徑之一,開源系統是學科育人價值培養的良好平臺。關于開源系統進教育,是要討論怎么做,而不是討論是否做的問題。
陳凱:作為一線的信息技術教師,我覺得自己在這方面比較有發言權。一方面,學校計算機操作系統的架設是一項龐大煩瑣的工作,也是一項牽扯到方方面面的基礎設施建設工作,如無十分必要,一般不會去調整;另一方面,如今的學生作為數字原住民,對Windows、安卓、iOS這些圖形界面操作系統的使用都已經十分熟悉了,甚至可以說到了人機一體的境界。而對于Linux或FreeBSD這樣的開源操作系統,必須承認,至今為止,它們的圖形界面的軟件生態環境還是不太完備的,而這些系統的命令行界面的操作方式,和一般學生的操作習慣是相當不兼容的。但這里必須指出,一個開源的系統是由非常多的子系統組成的,集成了眾多腦力勞動者的成果,就目前看來,使不同的軟件或函數庫能更便捷地在本地或者通過網絡相互調用和實現數據傳輸,命令行界面的指令操作是效率比較高的方式。那么,當我們的美好理想因為現實情況遭遇困難和阻礙的時候,應該采用怎樣的策略克服困難、取得進步?或者說,應該試著在哪方面去重點突破呢?
王旭卿:開源系統進中小學值得嘗試,但毫無疑問會面臨許多問題,其中有師資的問題,有學生認知基礎的問題,有開源系統本身生態的問題,并且還要在完整的教育發展背景下思考社會的需求以及各方面的約束。我建議采取謹慎的態度,小步子向前邁進,在研究和推進過程中可以爭取企業在設備和技術上的支持。在中小學,有能力、有興趣的教師可以積極探索,給學生提供接觸開源系統的機會,可以帶領有潛力的學生開展深入的應用和研究。說到開源操作系統的用戶習慣,謝作如老師在上一期對話中提到,希望鴻蒙在進入中小學時,能和安卓一樣上手容易,無縫移植,這一點我也十分贊同。雖然說,對操作系統底層的了解,能夠培養學生核心的、關鍵的學科知識,但這里的底層,并不是指在過程上要從完全基礎的環境安裝、系統配置開始學習,而是指要凸顯計算機實現某個功能的核心思想方法。信息技術學科涵蓋的范圍太大,在面向全體學生進行教育時,需要在經典內容和時代發展要素之間取得平衡,在面向學有余力的學生時,可以從當前熟悉的環境出發,引導他們在深度和廣度上展開探索。
選擇哪一個系統用于信息技術教學,其實也不能僅考慮情感上或版權上的問題,還要考慮到這個系統是否有助于學科核心素養的培養。新的課程不再將信息技術教學內容綁定至某一具體的軟件,或規定使用怎樣的操作系統,如教師以Windows系統為基礎安裝軟件來教授人工智能,或以Linux系統為基礎安裝軟件來教授人工智能,這都是可以的。但考慮到這樣一個學習項目,它需要從周圍環境采集數據,然后利用人工智能庫來對數據進行分析處理,最后將處理結果轉化為某個外部的機械動作,那么,在Windows系統平臺上實現整個系統就比Linux系統要困難,因為Linux系統中提供了更多種可開放使用的模塊和腳本,可比較容易地實現網絡通信、物聯網通信、多用戶遠程登錄等功能。對于學生來說,他們所面對的這樣的開源系統,就不再是一個面向普通用戶的系統了,而是一個可以自頂向下進行設計和開發、可以逐層分解成模塊的具有很強定制、改造和擴展能力的系統。那么在項目學習中,和計算思維有關的系統化、模塊化的思想,就自然而然地體現出來了。
中小學生學習開源系統可以有不同的切入角度,如可以面向真實問題和需求,去設計和制作某種人機交互裝置,從信息系統的消費者轉型為信息系統的設計者、開發者,在人——包括開發者和使用者、信息系統、信息社會多重互動的環境下理解當下的生存環境。在這個過程中,教師可以為學生提供封裝程度不一的軟硬件模塊,讓不同認知水平的學生體驗不同的學習經歷,獲得不同的收獲。需要注意的是,不要僅僅將思路自我設限在開源系統上,要從宏觀整體上看待問題,在一個面向真實問題的任務實施過程中,要培養學生按需求評估、選擇、測試、使用、評價軟硬件的能力,無論是正版商業軟件還是自由軟件、免費軟件,這些都可以是學習考察的對象。
陳凱:我覺得王老師您剛才提到的例子,實際上和學科核心素養的其他幾個要素都有關系,如數字化學習、信息意識的培養等。在項目學習中,為了實現某個特定的任務,我們不能閉門造車,而是要先了解其他人已經做了什么,哪些是直接能調用的,哪些是需要改造的,怎么將已有的模塊用到自己的項目中,怎樣發布自己的成果等等,這和開源軟硬件的開發理念是相符合的。與此同時,我們在開源的系統上教學,也是有意識地讓學生們知道,他們將來不應該僅僅是某個工業和商業產品的消費者,還應該是推動社會發展的開發者和建設者。
王老師提到了面向真實問題的任務,這里就不得不提到一個問題,說到在項目學習中體驗系統的開發,很多學校會開設諸如機器人、無人機這樣一些看上去高大上的課程,但實際上,在這些機器人和無人機里調用某個人工智能的庫,或者網絡上已有的某個功能接口——事實上有很多開源的模塊可供調用,學生們很快就能做出某種“智能”的設備了。也有很多公司看到了商機,直接就把各種函數庫封裝到硬件設備里,做成一個小盒子,教師和學生都能輕松調用,但函數庫里到底做了什么,卻不再去深究了,于是,開源系統之源,反而可能被忽視了。那么不妨問一下,學生在學習中,是不是滿足于組裝拼接就可以了?如果答案是否定的,那么就又帶來了另一個問題,對于“盒子”的拆解應該達到怎樣的程度才是合理的?畢竟,雖然我們知道“源”在那里,但以一般的學生的水平,要讓他們在自身能力和裝備還不齊全的情況下,在溯源的路徑上采集知識財富,確實很有難度。
王旭卿:這個問題其實還是和基礎的知識技能的教學有關,從信息技術學科本身來看,讓學生理解核心原理是不能被忽略的事情,雖然基礎性的知識學習肯定是比較枯燥的,并且也常常不能被整合到某個項目學習活動中去,但若沒有對這些基礎原理的理解和掌握,只滿足于外在功能的調用和組裝,是不能夠培養出有深度思維能力的學生的。另外我也認為,要警惕泛項目學習化的傾向。我記得陳老師您說過,一個理論越是深入到底層,可能離教師初始設定的生活情境就越遠。我認為,一個課程中可以設定幾個項目活動,在活動過程中關聯起知識,但這不是說每節課都要弄成項目活動,有很多知識的獲得和技能的達成還是需要基礎性的記憶和訓練的。
陳老師您提到“小盒子”的問題,我是這樣看的,對于小學和初中生來說,這種不透明的黑盒的存在,能激發學習興趣、簡化創造環境,便于對接整體系統功能,是有一定的存在必要的。當然,教師可以引導學生對黑盒內部的構造產生探索的欲望,或者稍稍打開盒子,看一下半透明的環境。有了這樣的應用場景的支撐和行為習慣的培養,到了高中和大學,對進一步打開盒子、深入盒子內部進行探索就有了一定準備。這就是說,要在簡單的學習和操作環境中讓學生的關注有一個集中的聚焦點,接下來,就可以在此基礎上,根據不同的側重點進行迭代。從這個角度看,開源系統比商業化的封閉系統無疑具有更大的優勢。剛才陳老師問到對盒子的拆解應該達到怎樣的程度,我認為,只要牢牢把握住本學科中培養學生核心素養這個目標,同時兼顧學生的心理思維發展水平以及當下知識技能儲備,就不會有太大偏差。例如,讓學生們用盒子、拆盒子,拆出來后盡管很多地方看不懂,但教師可以從中選出少數基礎性的組件,介紹它們在運行中的核心思想,這樣也就可以了。當然,具體怎么做,做到什么程度,無疑需要一線教師去探索、實踐、反思和完善。
陳凱:王老師提到了一個非常好的詞語“迭代”,這給了我一個啟發,要讓學生多了解系統底層知識,并不是說教學的過程一定是從底層開始的。這就好像我們在繪制分形的科赫曲線時,先簡單畫一個三角形,然后再在這個三角形的每條邊上畫出小三角形,使之成為一個六芒星,然后不停地迭代,最終呈現出雪花的圖樣。在這個過程中,可以說是先有了對三角形的認知,然后再深入到每一個線段變化的更“底層”,去發現每個線段上那些小三角形的存在。假設我們要在樹莓派或虛谷號的Linux系統上實現某個圖像識別功能,一種方法是直接調用現成的函數庫,另一種方法是自己寫一個機器學習算法。從學習人工智能的角度看,這兩種實現方式都是有價值的,前者是了解一個系統的全貌,而后者則在更底層體驗機器學習的運作方式。之所以說“更底層”而不是直接說“底層”,是因為我們知道這個機器學習算法本身也是建立在更底層的學科知識基礎上的,如很多機器學習算法需要用到數學上的工具,在信息技術教學中,我們更多的是把那些數學工具當作黑盒子來使用。
但我總還是有這樣的希望,如果學生真的能從底層開始,親自經歷一層一層搭積木直到實現完整的頂層——如某個機器學習算法的功能模塊——的過程,這將會是十分美好的圖景,但在有限的教學時間內,實現起來是頗有困難的。
王旭卿:以中學生的水平,理解某些算法,如機器學習中的一些算法,確實是有比較大的困難。我從兩個方面來看這個問題:一方面,這也恰恰說明,算法與程序設計的基礎教學是非常重要的;另一方面,這讓我想到,現有的功能模塊,正是因為其完整性,才造成了其實現過程的復雜性,因為這些功能模塊并不是專為教育而開發的。當前,已經有不少教師都在思考,如何盡可能以中學生的知識水平與思維方式,來教授那些較為艱深的算法。我注意到《中國信息技術教育》雜志已經連續很多期刊登了北京大學李曉明教授和南京大學陳道蓄教授的關于算法的文章,可以認真消化一下。高校教授的很多設想,非常需要中學一線教師在反復的具體教學實踐中,使之逐漸成為有效的、成系統的教學活動方案,在實踐中涌現出的新的想法可以再一次進行反饋。如果能夠將那些算法的精髓提煉出來,針對基礎教育的目標,封裝成雖然功能完備性有限但足以說明運行原理的模塊,然后將這些面向教育應用的功能模塊以開源的形式發布,那將是很有意義的工作。在這里,我就鼓勵有興趣的老師們試一試,陳老師覺得如何?
陳凱:這真是一個極有挑戰性的任務?。?/p>
王旭卿:我們的世界在相互競爭和協作中發展,許多工作不是依靠一個人或幾個人的力量能夠完成的。陳老師不妨說說看,對于開源系統進入基礎的信息技術教育,在具體的實施過程方面有哪些想法?或者說,有哪些任務是可以大家一起來協作進行的?
陳凱:我覺得有以下一些工作等待完成,首先,從基礎設施的建設來看,可以針對新的課程,整理出一份用于日常信息技術教學的開源軟、硬件工具的清單,然后試著架設開源的服務器系統,學生只要遠程登錄到這個服務器上,就可以將其中的軟件和工具用于學習了。其次,可以基于Linux內核,為信息技術教學,或專為人工智能教學,或者電子電路乃至集成電路設計的教學的目的制訂一個特別的Linux開發板。據我所知,基于Linux內核的開發板類型很多,有專用于網絡路由器的,有面向家庭娛樂的,有用于幼兒教育的,但專門用于信息技術教學的開發板不多,面向人工智能教學或電子電路方面教學的就更少了。我想,如果在獲得某個開源硬件的時候,系統中已經配置好了一些主要的機器學習或神經網絡方面的庫,那么就可以大大減輕教師和學生在安裝和配置上的負擔。但這個工作需要有人工智能相關廠商的技術支持,靠我個人是難以做到的。
另外,我也會重點關注,怎么將開源思想、開源工具和日常的信息技術教學融合起來。例如,在講到位圖時,一般都是用BMP格式的圖像作為例子,但其實可以使用開源的XPixMap圖像格式,這種格式的圖像文件的優點是,用記事本就可以直接看到圖像格式文件中的各類標記,以及怎樣用不同的符號來代表點陣上的顏色。又如,在讓學生討論知識產權問題的時候,可以引導他們多關注創作共用版權協議,鼓勵學生們將自己創作的作品,以不同類型的創作共用版權協議發布到網絡上。我有一個小小的愿望,希望每一屆學生都能在項目學習活動中留下一些以開源協議發布的小作品,然后,下一屆學生就可以基于這些作品,做進一步的改造和擴充,這樣,一方面是把開源的理念真正落實到行動中,另一方面,也能讓學生體驗到在數碼時代所特有的跨時間、跨空間的協作創造方式。
王旭卿:可以看出,陳老師想要研究的內容很多。剛才您所說的重點在于開源的軟硬件基礎設施的假設和開源理念的建立,我想,其實還有更多值得研究的方向。我個人對開源硬件的關注比較多,在開源硬件的學習中,我們可能會從簡單的積木塊式的編程入手,讓學生先熟悉積木塊的流程和硬件設備的關系,然后一步一步增加流程的復雜性,最后,為了構建復雜的任務,再轉向用命令行操作和全程序代碼來實現任務。這個過程,實際是考慮到人在把握一項新的知識和技能的時候,有一個從直觀形象,逐漸轉向抽象化、符號化的過程。那么,對于像Linux這樣的開源操作系統的學習,其實也可以借鑒類似的路徑。首先是了解圖形化界面下能夠做些什么;然后是揭示在圖形化的操作過程中,幕后的指令究竟做了一些什么,其中,還可以研究圖形界面對用戶的顯現和后臺配置文件之間的關系是怎樣的;最后,引導學生處于設計者、開發者的角度,思考普通用戶的需求和行為習慣,研究應該如何借助指令和代碼,結合已有的工具,解決一個真實情境中的問題。
陳凱:王老師所說的,讓我聯想到教學中Python的登場和VB程序設計環境的逐漸隱退。必須說,VB是開發圖形界面的一個很方便的工具,開發者只要用鼠標拖拽就可以對不同控件進行布局,通過填表格的方式就可以輕松定義空間的屬性和行為,但對于Python,或者是Linux系統下的其他腳本語言來說,要實現圖形界面的程序代碼就要復雜許多。我總是在想,如果在Linux系統下,有一個類似于VB那樣容易操作的圖形界面設計工具就好了——雖然VB作為一個程序設計語言,在許多地方都存在不足,但換一個角度看問題,使用VB這樣的工具,與其說是在設計圖形界面,倒不如說是在一個高度成熟的圖形環境中實施定制和配置工作。相對而言,在Linux系統中,是能夠用比較方便的形式,將代碼指令和最終呈現給用戶的圖形界面上的元素直接對應起來的,這就能讓學生體驗到由抽象符號構建虛擬的數碼物的過程,對于學生理解計算機學科中的思想方法,比如數據和計算之間的關系、數據和顯現之間的關系等,是十分有益的。
對于為什么一個設計者不能沉溺于圖形界面開發的舒適區,這里我想到一個例子,就是在開發集成電路時,必須使用硬件描述語言,然后由硬件描述語言生成原理圖并進行功能仿真。那么為什么不直接用拖一拖、畫一畫的方式來設計集成電路的原理圖呢?因為對于一個太過于龐大的系統,人的頭腦是無法以圖形化的方式來描繪、跟蹤不同模塊之間的關系和相互行為的,所以,集成電路EDA軟件中往往需要程序代碼來支持進行設計。所以,當我們指導學生在Linux服務器上寫出一個XML文檔然后觀察文檔數據在瀏覽器中的表現,或者用Logo語言畫出某個有規律的圖形,或者用pygame庫模擬出一個動畫效果的時候,其實就已經在思維模式上,為學生們將來構建比較大型、復雜的系統做一定的鋪墊了。
王旭卿:從我們剛才的討論中,其實可以歸納出兩種不同的思維過程,一是由直觀的現象到抽象的符號化、形式化、自動化,學生們應該有逐步熟悉、了解的過程,二是在熟悉和了解的基礎上,還應該有主動進行構建、模擬和仿真的過程。通過這兩個過程,將某個情境中問題解決過程中的“數據—計算—顯現”的對應關系呈現出來。我忽然發現,這與新教材中“數據與計算”模塊中的內容有比較多的結合點,可以作為項目學習活動的設計思路。
陳凱:這還真是一個不錯的研究方向。我們試圖引導學生處于設計者、開發者的角度,思考普通用戶的需求和行為習慣,研究應該如何借助指令和代碼,結合已有的工具,解決一個真實情境中的問題,這樣的方向是確定的。關于如何結合“數據與計算”模塊的教學內容,借助開源系統將“數據—計算—顯現”的關系呈現出來,這是一個有價值的研究方向。
Linux等開源操作系統既是一個高效的開發平臺,又是一個完整的研究對象,但和開源硬件不同的是,它們大多不是為基礎教育的教學目標量身定制的,將開源系統用于基礎的信息技術教育,探索期和磨合期都會比較長。如王老師前面所說,讓學生在開源操作系統上進行信息技術的學習,就一般學校的狀況而言,是需要非常大的努力才能達成目標的。雖然道路是漫長的,但我們也不應畏懼艱難,要堅定自己的前行目標。
王旭卿:是的,在當前中國高科技的發展因為缺少自主產權的芯片和操作系統而受到制約的現實情況下,我們前行的步子必須更加快一點才行。
王旭卿
教育學博士?,F為上海師范大學信息與機電工程學院計算機系副教授,教育技術專業碩士生導師。擔任上??萍冀逃霭嫔绯霭娴?019版《普通高中信息技術必修2:信息系統與社會》教材的分冊主編和主要編寫人員。2016-2020年,承擔上海市教委“立德樹人”信息科技教育基地項目中多個子課題研究。近年來重點關注創意編程+、計算思維、創客教育和STEAM教育等相關主題的教學與研究。已發表核心期刊論文20余篇,主編、參編和翻譯著作、教材10余本。
陳 凱
上海市位育中學信息技術高級教師,上海市徐匯區學科帶頭人,當前研究重點為信息技術學科項目學習活動方案設計、計算思維的可視化與評價、開源軟件系統在基礎教育中的應用等,發表多篇論文,參編多冊信息技術教材。