新聞中心
如果你正在教授編程課,你該用哪種語言呢?

成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站設計、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元清徐做網(wǎng)站,已為上家服務,為清徐各地企業(yè)和個人服務,聯(lián)系電話:13518219792
我喜歡這個問題,因為它有很多不錯的答案,彼此存在很大差異,不同的方法對于編程的理解有著不同的思考。
我在普林斯頓大學上的第一堂正式的編程課是COS 217,由優(yōu)秀老師Anne Rogers講解(當時我覺得是可怕的)。這個課程采用C語言,這門課的聰明之處在于從機器開始。我們不只是學習C,還學到了用來編程的機器是如何運行的。我就是在這里首次接觸到了指令計數(shù)器、堆棧幀、寄存器和分級存儲,太讓人振奮了。
C鼓勵你從機器開始,而Scheme【注1】想讓你從計算的數(shù)學基礎開始。你不需要理解λ演算【注2】,這得益于Scheme的簡潔核心,你可以在此之上構(gòu)建豐富多彩的計算世界。其核心具有表現(xiàn)力,足以引入多種不同的語言,包括函數(shù)式語言與命令式語言、面向?qū)ο笳Z言和邏輯程序設計。
經(jīng)典課程是MIT的6.001,也就是熟知的SICP,計算機程序的構(gòu)造和解釋。悲劇的是,這節(jié)課在MIT網(wǎng)站已經(jīng)下線了,但是這本書還有,即使你多年前已經(jīng)完成了最后的計算機科學課程,它還是值得一讀的。
MIT用基于Python的課程取代了SICP,這體現(xiàn)了一種較廣的趨勢。根據(jù)Philip Guo的一項非正式研究所強調(diào)的,很多學校現(xiàn)在教授Python,尤其是針對早期的入門課程。我對這個選擇有著復雜的感受。Python是一門非常友好的語言,但是這種友好性也附帶了一些問題。
在一定程度上我覺得是比較明顯的,根據(jù)我的面試經(jīng)歷,應聘學生選擇編碼的語言就是Python。在很多場合,Python是理想的面試語言,因其簡潔、可讀性強的語法,在空間有限的白板上寫代碼,是完全可以接受的。不過我看到了,學習Python的學生經(jīng)常搞不清楚這門語言的、相當粗略的語義模型。大量用Python編程的部分學生不能猜到Python的列表(list)是如何被實現(xiàn)的,更不要說他們有能力解釋生成器或裝飾器之類的、語言特性的語義了。
這里真的不是說Python不好。畢竟,存在一些偉大的工具,你可以完全不用理解其工作原理就可以把工作搞定。但是用不同的方式,Scheme和C鼓勵你從底層理解發(fā)生了什么,某種教學的力量就存在于此??傊?,對于早期的入門課程,特別是對于那些不打算最終成為計算機科學家或全職程序員的人來說,我認為Python是一個不錯的選擇。但是,對于這種情況之外使用Python,我是持保留態(tài)度的。
就個人而言, 我感到想當被鼓勵的一個進展就是靜態(tài)類型語言的出現(xiàn),特別是ML語言【注3】做為教學語言。在過去的幾年,我非常榮幸地訪問了布朗大學、康奈爾大學、賓夕法尼亞大學、卡內(nèi)基梅隆大學和哈佛等學校,并發(fā)表演講,這些學校使用Ocaml和Standard ML兩種方言。
ML語言已經(jīng)具備了優(yōu)秀理由的基礎。首先,它分享了很多Scheme優(yōu)雅的編程思想,即使它的核心不像Scheme那樣有著迷人的簡約。但是ML比Scheme有更廣的延伸,因為你可以向?qū)W生展示編程里的類型化角色。盡管有著更廣的延伸,OCaml和SML屬于相對簡單的語言,用于教學而不是日常應用,才是最重要的。
我看到很多語言上的選擇,唯一不能讓我自己接受的是Java。當然,Java是廣泛使用的業(yè)內(nèi)語言,但不代表它就是一門優(yōu)秀的教學語言。在我看來,教學語言的關鍵要素是簡潔,我剛才提到的所有其它選擇都有著某種方式的簡潔:C是機器之上的最少的層;Scheme和ML是基于計算的簡單數(shù)學模型;Python是易于使用的語言。
從各種角度說,Java都不簡潔。尤其不容易入門,你需要告訴學生,所有細節(jié)可以忽略而不是理解。(是的,public static void main,我看到了!)它沒有C的簡單、透明的執(zhí)行模式。像Scheme和ML核心的、優(yōu)雅計算機核心演算,是根本看不到的。我能看到Java的唯一真正優(yōu)勢在于好找工作,好像對我來說還不能算足夠的論據(jù)。
當你考慮挑選一門教學語言時,你不只是為學生挑選一些在課堂上編程的指令。你正在挑選一種智力上的思想,學生將從中看到你教給他們的所有經(jīng)驗。你應該認真地找到這個思想。
- 原文地址:https://blogs.janestreet.com/how-to-choose-a-teaching-language/
- 注1:Scheme是一種函數(shù)式編程語言,是Lisp的兩種主要方言之一(另一種為Common Lisp)。不同于Common Lisp,Scheme遵循極簡主義哲學,以一個小型語言核心作為標準,加上各種強力語言工具(語法糖)來擴展語言本身。http://zh.wikipedia.org/wiki/Scheme
- 注2:λ演算(英語:lambda calculus,λ-calculus)是一套用于研究函數(shù)定義、函數(shù)應用和遞歸的形式系統(tǒng)。http://zh.wikipedia.org/wiki/Λ演算
- 注3:ML 是一個通用的函數(shù)式編程語言,它是由愛丁堡大學的Robin Milner及他人在二十世紀七十年代晚期開發(fā)的。今天在ML家族中有好幾種語言:兩種主要的方言是Standard ML和Caml,其他的包括F# - 針對Microsoft .NET平臺的開放研究項目。 ML中的思想影響了眾多的語言,例如Haskell,Cyclone和Nemerle。http://zh.wikipedia.org/wiki/ML語言
原文鏈接:http://www.labazhou.net/2014/11/how-to-choose-a-teaching-language/
網(wǎng)站名稱:如何選擇教學語言
網(wǎng)站路徑:http://www.dlmjj.cn/article/djesdid.html


咨詢
建站咨詢
