學習編程越來越難了……
我寫了幾本使用Python來解釋貝葉斯統計和數字信號處理等主題的書籍。隨書一起,我提供了讀者可以從GitHub下載的代碼。為了使用這些代碼,讀者必須知道一些Python的相關知識,但這還不夠,還需要一台裝有Python及其支持庫的計算機,同時他們必須知道如何從GitHub下載代碼,以及如何運行他們下載的代碼。
這就是很多讀者陷入困境的地方。
有些人給我發電子郵件。他們經常表達沮喪,因為他們正在嘗試學習Python,貝葉斯統計或數字信號處理。他們對安裝軟體,克隆存儲庫或設置Python搜索路徑不感興趣!
我非常同情這些反應。從某種意義上說,他們的挫敗感是完全合理的:不應該像下載程序和運行程序那樣難。
但有時他們的失望是錯誤的。有時他們會責怪Python,有時他們會責怪我。這並不完全公平。
我解釋下我認為的問題是什麼,以及我會提出一些解決方案(也許只是解決方法)。
根本問題在於使用計算機和編程計算機之間的障礙越來越大。
當我得到一個Commodore 64(1982年,我認為)這個障礙是不存在的。當您打開計算機時,它會載入並運行軟體開發環境(SDE)。為了做某些事情,你必須至少輸入一行代碼,即使它只是另一個程序(如Archon)。
從那以後,有三種變化讓用戶變得越來越難以成為程序員
1)電腦零售商默認停止安裝開發環境。因此,任何學習編程的人都必須從安裝SDE開始 - 這是一個比您預期更大的障礙。許多用戶從來沒有安裝過任何東西,不知道怎麼做,也可能不被允許。現在安裝軟體比以前更容易,但仍然容易出錯,並且可能令人沮喪。如果有人只是想學習編程,他們不應該先學習系統管理。
2)用戶界面從命令行界面(CLI)轉移到圖形用戶界面(GUI)。圖形用戶界面通常更易於使用,但它們隱藏了用戶關於真正發生動作的信息。當用戶真的不需要知道時,隱藏信息可能是件好事。問題在於GUI隱藏了程序員需要知道的大量信息。所以當一個用戶決定成為一名程序員時,他們會突然遇到所有隱藏起來的信息。如果有人只是想學習編程,他們不應該先學習操作系統概念。
3)雲計算將信息隱藏到了一個全新的高度。使用Web應用程序的人通常對其數據存儲位置以及訪問它們可以訪問哪些應用程序只有一個模糊的概念。許多用戶,特別是使用移動設備,他們不區分操作系統,應用程序,Web瀏覽器和Web應用程序。當他們上傳和下載數據時,他們經常會對它的來源和去向感到困惑。當他們安裝某些東西時,他們經常對將要安裝的位置感到困惑。
對於一個使用Commodore 64成長起來的人來說,學習編程已經夠難了。對於與雲連接的移動設備成長的人來說,這就更難。
那麼,我們能做些什麼呢?這裡有幾種選擇(我給它們取了好聽的名字):
1)回到未來:一種選擇是創建計算機,比如我的Commodore 64,它打破了電腦使用和編程之間的障礙。根據Eben Upton的觀點,Raspberry Pi的部分動機是重新創建將用戶轉化為程序員的環境。
2)面對痛苦:另一種選擇是在開始編程之前(或同時)教學生如何設置和使用軟體開發環境。
3)延緩痛苦:第三種選擇是使用雲資源讓學生立即開始編程,並推遲創建自己的環境。
在我的一堂課中,我們面臨著痛苦; 學生在學習C的同時學習使用UNIX命令行界面。但該班的學生已經知道如何編程,並且他們有現場指導員來幫忙。
對於初學者,特別是獨自工作的人,我建議延緩痛苦。以下是我使用的一些工具:
1)在瀏覽器中運行代碼的互動式教程,如《How To Think Like a Computer Scientist》這本改編書 ;
2)在瀏覽器中運行的整個開發環境,如PythonAnywhere 等等;
3)包含完整開發環境的虛擬機,用戶可以下載並運行(假設它們具有或可以安裝運行虛擬機的軟體)。
4)像Binder這樣的服務在遠程伺服器上運行開發環境,允許用戶使用瀏覽器進行連接。
在我的各種項目中,我使用了所有這些工具。除了互動式版本的「 How To Think...」之外,還有由Trinket改編和託管的Think Java的互動式版本。
在Think Python中,我鼓勵讀者至少在前四章中使用PythonAnywhere,然後提供轉換為本地安裝的說明。
過去我曾為一些課程使用虛擬機,但最近我使用了更多的在線服務,例如 由O"Reilly Media主持的Think DSP的這款筆記本。我所有書籍的存儲庫都設置為在Binder下運行。
這些選擇可幫助人們開始使用,但它們有局限性。遲早,學生會希望或需要在他們自己的計算機上安裝開發環境。但是,如果我們將學習編程與安裝軟體分開來,那麼他們就會更容易成功。
更新:Nick Coghlan提出了第四種選擇,我可以稱之為擁抱未來:也許初學者可以從基於雲的開發環境入手,並一直使用。
譯者介紹:
左燦,四川大學在讀研究生,研究方向為雲計算、虛擬化,對該領域比較感興趣。


※Docker教程:Docker Compose入門
※無伺服器計算將改變關係資料庫的遊戲規則!
TAG:雲技術之家 |