第一門程式語言應該學什麼? – thenewstack

banq發表於2021-07-07

史丹佛和哈佛象牙塔中的教授們已經跟不上計算機發展形勢,但是他們的文憑是敲門磚,這是人類社會系統奇怪特徵,這是來自thenewstack文章,現在有兩種正反觀點,傳統觀點是認為第一門程式語言學習什麼很重要,而另外一種相反觀點認為這不重要,那已經是過去信念了。前一種觀點以史丹佛和哈佛為主要的傳統觀點,而後一種以ACM美國計算機協會的新觀點:
幾十年來,這是一個令教育工作者“著迷”的問題。當學生第一次開始學習電腦科學時——他們應該從哪種程式語言開始?
對此深思熟慮的人是密歇根大學電腦科學教授Mark Guzdial,他也在電腦科學教育領域進行了自己的研究。兩個不同的同事最近表示,首先向 CS 學生教授哪種語言並不重要,這讓他開始思考。
“我有一個假設,當這個領域還很年輕時,這種信念曾經是正確的,”Guzdial 在最近發表在 ACM 通訊上的一篇文章中寫道,ACM 是計算機協會的內部機構。但那是在 1960 年代末期,當時課程剛開始建立是那樣,但是在今天,所有年齡和經驗水平的學生都在學習如何程式設計,他們最終有不同的需求。
 

史丹佛與哈佛
2017 年,史丹佛大學對電腦科學專業的入門計算課程進行了一些更改,從而成為頭條新聞。據史丹佛大學的學生報紙報導,史丹佛大學電腦科學名譽教授埃裡克·羅伯茨 (Eric Roberts) 花了五年時間致力於將課程從 Java 過渡到 JavaScript,他終於建立了該課程的新的基於 JavaScript 的試點版本。(因此該課程被命名為“CS106J”而不是 CS106A。)這一變化包括建立新的教科書和作業,以及培訓新的助教,而羅伯茨本人則退休後教課。
以前,史丹佛大學的入門課程是基於 C 程式語言(在此之前,是 Pascal)。羅伯茨將 JavaScript 譽為“網際網路語言”,早在 2002 年,他就幫助將課程切換到 Java,編寫教科書並與其他教職員工合作重組課程和作業。但 15 年後,他告訴學生報紙,“現在是 2017 年,Java 正在暴露其衰老年齡。”
然而,如果您今天檢視他們的教學大綱,您會發現CS106A現在似乎使用 Python(和 PyCharm IDE),而CS106B 教學大綱表明他們使用的是 C++。
與此同時,哈佛大學自己的介紹性課程 CS50 多年來一直堅持使用多語言方法。在第一週,學生實際上用 Scratch 編寫程式,這是一種基於塊的視覺化程式語言,由麻省理工學院媒體實驗室為教年輕人而開發,然後切換到 C——然後在幾周後再次切換到 Python,然後是 JavaScript。“CS50 不是隻教授一種語言,而是向學生介紹了一系列‘過程’程式語言,每一種都在概念上建立在另一種之上,”課程的官方常見問題解答解釋道
解釋者繼續說道,“最終的目標是讓學生覺得他們不是'學會了如何在 X 中程式設計',而是他們'學會了如何程式設計'。”
 

為什麼要從 C 開始呢
但是為什麼要從 C 開始呢?該課程的講師David J. Malan教授曾在 Quora 上寫道:“在擁有組合語言之前,C 幾乎與計算機硬體非常接近,(我認為這對於介紹性的介紹來說太神秘了。當然像 CS50)。在 C 中,沒有魔法。如果你想把某些東西放在記憶體中的某個地方,你必須自己把它放在那裡。如果你想要一個雜湊表,你必須自己實現它。”
“我認為,在一週內用 C 語言實現一個雜湊表(或特里樹),然後在一週左右後僅用一行 PHP 或 JavaScript 程式碼實現相同的東西,這也是一件強大的事情,”他寫道。此外,C 也是一種相對較小的語言,因此“到學期中期,學生幾乎已經看到了所有內容(例如聯合和函式指標除外)。”
不足之處是啥?馬蘭承認,與使用 Python 或 Java 等高階語言相比,早期建立引人入勝的問題集可能更難。也許更難,“但並非不可能!”
然而,根據ACM Communications 的一篇文章,據報導,到 2014 年,Python 已經成為美國頂級電腦科學課程(包括麻省理工學院和加州大學伯克利分校)的入門課程中最受歡迎的語言。
 

不一定要從學習數學開始
根據英國研究人員的說法,向初學者教授什麼仍然是一個重要的問題。“無法輕鬆掌握程式設計幾乎肯定意味著電腦科學無法取得進步,”他們的論文認為,並指出首先教授哪種語言的問題“自大學開始電腦科學教學以來一直在激烈爭論。”
密歇根大學教授 Guzdial 仍然認為,我們讓學生開始使用哪種語言很重要——但他也希望教育工作者重新審視一個形成性的假設。
在他的 ACM 文章中,他回憶了1979 年的一項研究,該研究認為,一旦學生學習了更廣泛的語義概念,他們就可以將它們應用於任何後續語言(只需要掌握相對容易的語法差異)。但 Guzdial 指出,在那個時代,大多數電腦科學專業的學生都是傳統的大學生——他們可能比文科專業或今天的 K-12 學生擁有更多的數學知識。
因此,早在 1970 年代後期,教育工作者可能高估了切換程式語言的難易程度,因為他們最終只是根據已經瞭解的數學知識教授程式設計,正如 Guzdial 所說,“新的語法只是一種新的數學形式主義。”
但是在今天,如果我們不期望學生首先了解數學,我們則可能能夠教更多的人程式設計。
banq注:教育工作者再不改變僵化教條的觀念,將延緩程式設計邏輯普及的覆蓋面,當然如果要改變教條主義觀點,必須有嚴格的證據證明,但是對於一個不斷在發展的創新複雜系統,哪來那麼多嚴格的證據?即使有了,很可能被否定。

相關文章