CSDN 編者按】從日常生活中發現電梯軟件的系統崩潰,到將一個業余項目發展成為最受開發者喜愛的編程語言,這是全球開發者Graydon Hoare與Rust的一段奇妙故事。
原文鏈接:https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/
未經授權,禁止轉載!
作者 | Clive Thompsonarchive page 譯者 | 彎月出品 | CSDN(ID:CSDNnews)
許多軟件項目的建立都是因為某個地方的某個程序員遇到了一個需要解決的問題。Graydon Hoare 的故事也源于此。
Rust 誕生背景
2006 年,Hoare 是一名 29 歲的計算機程序員,就業于開源瀏覽器公司 Mozilla。有一天,回到溫哥華的公寓,他發現電梯壞了,原因是電梯的軟件系統崩潰了。這已不是第一次發生這樣的事情。Graydon Hoare 住在 21 樓,想到要爬樓梯回家,他頓時感到很惱火:“我們這些從事計算機工作的人甚至無法制造出一部不會崩潰的電梯!”Graydon Hoare 知道,許多此類的崩潰都是由于程序使用內存的方式存在問題而造成的。電梯之類的設備內部的軟件通常是用 C++ 或 C 等語言編寫的,用這兩種語言編寫的代碼運行速度非常快,而且代碼非常緊湊。然而,問題在于,這兩種語言也很容易意外引入內存錯誤,這些錯誤會導致程序崩潰。根據微軟的估計,其代碼中 70% 的漏洞是由于使用這些語言編寫的代碼存在的內存錯誤造成的。對于大多數人而言,當知道自己需要爬到 21 樓時,都會很生氣,但也就僅此而已了。但 Graydon Hoare 決心為此做點什么。于是,他打開筆記本,開始設計一種全新的計算機語言,他希望這種語言能夠編寫出沒有內存錯誤、小而快的代碼。他將其命名為 Rust,英文單詞“rust”本是一種真菌,中文中叫植物銹病的不少都是這類真菌造成的,他說這個名字的寓意是:“為了生存而過度設計”。
17 年后,Rust 發展成為了全球最熱門的新語言之一。有將近 280 萬程序員使用 Rust 編寫代碼,從微軟到亞馬遜,許多公司都將其視為未來的關鍵。聊天平臺 Discord 使用 Rust 來加速其系統,Dropbox 使用它來將文件同步到用戶的計算機,而 Cloudflare 使用它來處理超過 20% 的互聯網流量。在 Stack Overflow 的年度調查中,Rust 連續七年蟬聯“最受程序員喜愛”的編程語言。就連美國政府也在積極地推廣 Rust 軟件,將其作為確保流程更安全的一種方式。與許多成功的開源項目一樣,Rust 的發展也離不開社區的共同努力,現有數百名貢獻者仍在支持,其中許多是志愿者。Graydon Hoare 本人在 2013 年退出了該項目,很放心地將其移交給了其他工程師,包括 Mozilla 的核心團隊。創造一種新的計算機語言并不罕見。許多程序員都會利用業余時間建立一個小項目。但是,能夠在 JavaScript、Python 或 Java 等眾多流行的編程語言之中站穩腳跟,實屬罕見。
C/C++ 的天然“大坑”
為了理解 Rust 為何如此實用,我們應該深入了解編程語言對計算機內存的處理。簡單來說,你可以將計算機中的動態內存想象成一塊黑板。軟件運行時會不斷地在黑板上寫數據,記錄哪個數據保存到了哪里,并在不需要的時候將其擦除。但是,不同的計算機語言,管理這塊黑板的方式也不同。C 以及 C++ 等早期的語言傾向于賦予程序員很大的權力,讓他們來決定何時以及如何使用這塊黑板。這種能力很強大,代碼可以動態控制內存,加快軟件的運行速度。這就是為什么 C 和 C++ 常用于編寫“裸機”代碼,即直接與硬件交互。許多沒有 Windows 或 Linux 之類的操作系統的機器,比如透析機或收銀機等,都運行著這樣的代碼。(此外,C 和 C++ 之類的語言也用于更高級的計算:有時操作系統需要與硬件通信。Windows、Linux 和 MacOS 的內核都是用 C 語言編寫的。)雖然 C 和 C++ 的速度很快,但這是有代價的。編程人員需要仔細記錄寫入哪塊內存,以及何時擦除。如果不小心忘記刪除某些內容,結果會怎樣?可能會導致軟件崩潰,當軟件嘗試使用它認為是空的內存,但實際上其中已保存了數據,就會崩潰。或者,這會成為非法用戶的入侵渠道。黑客會發現程序沒有正確清理內存,本應被清除的密碼或財務等信息仍然存在,他們就會偷偷攫取這些數據。隨著 C 和 C++ 代碼的規模增大,即便是程序員再細心,也可能會犯很多內存錯誤,從而導致軟件中 bug 累累。無人機公司 Fusion Engineering 的聯合創始人兼 Rust 庫團隊負責人 Mara Bos 表示:“在 C 或 C++ 中,你總是會擔心代碼隨時出現問題。”上個世紀 90 年代,Java、JavaScript 和 Python 等一系列語言開始流行。這些語言采取了完全不同的方法。為了減輕編程人員的壓力,這些語言使用“垃圾收集器”自動管理內存,這些組件會在軟件運行時定期清理內存。你可以編寫沒有內存錯誤的代碼。但缺點是失去了細粒度的控制。程序的執行速度也減慢了(因為垃圾收集占用了關鍵的處理時間)。用這些語言編寫的軟件需要使用更多的內存。因此,編程世界分成了兩大陣營。如果軟件需要快速運行或在嵌入式設備的微型芯片上運行,則選用 C 或 C++ 編寫更合適。如果是網絡應用程序或手機應用,則可以選用一種更新的、具有垃圾收集功能的語言。
編程大佬紛紛加入 Rust
Graydon Hoare 創建的 Rust 語言與上述這些方法有很大的不同。Rust 不需要程序員手動找出數據在內存中的位置,而是由語言本身來管理。但 Rust 對于如何在程序中使用或復制數據有許多嚴格的規則。程序員必須學習這些編程規則—— 比 Python 或 JavaScript 更繁瑣的規則。雖然編寫代碼的難度有所提高,但代碼是“內存安全的”,你無需擔心不小心插入致命的內存錯誤。最為重要的是,Rust 還將提供“并發安全”。現代程序可以同時做多件事——并發,有時不同的線程會嘗試修改同一塊內存,而 Rust 的內存系統會阻止這種操作。在剛開始設計 Rust 時,Graydon Hoare 在 Mozilla 工作,已是一名擁有十多年軟件開發經驗的老程序員。起初,Rust 只是一個業余項目。Graydon Hoare 花了幾年時間來開發 Rust,當第一次向其他程序員展示這門語言時,收到的反饋褒貶不一。“有些人很熱情,而有些人則表示不喜歡,還說這門語言壓根不行,永遠沒機會使用。”然而,Mozilla 的高層卻對 Rust 很感興趣。他們認為,Rust 可以幫助他們構建更好的瀏覽器引擎。瀏覽器是非常復雜的軟件,出現內存錯誤的風險極高。Patrick Walton 也是 Mozilla 的一名員工,他也參與了 Rust 的開發工作。當初,Patrick Walton 放棄繼續攻讀編程語言博士的學位,并加入了 Mozilla。偶爾的一次機會,JavaScript 的創建者 Brendan Eich 把他拉進了 Mozilla 的一次會議:“我們在討論 Rust 的設計決策,你要不要來看看?”Patrick Walton 覺得 Rust 非常棒,于是,他開始和 Graydon Hoare 一起開發該語言。后來越來越多的工程師加入了他們的隊伍。當時的很多人,包括 Mozilla 的工程師 Niko Matsakis 和 Felix Klock,都有內存和編程語言相關的研究經驗。 Patrick Walton Niko Matsakis Felix Klock Manish Goregaokar圖源:MITTechnologyReview
2009 年,Mozilla 決定正式支持 Rust。該語言是完全開源的,而且其決策由創造者全權負責,不過 Mozilla 同意出錢資助幾位工程師。于是,Rust 小組占據了公司的一間會議室,Mozilla Research 的聯合創始人 Dave Herman 將其稱為“書呆子洞穴”,并在門外張貼了一個標志。在這之后的十年里,Mozilla 雇傭了十幾名工程師全職研究 Rust。Walton 回憶道:“每個人都覺得自己在從事一項偉大的事業。” 這種興奮延伸到了 Mozilla 的大樓之外。2010 年代初期,Rust 吸引了世界各個角落的科技志愿者,他們中的有些人在大型科技公司工作。其中一名主貢獻者是德國的一名高中生。2010年,Mozilla 在加拿大不列顛哥倫比亞省舉行會議,Eich 發表了關于實驗性語言的演講,他說:“如果你對編程語言充滿了興趣,就一定要試試看 Rust。”
2010 年代初期,Mozilla 的工程師和世界各地的 Rust 志愿者逐漸打磨出了 Rust 的核心:內存的管理方式。他們創建了一個“所有權”系統,一個數據只能由一個變量引用,這大大降低了內存出問題的風險。Rust 的編譯器會嚴格執行所有權規則。如果編程人員違反這些規則,編譯器將拒絕編譯代碼,也不會將其變成可運行的程序。Rust 使用的許多技巧都算不上新穎,Manish Goregaokar 是 Rust 開發人員工具團隊的負責人,早年曾在 Mozilla 工作,他表示:“大多是幾十年前的研究”。但 Rust 工程師善于發現這些設計概念,并將它們轉化為實用的功能。隨著這個團隊不斷改進內存管理系統,逐漸地 Rust 不再需要自己的垃圾收集器,直到 2013 年,他們刪除了垃圾收集器。如今用 Rust 編寫的程序運行速度更快,因為計算機不會每隔一段時間就停下來清理垃圾。Hoare 指出,一些軟件工程師認為 Rust 仍然擁有類似于垃圾收集的元素:“引用計數”系統,這個系統是內存所有權機制的一部分。但無論采用了哪種方式,如今 Rust 的性能確實提高了,距離硬件越來越近,就像 C 和 C++ 一樣,同時也保證了內存安全。2012 年,Steve Klabnik 開始接觸 Rust 的開發工作,并在之后的十年里負責編寫相關文檔,他表示,刪除垃圾收集后“Rust 變成了一門更精簡且更有效地語言。”友好的社區文化
在此過程中,Rust 社區建立了一種文化:對新人異常友好,而且非常開放。微軟首席工程師 Nell Shamrell-Harrington 曾在 Mozilla 從事 Rust 的開發工作,她表示:“我們不會稱任何人為菜鳥,沒有任何問題是愚蠢的問題。”她說,部分原因是 Hoare 在很早以前就發布了“行為準則”,任何為 Rust 做出貢獻的人都應該遵守這些準則。Rust 社區成員說,社區接受了這套準則,并且成功地吸引到了很多編程高手加入 Rust。即便程序員犯錯,編譯器拋出的錯誤消息也很友好,不僅描述了錯誤,而且還會就如何修復禮貌地提出建議。Shamrell-Harrington 說:“當我犯錯誤時,C 和 C++ 的編譯器會讓我覺得自己是一個很糟糕的人。而 Rust 編譯器更像是在指導你編寫超級安全的代碼。”2015 年,該團隊全力以赴最終發布了 Rust 的“穩定”版本。這個版本非常可靠,可用于為真正的客戶編寫軟件。距離 Rust 歸入 Mozilla 旗下已經過去六年了,在漫長的開發期間內,編程人員一直渴望嘗試演示版本,盡管這些版本的表現會很糟糕,Goregaokar 說:“編譯器一直在崩潰”。終于是時候將“1.0”推向世界了。Walton 記得自己蜷縮著身體坐在電腦前奮戰了幾個小時。Klabnik“在過去兩周內寫了大約 45 頁的文檔,”他回憶道。2015 年 5 月 15 日,他們終于發布了第一個版本,眾多 Rust 粉絲聚集在世界各地慶祝。Mozilla 的投資很快開始獲得回報。2016 年,Mozilla 小組發布了 Servo,這是一款使用 Rust 構建的新型瀏覽器引擎。第二年,另一個小組使用 Rust 重寫了 Firefox 中渲染 CSS 的部分。這一變化給瀏覽器帶來了明顯的性能提升。此外,Mozilla 還使用 Rust 重寫了處理 MP4 多媒體文件的代碼。很快,Rust 開發人員就聽到很多公司都在嘗試他們的新語言。三星公司的程序員告訴在法國 Mozilla 辦公室工作的 Klock,他們已經開始使用 Rust 語言了。Facebook(現改名為 Meta)使用 Rust 重新設計了程序員管理其內部源代碼的軟件。Walton 如今在 Meta 工作,他表示:“無論怎么夸 Rust 的重要性都不為過。”很快,許多重要軟件的核心部分都開始采用 Rust 編寫。2020 年,Dropbox 推出了其“同步引擎”的新版本,他們的工程師也用 Rust 重寫了該引擎。該系統最初是用 Python 編寫的,但現在要處理幾十億個文件(以及在線同步的數萬億個文件)。軟件工程師 Parker Timmerman(最近離開了 Dropbox)表示,Rust 降低了處理如此復雜的系統的難度。他說:“使用 Rust 寫程序很愉快,這門語言太棒了,很有趣。你感覺自己就像一位魔術師,使用其他語言時根本不會有這樣的感覺。我們做了一個很明智的決定,這是一項新技術。”一些公司發現 Rust 減輕了他們對內存錯誤的恐懼,Mara Bos 使用 Rust 重寫了控制無人機的軟件,該軟件最初是用 C++ 編寫的。還有一些人感受到放棄垃圾收集的好處了。在 Discord,長期以來工程師們一直對 Go 中的垃圾收集器很不滿。他們用 Go 編寫的軟件大約每兩分鐘就需要執行一次垃圾收集,盡管 Discord 的工程師寫得非常仔細,沒有垃圾需要收集。2020 年,他們用 Rust 重寫了該系統,如今運行速度提高了 10 倍。現如今,就連科技巨頭亞馬遜的云計算平臺 AWS 的高管和工程師也越來越相信 Rust 可以幫助他們編寫更安全、更快的代碼。Shane Miller 為 AWS 創建了一個 Rust 團隊,他表示:“Rust 具有獨特的優勢,可以提供其他語言無法提供的優勢。Rust 能提供一種語言的多種超能力。”對這家云計算巨頭來說,最重要的是,一項基于 Rust 代碼的研究發現,Rust 代碼的運行效率非常高,其耗電量只有用 Java 編寫的同等程序的一半。Miller 說:“因此,我可以創建一個數據中心,運行 2 倍的工作負載。或者,只需一半大小的數據中心就可以完成同等量的工作,畢竟數據中心需要建立在城市中心,不能放到郊區。”Rust 的成功讓一些長期貢獻者感到有些緊張。隨著科技巨頭陸續開始采用這種語言,他們對 Rust 產生的影響也越來越大。這些巨頭公司資金充沛,足夠負擔工程師全職開發 Rust,實際上如今 Rust 團隊的幾位領導者就是亞馬遜和微軟的員工。而其他有價值的貢獻者必須在業余時間從事 Rust 的開發,比如 Bos 除了運營她的無人機創業公司外,還需要承擔華為的 Rust 工作,但作為 Rust 庫的團隊負責人,她的這部分工作并不會獲得任何酬勞。Bos 表示,這種現象在開源項目中很常見:大公司有能力更多地參與項目開發,他們可以推動整個項目,解決他們關心的問題,但小公司就沒有這種能力。她說:“大公司確實有這樣的一些影響力”。但到目前為止,沒有任何公司采取任何措施來敲響警鐘。Klabnik 對亞馬遜參與 Rust 的開發表示擔憂,“我擔心嗎?當然擔心了。我會覺得這個項目比其他項目更糟糕嗎?并不會。”
基金會成立,開源不再用“愛”發電
2021 年,各大科技公司出資成立了一個非營利性 Rust 基金會,以支持志愿者。在 Miller 領導該基金會的頭兩年里,他們提供了 2 萬美元的資助,用于支持希望承擔 Rust 主要功能開發但短期內需要資金支持的貢獻者。此外,該基金會還為托管 Rust 代碼的服務器提供了資金,并付錢給一家技術公司,以確保這些服務器全天候運行。Miller 說,在常見的開發風格中,這項工作以前是由“兩名志愿者完成的,他們基本上有 50% 的時間在待命,其中一名是來自意大利的學生。”這種語言的發展速度非常不可思議。如果說 Rust 誕生于 2006 年,那么如今即將結束青春期,走向成熟期。汽車公司正在采用 Rust 來構建運行車輛的關鍵代碼,航空航天公司也在使用這種編程語言。Dropbox 的 Timmerman認為:“將來,到處都會使用 Rust。”微軟高管甚至公開表示,他們將使用 Rust 編寫越來越多的新代碼,而C和C++的使用將越來越少,最終為零。所有使用 C 和 C++ 編寫的舊代碼不會消失,會一直使用,可能會持續數十年。但是,如果 Rust 成為編寫快速和裸機代碼的常用語言,我們會逐漸地意識到,我們的軟件環境將變得越來越可靠,不那么容易崩潰,也不至于那么不安全。看到 Rust 如今的發展,最驚訝的人莫過于 Hoare 本人。因為,“許多語言都半路夭折了,”他說。. 使用語義化標簽:盡可能使用語義化標簽,這樣可以讓搜索引擎更好地理解你的頁面結構,同時也更容易閱讀和維護。
2. 遵循標準結構:HTML有一些固定的結構,如<head>、<body>等,不要隨意更改它們的順序或忽略它們。
3. 不要濫用標簽:避免過多使用無意義的標簽,如<div>、<span>等,應該盡可能使用合適的語義化標簽。
4. 標簽閉合:HTML標簽必須成對出現,即必須有起始標簽和結束標簽,確保標簽的正確閉合。
5. 屬性使用雙引號:HTML屬性值必須用雙引號括起來,如< img src="image.jpg">。
6. 避免使用內聯樣式:內聯樣式會增加HTML文件的大小,而且不利于維護,應該將CSS樣式單獨寫在一個外部文件中。
7. 避免使用表格布局:表格布局雖然簡單易用,但是不利于SEO和響應式布局,應該盡可能使用CSS布局。
8. 圖片添加alt屬性:所有圖片都應該添加alt屬性,描述圖片的內容,這不僅有助于SEO,還可以提高網站的可訪問性。
9. 避免使用過時標簽和屬性:如<center>、<font>等已經被廢棄,不應該再使用,應該使用CSS來實現相應的效果。
10. 注釋代碼:注釋代碼可以幫助其他開發人員更好地理解你的代碼,也有助于自己以后維護代碼。
ython和其他編程語言不同,可選的IDE(編程集成環境)很多,但很多并不是為中小學的信息科技教學設計的,鑒于此,作者所在研究團隊根據一線教學需求,開發了XEdu信息科技教學版,集成了教學中涉及的絕大多數庫和模塊,降低了中小學教師教學Python的技術門檻。
近兩年,筆者一直在努力開發一個名叫“XEdu”的開箱即用的人工智能開發工具。為了解決環境搭建的問題,筆者借助Conda(一個開源的軟件包管理系統)封裝了一個綠色軟件,用戶只要一解壓,就擁有了深度學習的編程環境。很多信息科技(技術)教師看到這個“XEdu一鍵安裝包”后,想到可以用這樣的方法將中小學常見的Python庫封裝起來,然后形成一個定制的教學環境,省去維護上的很多成本。
理由:為什么要定制編程環境
中小學新版的信息科技教材幾乎都選擇了Python,Python是一個開源編程語言,擁有很多IDE(編程集成環境),如IDLE、Anaconda、PyCharm、VSCode、Spyder、Subl i me、Atom和Thonny等,那為什么一線教學還會提出定制教學環境的需求呢?
1.Python IDE太多導致選擇困難
Python的IDE種類繁多,各有各的特點,且功能使用差別較大,教師們難免患上選擇困難癥。IDE本身沒有優劣之分,主要是看用戶需求。高校的數據科學、人工智能課程一般推薦Anaconda,而工程師和程序員往往選擇PyCharm和VSCode。對于教學來來說,Jupyter Notebook的文本和代碼相結合方式特別適合做“學案”。對于初學入門的學生來說,界面簡潔干凈的Thonny則是最佳選擇。
2.為中小學設計的Python IDE很少
雖然IDE很多,但為中小學信息科技教學設計的Python IDE很少。中小學的Python學習應該聚焦在編程和算法上,而弱化軟件附加的功能。程序員選擇PyCharm和VSCode,是因為開發工程需要項目管理、版本管理方面的功能;而信息科技教學一般不會寫很復雜的代碼,不會去開發信息系統,也不需要太復雜的輔助工具。
3.庫環境管理困難
Python的最大特點是擁有無窮無盡的第三方庫或者模塊,教學中往往需要用PIP工具安裝各種庫。因為Windows系統不帶完整的編譯工具,對于一些沒有預編譯的庫或者依賴關系比較復雜的庫,往往容易安裝失敗。而信息科技的教學環境一般在機房,如果一開始沒有把可能涉及的庫都裝好,那么每一次開機都要重新安裝。這不僅需要足夠的網絡帶寬,還很浪費時間。
因此,一線信息科技教師會期望有一個工具,可以將信息科技教學中常用的庫文件全部內置,并且內置Jupyter、Thonny和常見的第三方庫。只要解壓,就能使用,既方便教師部署機房環境,也方便學生在家自學。
方案:定制編程環境的技術實現
XEdu之所以能做到將編程環境打包為一個文件,是因為借助了“anconda”(一個著名的Python IDE)中的“conda-pack”。顧名思義,“conda-pack”就是一個環境打包的工具,其使用的大致步驟如下:
第一步:安裝conda環境。
下載miniconda安裝包并安裝(https://docs.conda.io/en/latest/miniconda.html#)。
第二步:構建一個新的Python環境,如筆者取名為“env”的環境。
在conda的PowerShell Promp(t下面簡稱為“Prompt”)中輸入conda create-n env python=3.8.3-y
在Prompt中繼續輸入命令conda activate env,激活環境“env”。
第三步:安裝所需要的各種庫文件。
在Prompt中繼續輸入pip install XEdu-python MMEdu BaseNN BaseDT BaseML BaseDeploy。
在Prompt中繼續安裝Jupyter和Thonny:pip install jupyter notebook thonny==4.0.0。
以此類推,完成所有的第三方庫的安裝。
第四步:打包編程環境。
在Prompt中繼續輸入conda pack-n env-o env.tar.gz。
由于環境打包只能是tar.gz格式,對Windows支持不友好,等待打包完成后,再使用解壓軟件解壓,然后做一些細節調整,最后壓縮成自解壓文件。
第五步:為編程環境添加啟動腳本文件。
要想激活這個Python環境,還需要在命令行中執行env\Scripts\activate.bat,為了讓學生有更好的體驗,可以把這個命令行指令封裝成為啟動腳本文件。
封裝的IDLE啟動腳本文件,如圖1所示。同樣,可以封裝出啟動CMD腳本,如圖2所示。
對Thonny和Jupyter Notebook的啟動,需要稍做一些處理,以避免和計算機上已經安裝的舊環境產生沖突。具體的腳本內容有點長,這里略過。
第六步:壓縮為自釋放文件。
利用7zip、WinRAR等工具,將整個目錄打包為自解壓文件。
實踐:以XEdu為模板設計信息科技教學版本
在明確了定制編程環境的方案后,核心的工作就是確定需要預裝哪些庫。
考慮到XEdu的定位是人工智能教育的工具包,那么XEdu-Python、MMEdu、BaseDT、BaseNN、BaseML和BaseDeploy是必備的核心庫。因為依賴關系,在安裝這些庫時會自動安裝另外一些庫,如opencv-python、numpy、pandas、matplotlib、scikit-learn、pillow、requests、onnxruntime和tqdm等。
上面列出的庫,已經覆蓋了絕大多數信息科技教材涉及的庫。考慮到不可能將全國的教材都全部整理一遍,因此筆者以浙江教育出版社的高中教材和清華大學出版社的初中教材為主,又加入了如下一些庫:pyinstaller、flask、pyautogui、pypinyin、gradio、tkinter、wordcloud、jieba、pywebio、pyttx3、pinpong、pysmplegui、remi、turtle等。
此外,筆者認為需要規范學生的代碼和相關文件存放習慣,于是梳理了文件目錄。如圖3所示,其中checkpoints是存放AI訓練的權重文件的,dataset是存放數據集的,EasyDL是簡易深度學習軟件系列,env是Python的運行環境和庫文件,utils是一些可能需要的內置功能,XEdu示例代碼是XEdu系列人工智能教學所需的代碼文件,教學資源則供教師存放各種配套的資源。
反饋:來自一線教師的測試和評價
筆者將這個解壓就可以使用的Python編程環境,命名為“XEdu信息科技教學版”,并提供給身邊熟悉的信息技術教師使用。目前得到了不錯的使用反饋,尤其是兼容性很好,在Win7(64位)系統上運行正常。
這一編程環境不僅可以用于信息科技教學,還可以用于人工智能科創活動。針對部分教師給出的反饋,需要讓Jupyter Notebook支持中文,筆者在Jupyter Notebook的啟動腳本中增加了“set.UTF8”,同時再次修改了一些細節,包括去除thonny文件的標語等。
總結:幸福都是奮斗出來的
當完成這個“XEdu信息科技教學版”后,筆者心情特別好,因為教師們掌握了解決方案和技術后,編程環境完全可以根據自己的需求來定制。信息科技教師的幸福要由自己來掌握。
本文作者:
謝作如
溫州科技高級中學
邱奕盛
華東師范大學教育信息技術學系/上海數字化教育裝備工程技術研究中心
文章刊登于《中國信息技術教育》2023年第19期
引用請注明參考文獻:
謝作如,邱奕盛.為信息科技教學定制一個Python編程環境[J].中國信息技術教育,2023(19):82-84.