成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何選擇教學語言

開發 前端 后端
如果你正在教授編程課,你該用哪種語言呢?我喜歡這個問題,因為它有很多不錯的答案,彼此存在很大差異,不同的方法對于編程的理解有著不同的思考。

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

我喜歡這個問題,因為它有很多不錯的答案,彼此存在很大差異,不同的方法對于編程的理解有著不同的思考。

我在普林斯頓大學上的第一堂正式的編程課是COS 217,由優秀老師Anne Rogers講解(當時我覺得是可怕的)。這個課程采用C語言,這門課的聰明之處在于從機器開始。我們不只是學習C,還學到了用來編程的機器是如何運行的。我就是在這里首次接觸到了指令計數器、堆棧幀、寄存器和分級存儲,太讓人振奮了。

C鼓勵你從機器開始,而Scheme【注1】想讓你從計算的數學基礎開始。你不需要理解λ演算【注2】,這得益于Scheme的簡潔核心,你可以在此之上構建豐富多彩的計算世界。其核心具有表現力,足以引入多種不同的語言,包括函數式語言與命令式語言、面向對象語言和邏輯程序設計。

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

MIT用基于Python的課程取代了SICP,這體現了一種較廣的趨勢。根據Philip Guo的一項非正式研究所強調的,很多學校現在教授Python,尤其是針對早期的入門課程。我對這個選擇有著復雜的感受。Python是一門非常友好的語言,但是這種友好性也附帶了一些問題。

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

這里真的不是說Python不好。畢竟,存在一些偉大的工具,你可以完全不用理解其工作原理就可以把工作搞定。但是用不同的方式,Scheme和C鼓勵你從底層理解發生了什么,某種教學的力量就存在于此。總之,對于早期的入門課程,特別是對于那些不打算最終成為計算機科學家或全職程序員的人來說,我認為Python是一個不錯的選擇。但是,對于這種情況之外使用Python,我是持保留態度的。

就個人而言, 我感到想當被鼓勵的一個進展就是靜態類型語言的出現,特別是ML語言【注3】做為教學語言。在過去的幾年,我非常榮幸地訪問了布朗大學、康奈爾大學、賓夕法尼亞大學、卡內基梅隆大學和哈佛等學校,并發表演講,這些學校使用Ocaml和Standard ML兩種方言。

ML語言已經具備了優秀理由的基礎。首先,它分享了很多Scheme優雅的編程思想,即使它的核心不像Scheme那樣有著迷人的簡約。但是ML比Scheme有更廣的延伸,因為你可以向學生展示編程里的類型化角色。盡管有著更廣的延伸,OCaml和SML屬于相對簡單的語言,用于教學而不是日常應用,才是最重要的。

我看到很多語言上的選擇,唯一不能讓我自己接受的是Java。當然,Java是廣泛使用的業內語言,但不代表它就是一門優秀的教學語言。在我看來,教學語言的關鍵要素是簡潔,我剛才提到的所有其它選擇都有著某種方式的簡潔:C是機器之上的最少的層;Scheme和ML是基于計算的簡單數學模型;Python是易于使用的語言。

從各種角度說,Java都不簡潔。尤其不容易入門,你需要告訴學生,所有細節可以忽略而不是理解。(是的,public static void main,我看到了!)它沒有C的簡單、透明的執行模式。像Scheme和ML核心的、優雅計算機核心演算,是根本看不到的。我能看到Java的唯一真正優勢在于好找工作,好像對我來說還不能算足夠的論據。

當你考慮挑選一門教學語言時,你不只是為學生挑選一些在課堂上編程的指令。你正在挑選一種智力上的思想,學生將從中看到你教給他們的所有經驗。你應該認真地找到這個思想。

  • 原文地址:https://blogs.janestreet.com/how-to-choose-a-teaching-language/
  • 注1:Scheme是一種函數式編程語言,是Lisp的兩種主要方言之一(另一種為Common Lisp)。不同于Common Lisp,Scheme遵循極簡主義哲學,以一個小型語言核心作為標準,加上各種強力語言工具(語法糖)來擴展語言本身。http://zh.wikipedia.org/wiki/Scheme
  • 注2:λ演算(英語:lambda calculus,λ-calculus)是一套用于研究函數定義、函數應用和遞歸的形式系統。http://zh.wikipedia.org/wiki/Λ演算
  • 注3:ML 是一個通用的函數式編程語言,它是由愛丁堡大學的Robin Milner及他人在二十世紀七十年代晚期開發的。今天在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/

責任編輯:張偉 來源: 臘八粥
相關推薦

2018-11-11 15:29:13

大數據語言Java

2009-07-28 08:28:15

2010-03-15 15:45:15

Python編程語言

2013-04-19 10:40:03

2009-02-27 09:25:28

編程語言程序員C#

2022-02-21 11:15:59

編程語言后端開發

2020-12-18 07:41:01

碼農編程語言

2024-09-13 12:33:57

2015-03-16 09:18:53

2009-03-02 09:40:13

程序員程序語言開發

2021-08-10 19:15:17

語言編程應用

2014-08-18 10:58:20

編程語言編程書籍

2020-04-15 10:50:19

編程語言工具技術

2020-11-14 15:49:40

編程語言C語言Java

2018-08-21 13:50:05

編程語言JavaPython

2012-06-12 09:15:50

開發語言

2022-09-15 00:08:46

密碼安全身份驗證

2023-07-21 12:13:50

綜合布線數據中心

2015-11-12 10:25:48

編程語言

2022-11-29 07:14:56

NLP語言模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久黄 | 蜜桃视频在线观看免费视频网站www | 91视频观看 | 91香蕉| 天天插天天搞 | 午夜视频在线 | 91精品久久久久久久久中文字幕 | 影音先锋欧美资源 | 欧美视频在线观看 | 成人免费视屏 | 亚洲www啪成人一区二区 | 一区二区三区四区在线 | 国产精品黄色 | 久草综合在线视频 | 久久精品国产亚洲一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 欧美亚洲国产一区二区三区 | 午夜一级大片 | 午夜私人影院 | 国产在线观看av | 欧美日韩专区 | 中文字幕在线观看第一页 | 99视频在线播放 | 精品国产乱码久久久久久果冻传媒 | 天天影视亚洲综合网 | 日本黄色片免费在线观看 | 97av视频在线 | 久久精品一区 | 98久久| 日韩欧美国产综合 | 操操网站 | 中文字幕av一区 | 精品乱人伦一区二区三区 | 一区二区三区电影在线观看 | 国产精品免费观看 | 国产成人午夜精品影院游乐网 | 福利网址| 亚洲免费精品 | 国产午夜久久 | 欧美炮房 | 欧美综合在线视频 |