自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何選擇教學(xué)語(yǔ)言

開(kāi)發(fā) 前端 后端
如果你正在教授編程課,你該用哪種語(yǔ)言呢?我喜歡這個(gè)問(wèn)題,因?yàn)樗泻芏嗖诲e(cuò)的答案,彼此存在很大差異,不同的方法對(duì)于編程的理解有著不同的思考。

 如果你正在教授編程課,你該用哪種語(yǔ)言呢?

我喜歡這個(gè)問(wèn)題,因?yàn)樗泻芏嗖诲e(cuò)的答案,彼此存在很大差異,不同的方法對(duì)于編程的理解有著不同的思考。

我在普林斯頓大學(xué)上的第一堂正式的編程課是COS 217,由優(yōu)秀老師Anne Rogers講解(當(dāng)時(shí)我覺(jué)得是可怕的)。這個(gè)課程采用C語(yǔ)言,這門課的聰明之處在于從機(jī)器開(kāi)始。我們不只是學(xué)習(xí)C,還學(xué)到了用來(lái)編程的機(jī)器是如何運(yùn)行的。我就是在這里首次接觸到了指令計(jì)數(shù)器、堆棧幀、寄存器和分級(jí)存儲(chǔ),太讓人振奮了。

C鼓勵(lì)你從機(jī)器開(kāi)始,而Scheme【注1】想讓你從計(jì)算的數(shù)學(xué)基礎(chǔ)開(kāi)始。你不需要理解λ演算【注2】,這得益于Scheme的簡(jiǎn)潔核心,你可以在此之上構(gòu)建豐富多彩的計(jì)算世界。其核心具有表現(xiàn)力,足以引入多種不同的語(yǔ)言,包括函數(shù)式語(yǔ)言與命令式語(yǔ)言、面向?qū)ο笳Z(yǔ)言和邏輯程序設(shè)計(jì)。

經(jīng)典課程是MIT的6.001,也就是熟知的SICP,計(jì)算機(jī)程序的構(gòu)造和解釋。悲劇的是,這節(jié)課在MIT網(wǎng)站已經(jīng)下線了,但是這本書還有,即使你多年前已經(jīng)完成了最后的計(jì)算機(jī)科學(xué)課程,它還是值得一讀的。

MIT用基于Python的課程取代了SICP,這體現(xiàn)了一種較廣的趨勢(shì)。根據(jù)Philip Guo的一項(xiàng)非正式研究所強(qiáng)調(diào)的,很多學(xué)?,F(xiàn)在教授Python,尤其是針對(duì)早期的入門課程。我對(duì)這個(gè)選擇有著復(fù)雜的感受。Python是一門非常友好的語(yǔ)言,但是這種友好性也附帶了一些問(wèn)題。

在一定程度上我覺(jué)得是比較明顯的,根據(jù)我的面試經(jīng)歷,應(yīng)聘學(xué)生選擇編碼的語(yǔ)言就是Python。在很多場(chǎng)合,Python是理想的面試語(yǔ)言,因其簡(jiǎn)潔、可讀性強(qiáng)的語(yǔ)法,在空間有限的白板上寫代碼,是完全可以接受的。不過(guò)我看到了,學(xué)習(xí)Python的學(xué)生經(jīng)常搞不清楚這門語(yǔ)言的、相當(dāng)粗略的語(yǔ)義模型。大量用Python編程的部分學(xué)生不能猜到Python的列表(list)是如何被實(shí)現(xiàn)的,更不要說(shuō)他們有能力解釋生成器或裝飾器之類的、語(yǔ)言特性的語(yǔ)義了。

這里真的不是說(shuō)Python不好。畢竟,存在一些偉大的工具,你可以完全不用理解其工作原理就可以把工作搞定。但是用不同的方式,Scheme和C鼓勵(lì)你從底層理解發(fā)生了什么,某種教學(xué)的力量就存在于此??傊瑢?duì)于早期的入門課程,特別是對(duì)于那些不打算最終成為計(jì)算機(jī)科學(xué)家或全職程序員的人來(lái)說(shuō),我認(rèn)為Python是一個(gè)不錯(cuò)的選擇。但是,對(duì)于這種情況之外使用Python,我是持保留態(tài)度的。

就個(gè)人而言, 我感到想當(dāng)被鼓勵(lì)的一個(gè)進(jìn)展就是靜態(tài)類型語(yǔ)言的出現(xiàn),特別是ML語(yǔ)言【注3】做為教學(xué)語(yǔ)言。在過(guò)去的幾年,我非常榮幸地訪問(wèn)了布朗大學(xué)、康奈爾大學(xué)、賓夕法尼亞大學(xué)、卡內(nèi)基梅隆大學(xué)和哈佛等學(xué)校,并發(fā)表演講,這些學(xué)校使用Ocaml和Standard ML兩種方言。

ML語(yǔ)言已經(jīng)具備了優(yōu)秀理由的基礎(chǔ)。首先,它分享了很多Scheme優(yōu)雅的編程思想,即使它的核心不像Scheme那樣有著迷人的簡(jiǎn)約。但是ML比Scheme有更廣的延伸,因?yàn)槟憧梢韵驅(qū)W生展示編程里的類型化角色。盡管有著更廣的延伸,OCaml和SML屬于相對(duì)簡(jiǎn)單的語(yǔ)言,用于教學(xué)而不是日常應(yīng)用,才是最重要的。

我看到很多語(yǔ)言上的選擇,唯一不能讓我自己接受的是Java。當(dāng)然,Java是廣泛使用的業(yè)內(nèi)語(yǔ)言,但不代表它就是一門優(yōu)秀的教學(xué)語(yǔ)言。在我看來(lái),教學(xué)語(yǔ)言的關(guān)鍵要素是簡(jiǎn)潔,我剛才提到的所有其它選擇都有著某種方式的簡(jiǎn)潔:C是機(jī)器之上的最少的層;Scheme和ML是基于計(jì)算的簡(jiǎn)單數(shù)學(xué)模型;Python是易于使用的語(yǔ)言。

從各種角度說(shuō),Java都不簡(jiǎn)潔。尤其不容易入門,你需要告訴學(xué)生,所有細(xì)節(jié)可以忽略而不是理解。(是的,public static void main,我看到了?。┧鼪](méi)有C的簡(jiǎn)單、透明的執(zhí)行模式。像Scheme和ML核心的、優(yōu)雅計(jì)算機(jī)核心演算,是根本看不到的。我能看到Java的唯一真正優(yōu)勢(shì)在于好找工作,好像對(duì)我來(lái)說(shuō)還不能算足夠的論據(jù)。

當(dāng)你考慮挑選一門教學(xué)語(yǔ)言時(shí),你不只是為學(xué)生挑選一些在課堂上編程的指令。你正在挑選一種智力上的思想,學(xué)生將從中看到你教給他們的所有經(jīng)驗(yàn)。你應(yīng)該認(rèn)真地找到這個(gè)思想。

  • 原文地址:https://blogs.janestreet.com/how-to-choose-a-teaching-language/
  • 注1:Scheme是一種函數(shù)式編程語(yǔ)言,是Lisp的兩種主要方言之一(另一種為Common Lisp)。不同于Common Lisp,Scheme遵循極簡(jiǎn)主義哲學(xué),以一個(gè)小型語(yǔ)言核心作為標(biāo)準(zhǔn),加上各種強(qiáng)力語(yǔ)言工具(語(yǔ)法糖)來(lái)擴(kuò)展語(yǔ)言本身。http://zh.wikipedia.org/wiki/Scheme
  • 注2:λ演算(英語(yǔ):lambda calculus,λ-calculus)是一套用于研究函數(shù)定義、函數(shù)應(yīng)用和遞歸的形式系統(tǒng)。http://zh.wikipedia.org/wiki/Λ演算
  • 注3:ML 是一個(gè)通用的函數(shù)式編程語(yǔ)言,它是由愛(ài)丁堡大學(xué)的Robin Milner及他人在二十世紀(jì)七十年代晚期開(kāi)發(fā)的。今天在ML家族中有好幾種語(yǔ)言:兩種主要的方言是Standard ML和Caml,其他的包括F# - 針對(duì)Microsoft .NET平臺(tái)的開(kāi)放研究項(xiàng)目。 ML中的思想影響了眾多的語(yǔ)言,例如Haskell,Cyclone和Nemerle。http://zh.wikipedia.org/wiki/ML語(yǔ)言

原文鏈接:http://www.labazhou.net/2014/11/how-to-choose-a-teaching-language/

責(zé)任編輯:張偉 來(lái)源: 臘八粥
相關(guān)推薦

2018-11-11 15:29:13

大數(shù)據(jù)語(yǔ)言Java

2009-07-28 08:28:15

2010-03-15 15:45:15

Python編程語(yǔ)言

2013-04-19 10:40:03

2009-02-27 09:25:28

編程語(yǔ)言程序員C#

2022-02-21 11:15:59

編程語(yǔ)言后端開(kāi)發(fā)

2020-12-18 07:41:01

碼農(nóng)編程語(yǔ)言

2024-09-13 12:33:57

2015-03-16 09:18:53

2009-03-02 09:40:13

程序員程序語(yǔ)言開(kāi)發(fā)

2014-08-18 10:58:20

編程語(yǔ)言編程書籍

2021-08-10 19:15:17

語(yǔ)言編程應(yīng)用

2020-04-15 10:50:19

編程語(yǔ)言工具技術(shù)

2020-11-14 15:49:40

編程語(yǔ)言C語(yǔ)言Java

2018-08-21 13:50:05

編程語(yǔ)言JavaPython

2012-06-12 09:15:50

開(kāi)發(fā)語(yǔ)言

2015-11-12 10:25:48

編程語(yǔ)言

2015-11-11 10:01:42

編程語(yǔ)言選擇

2012-06-14 10:06:43

創(chuàng)業(yè)動(dòng)態(tài)語(yǔ)言靜態(tài)語(yǔ)言

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)