<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          學(xué)生的第一門編程語言應(yīng)該是什么?

          共 2599字,需瀏覽 6分鐘

           ·

          2021-07-08 04:27

          “學(xué)生第一次開始學(xué)習(xí)計算機科學(xué)(computer science,CS)時,應(yīng)該從哪種編程語言開始學(xué)習(xí)?”這一問題一直讓教育工作者備受困擾。來自密歇根大學(xué)的計算機科學(xué)教授 Mark Guzdial 也對此進行了大量思考與研究,然而其近期發(fā)表在《ACM 通訊》上的一篇文章則指出,他的兩個來自不同學(xué)校的 CS 同事都認為,學(xué)生的第一門課程學(xué)習(xí)何種編程語言并不重要,重要的是 CS 的學(xué)習(xí)成果。因為如果學(xué)生很好地學(xué)習(xí)了這些概念,那么他們接下來就可以簡單地將其應(yīng)用到任何要學(xué)習(xí)的語言當(dāng)中。

          對此,Guzdial 則在文中指出,當(dāng)這個領(lǐng)域還處于比較早期的階段的時候,這種想法或許是正確的。但那是在 20 世紀 60 年代末,課程剛剛建立的時候;而今天,所有不同年齡段和經(jīng)驗水平的學(xué)生都在學(xué)習(xí)如何編程,且他們最終都有著不同的需求。

          對于這一問題,不同的大學(xué)也仍然有不同的答案,這從某種程度反映了他們的教學(xué)理念和看法。THENEWSTACK 指出,斯坦福大學(xué)在 2017 年就曾因其計算機科學(xué)專業(yè)的入門計算課程的一些變化引起了強烈的反響。

          斯坦福大學(xué)的學(xué)生報紙報道稱,斯坦福大學(xué)計算機科學(xué)榮譽教授 Eric Roberts 花了五年時間致力于將該課程從 Java 過渡到 JavaScript,并最終創(chuàng)建了該課程基于 JavaScript 的新試驗版本。因此,該課程被命名為 CS106J,而不是 CS106A。這一變化涉及到創(chuàng)建新的教科書和作業(yè)、以及培訓(xùn)新的助教,Roberts 本人也從退休狀態(tài)中走出來教授該課。

          此前,斯坦福大學(xué)的入門課程一直是基于 C 語言編程的(更早之前是 Pascal 語言)。然而在 2002 年,Roberts 通過編寫教科書、并與其他教師合作重組課程和作業(yè),幫助學(xué)校將課程轉(zhuǎn)向了 Java。根據(jù) Roberts 的說法,Java 很早就被設(shè)計為“互聯(lián)網(wǎng)語言”。但在過渡到 Java 十多年后,他又認為,Javascript 已經(jīng)取代了 Java 作為網(wǎng)絡(luò)語言的地位。

          現(xiàn)在,再次查看斯坦福大學(xué)的教學(xué)大綱,你會發(fā)現(xiàn) CS106A 似乎正在使用 Python(和 PyCharm IDE),而 CS106B 的教學(xué)大綱則表明他們正在使用 C++。

          與此同時,哈佛大學(xué)自己的入門課程 CS50 多年來則一直堅持使用多語言方法。在第一周,學(xué)生們采用 Scratch 編寫程序,之后切換到 C 語言;接著在后面幾周再次切換到 Python,再然后是 JavaScript。該課程的官方 FAQ 解釋稱,"CS50 不是只教一種語言,而是向?qū)W生介紹一系列'程序性'編程語言,每一種都是在概念上建立的。最終的目標(biāo)是讓學(xué)生覺得他們不是'學(xué)會了如何在 X 中編程',而是他們'學(xué)會了如何編程'。"

          至于為什么要從 C 語言開始,該課程的講師 David J. Malan 教授則認為,學(xué)習(xí) C 語言的幾周讓學(xué)生有機會了解所有編程語言的一些基本構(gòu)件,同時也提供了解釋緩沖區(qū)溢出這一關(guān)鍵安全概念的機會。

          "我認為在一周時間內(nèi)用 C 語言實現(xiàn)一個哈希表(或 trie),然后在一周左右后僅用一行 PHP 或 JavaScript 代碼就能實現(xiàn)同樣的內(nèi)容,這也是一件很強大的事情"。此外,C 語言也是一種相對較小的語言,所以 "到了學(xué)期中期,學(xué)生們幾乎已經(jīng)了了解到了所有的東西(除了 unions 和函數(shù)指針)。"

          不過,ACM Communications 的一篇文章指出,截至 2014 年,Python 已經(jīng)成為美國頂級計算機科學(xué)課程(包括麻省理工學(xué)院和加州大學(xué)伯克利分校)的入門課程中最受歡迎的語言。具體來說,排名前 10 位的 CS 系中有 8 個(80%),排名前 39 的系中有 27個(69%)在 CS0 或 CS1 的入門課程中教授Python。Java 緊隨 Python 之后,其次分別是 MATLAB、C、C++,然后是 Scheme 和 Scratch。

          2016 年,三位英國研究人員進行的一項調(diào)查則指出,在英國大學(xué)中,使用 Java 的課程是 Python 的兩倍多?!氨M管事實上,相同的受訪者認為 Python 更容易教學(xué)和學(xué)習(xí)”。對此,研究人員引用的一個可能的解釋是:由社區(qū)指數(shù)衡量的長期的行業(yè)流行。

          而溫斯頓-塞勒姆州立大學(xué)的三位研究人員在 2019 年為 ACM 的計算機科學(xué)教育小組撰寫的一篇論文中甚至認為,每個計算機科學(xué)學(xué)生也應(yīng)該掌握大數(shù)據(jù)和云計算的基礎(chǔ)知識,并擁有一些在云中部署和管理大數(shù)據(jù)應(yīng)用程序的實踐經(jīng)驗。還提出,與其單獨開設(shè)云計算課程,不如將這些材料整合到多個本科計算機科學(xué)課程中。

          根據(jù)英國研究人員的說法,向初級程序員教授什么仍然是一個重要問題。他們的論文認為,不能輕易掌握編程幾乎肯定意味著不能在計算機科學(xué)領(lǐng)域取得進展。并指出,因此自從大學(xué)開始進行計算機科學(xué)教學(xué)以來,先教哪種語言的問題一直存在著激烈的爭議。

          密歇根大學(xué)教授 Guzdial 則仍然認為,學(xué)生從哪種語言開始學(xué)習(xí)是很重要,但他也希望教育工作者重新審視一個形成性假設(shè)。他在自己的 ACM 文章中回顧了 1979 年的一項研究,該研究認為,一旦學(xué)生學(xué)會了更廣泛的語義概念,他們就可以將其應(yīng)用于任何后續(xù)語言(只需要掌握相對容易的語法差異)。

          但是 Guzdial 指出,在那個時代,大多數(shù)計算機科學(xué)的學(xué)生都是傳統(tǒng)的大學(xué)生。早期進入計算機科學(xué)的學(xué)生通常比今天學(xué)習(xí)編碼的普通學(xué)生具有更強的數(shù)學(xué)背景。因此,早在 20 世紀 70 年代末,教育工作者可能高估了轉(zhuǎn)換編程語言的難度,因為他們最終只是在已經(jīng)理解的數(shù)學(xué)基礎(chǔ)上教授編程。

          Guzdial 認為,如果我們根據(jù)學(xué)生已經(jīng)知道的數(shù)學(xué)來教授編程語言的語義,那么新的語法只是一種新的數(shù)學(xué)形式主義。我們沒有必要讓編程與數(shù)學(xué)有關(guān),如果我們不期望學(xué)生首先了解數(shù)學(xué),也許早在 40 多年前就能期望更多的人學(xué)習(xí)編程。


          Java幫幫

          非盈利學(xué)習(xí)社區(qū)

          官網(wǎng):www.javahelp.com.cn


          職業(yè)司

          職業(yè)司學(xué)習(xí)交流互動開放社區(qū)

          官網(wǎng):zhiyesi.com



          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美特黄一区二区三区 | 国产午夜在线 | 日韩毛片观看 | a在线视频中文字幕 | 91社区视频 |