教育编程语言(转)
這是wikipedia上的內容,轉載保存,以便以后查閱,英文版見Educational programming language
主要是介紹了一些適合于教育的編程語言,分別適合于不同的個人需求。
?
詳細內容如下:
?
許多教育性質的程序設計語言都提供建議的學習順序,即是學習一組編程語言的順序,每種語言都建立在其他語言的基礎上,使得學生能夠完成從簡單又易于理解的娛樂性編程環境到專業開發環境的轉變。
下面是一些著名的程序設計語言。
基于Smalltalk/Squeak
作為“OLPC(One Laptop per Child,每個孩子都有一臺電腦)”項目的一部分,Smalltalk提出一個建議的語言學習順序,其中的每種語言都被設計成下一種的入門和基礎。這個 順序是:Scrath->Etoys->Squeak->任意Smalltalk。在學習的過程中,每一種語言都提供了圖形化的編程環 境,不僅是用于教會孩子們一些編程的概念,而且是包含物理和數學知識的模擬及講述故事的一些練習。Smalltakl和Squeak作為全功能的應用程序 開發語言,在過去的數十年中已經變得十分有名了,而Scratch是孩子們學習的工具。
Scratch是一種基于Squeak、并由Squeak實現的可視化程序設計語言。通過讓孩子們創建游戲,視頻和音樂,達到教會孩子們一些編程概 念的目的。在Scratch中,所有的互動物體,圖形和聲音都能夠很輕松的導入到新的程序,通過新的方式將其組合,通過這種方法,初學者能夠很快的看到結 果,并且有興趣深入學習下去。在Scratch社區中,已經開發和上傳了超過100,000個工程項目。Scratch是由MIT多媒體實驗室開發的。
Etoys的創意來源計算機屏幕上那些可編程的實體。Etoys提供一個簡單高效的腳本對象模型,和一個用戶媒體豐富的創作環境,涵蓋了2D和3D 圖形,圖片,文本,粒子,演示文檔,網頁,視頻,聲音和MIDI音樂,能夠與其他Etoys用戶實時共享桌面,通過互聯網進行身臨其境的指導。Etoys 是多語言的,已經在美國,歐洲,南美,日本,韓國,尼泊爾等地取得了成功。這個項目是針對9至12歲的兒童的。
Squeak是一個現代的,開源的,功能齊全的Smalltalk程序設計語言和執行環境。Smalltalk是一個面向對象,擁有動態類型和反射 特性的程序設計語言,用來支持“人機共棲”這個“新的世界”的計算典范。像Lisp一樣,它有影像式持久性(image-based persistence),所以通過語言本身能對所以任何事物進行修改(參見Smalltalk#反射)。Smalltalk在面向對象編程和JIT及時 編譯等方面給行業帶來了深遠的影響。Squeak是在廣泛開發項目中使用的工具,包括多媒體應用,教育平臺和商業網絡應用程序等。Squeak被設計為高 度可移植的,調試,分析和維護亦是如此,這是因為Squeak的虛擬機完全用Smalltalk編寫的,Squeak的主頁維護著免費的教程列 表,Stéphane Ducasse則維持著大量Smalltalk和Squeak相關的在線書籍。現如今使用最廣泛的,采納了許多Smalltalk的設想的語言是 Objective-C。
基于Java
Sun公司推薦的學習順序是:Greenfoot->BlueJ->Netbeans/BlueJ->Netbeans/Java。
Greenfoot是一個交互式Java開發環境,主要目的是用于教育。它可以很容易的開發2D圖形應用程序,例如一些模擬和互動游戲。主要是針對于高中和大學早期階段的編程學習(Java的面向對象編程)。
BlueJ是一個完整的Java環境,是特別為課程導入教學,一年級的大學生設計的。BlueJ消除了一些復雜的Java語法,難以理解的輸入輸出 (I/O),并且可視化的表示出了類/對象之間的關系。BlueJ編程環境是關于教授初學者面向對象概念的大學研究項目(The Blue System)的一部分。BlueJ目的是為一年級的大學生提供一個易于使用、便于教學的Java環境,特別強調了可視化與互動技術,旨在創造出一個高度 互動的環境,鼓勵試驗和探索。
NetBeans/BlueJ是一個集成開發環境,旨在幫助學生從BlueJ的IDE過渡到更專業的NetBeans IDE。Sun提供了針對高中教學和使用Java/BlueJ免費課程。
NetBeans/Java是一個專業的開發平臺。NetBeans既是一個網絡應用程序開發平臺,同時也是使用NetBeans平臺的IDE(集 成開發環境)。NetBeans Platform是能夠簡化桌面應用程序開發的可復用性框架,提供了開發桌面應用程序所需的共通服務,使得開發者能夠把重點放在實現應用程序的業務邏輯 上。NetBeans IDE是完全使用Java編寫,基于NetBeans Platform的集成開發環境。NetBeans IDE與眾不同的支持所有類型的Java應用程序開發(Java SE,Web,EJB和移動應用程序)。其他的特性還包括使用基于Ant的工程系統,版本控制和重構。
基于Lisp
Lisp是現如今使用的計算機語言家族中第二古老的語言,因此擁有大量的方言以及廣泛的實現。Lisp最初是作為計算機程序的實用數學記法而創立 的,基于λ演算,這使得它特別適合于理論計算的教學。作為最早的程序設計語言之一,Lisp開創了許多計算機科學概念的先河,包括樹形數據結構、自動存儲 管理、動態類型、面向對象編程、自足執行的編譯器(self-hosting compiler)。這些概念對于學習計算機科學而言是十分有幫助的。
LISP語言的名字來源于“LIST Processing language(列表處理語言)”。 鏈表是Lisp中最主要的數據結構之一,Lisp本身代碼就是由鏈表構成的。因此,Lisp程序能夠將源代碼當作某種數據結構來進行操作,這就允許程序員 創建新的語法,甚至是能夠把新的特定領域的語言嵌入到Lisp。所以Lisp對于學習語言的設計,創建自定義語言是相當有用的。
合理的學習順序是:Logo->Scheme/newLisp(教育版變體)->Common Lisp(職業版變體)
Logo是特別為孩子們設計的入門程序設計語言。學習Logo的第一步是認識“turtle graphics”(龜狀圖形,最早可以追溯到1969年,proto-Lisp中的“turtle robots”)。在現代的Lisp實現中,有一個叫“turtle”的抽象繪圖設備,專門用來繪制龜狀圖形,是為了吸引孩子們進行編程。Seymour Papert,Logo語言的發明者,是構造論的支持者,構造論是多種構成主義的學習理論。Papert認為像寫作之類的活動,會在早期接受計算文化過程 中自然而然的學會。所以Logo設計的初衷不僅僅是為了教會孩子們編程和計算文化中的一些概念,而是為了增強孩子們對日益以科技為主導的文化的適應。“比 開始較早進行智力教育更為重要的是,這能夠使孩子們避免學習中形成的長期依賴,即學習的東西都是由所謂權威的人提出的…而這樣的小孩無法給自己準確的定 位,或者讓社會覺得他們是在智力上是無助的”。通過在3歲左右的孩子進行實驗,對他們30年的跟蹤記錄發現,大多數都取得了教育上的成功。Logo實際上 是一個Lisp的線性版本,對于高年級的學生而言,Logo能夠用來解釋計算機甚至是人工智能中的一些概念。Brian Harvey寫過一系列的文章“Computer Science Logo Style”,對那些通過Logo學習計算機科學的學生而言是很有幫助的。Logo目前已廣泛應用于各種平臺,同時提供了免費版和商業版。
Scheme最初是在1975年出于教學目的而設計的語言(參加[9] LISPs of the day used non-recursivecontrol structures to implement lambda calculus以非遞歸的控制結構實施λ演算),這主要是因為Lisp仍然在硬件實現具有高效率。Guy L.Steele,Jr和Gerald Jay Sussman創造出了Scheme,通過使用簡潔高效的Lisp過程調用,使得Scheme成為最快的解釋型語言之一。從語言教學上來講,可以通過以 domain-specific languages(DSL,特定領域語言)和MetacircularEvaluator(元循環計算)的方式來進行。1984年出版的 《Structure and Interpretation of Computer Programs》(《計算機程序的構造和解釋》)將這種教育理念納入了經典的教學課本中,從而改變了Pascal在大學程序設計語言中的優勢地位。
“Abelson和Sussman在1984年出版的《Structure and Interpretation of Computer Programs》(SICP),給上世紀八十年代的計算機課程設計帶來了徹底性的改變。更為重要的是,SICP打破了語法入門課程的壟斷,不再是將課程 的組織僅僅圍繞某個當前流行的程序設計語言的語法,而是將學習計算科學的重點放在了:functional abstraction(函數抽象), data abstraction(數據抽象), streams(流), data-directed programming(數據導向編程), implementation of message-passingobjects(消息傳遞對象的實現), interpreters(解釋器), compilers(編譯器), and register machines(寄存器機器)。”
短時間內,美國以及世界各地的很多大學把第一門計算機科學課程改成了SICP和Scheme。而SICP也成了MIT Press最為暢銷的圖書之一。和SCIP一起,Scheme也廣泛應用,不僅僅是印第安納大學,MIT,耶魯大學的開設的少數課程,而是成為世界性入門 語言的選擇。
自那以后,Scheme社區為低年級課程提供了一些定制的教育編程環境。其中有PLT Scheme和DrScheme環境,還提供了免費的教師培訓教材:How to Design Programs 和TeachScheme!。
- newLISP旨在提供一個磁盤占用和系統資源使用少的,快速的,強大的,跨平臺的,全功能腳本版的Lisp程序設計語言。因為它的簡單,一致,線性的特點,特別適合于初學者。newLisp能夠最大限度的減少學習的曲線并且帶給程序員更多的創造性和快樂。
- CommonLisp 是通用的(專業的),多泛型程序設計語言。它支持過程式、函數式和面向對象的編程范式。作為一個動態程序設計語言,CommonLisp促進了迭代編譯向 高效運行時程序的快速發展。CommonLisp和大部分其他程序設計語言不同,它使用S-expressions(S表達式)來表示代碼和數據結構,而 函數和宏調用是用鏈表實現的。通過Lisp的標準化統一各種Lisp的變體已經提上了日程,這不是一個特定的實現而是一個語言規范。現在有幾種 CommonLisp的標準實現,包括商業產品和開源軟件 。
BASIC
- Basic是在1964年為那些非科學專業學生使用計算機而發明的程序語言。在20世紀60年代在小型機上非常流行,進而在20世紀70年代 末,80年代出成為微機的標準計算語言。Basic目的是滿足簡單學習編程的需要:初學者很容易上手,是交互的,提供明確和友好的錯誤信息,反應迅速,并 不需要多少對計算機硬件或操作系統的了解。短小的程序使得Basic特別適合于教學用途,你可以通過不到十行的代碼就能闡述清楚出一個概念。而且 Basic并不需要對數學或者是計算機科學有多少精通的了解。Basic作為一個延續到今日的語言,擁有許多很好的自學教程和實現。參見完整的Basic 方言列表。Basic提供的建議學習順序是:以Basic為基礎的,如微軟的Small Basic,Basic-256和SiMPLE到全功能的Basic,如Visual Basic .NET或Gambas。
- Visual Basic .NET可以通過Visual Basic Express版本獲取,其中包括K-12 learning center (K-12學習中心)和Beginner adult learning center(成人初學者中心)。
- 微軟Small Basic作為一個入門程序設計語言,是Visual Basic的簡化版本。“旨在把‘樂趣’帶回到編程中”。Small Basic實在是小,只有15個關鍵字,并且每個都自然好懂。Small Basic提供特別的對象函數庫,包括使人普遍感興趣和孩子們感興趣的東西(例如Flickr)。孩子們能夠在線或在本地創建有趣的交互程序。Small Basic利用了微軟的Visual Studio IDE提供的自動完成和上下文相關的幫助。
- Gambas 是一個免費提供、易于使用的Linux版本。
- BASIC-256[5]是易于使用的Basic版本,設計用于教會孩子們計算機編程的基礎知識。它使用了傳統的Basic控制結構(go sub, for loops,goto),這便于孩子們理解程序流程的控制。Basic-256提供了一個內置的繪圖模式,允許在屏幕上繪畫。Basic-256還提供了 教程,通過有趣的練習來介紹編程的概念。
- SiMPLE是一種編程開發系統,是為了提供給普通人簡單的編程能力,尤其是非專業人士。SiMPLE依稀讓人想起了AppleSoft的 Basic。SiMPLE是一個編譯式的語言。此外,SiMPLE允許用戶將經常使用的功能創建為函數庫。SiMPLE是三種略微不同語言的通 稱:Micro-SiMPLE(只有4個關鍵字)、Pro-SiMPLE、Ultra- SiMPLE(23個關鍵字)。
兒童
- AgentSheet是屢獲大獎的游戲和仿真制作工具,它可以簡單到讓中學生通過制作視頻游戲來學習計算機知識,也可以復雜到讓NASA的科學家 來模擬航天飛機的有效負荷。AgentSheet是由一個叫做Scalable Game Design(可擴展的游戲設計)的完整課程提供支持的,它從簡單的像青蛙一樣(Frogger-like)的游戲一直到復雜的人工智能仿真游戲。 AgentSheet支持游戲(動畫,交互,聲音,語音合成/識別(Mac)),科學應用程序(繪圖,輸出到電子表格,3D繪圖(Mac))。 AgentSheet有英語,希臘語和日語版本。Lego Mindstorms以AgentSheets為基礎,開發了LegoSheets程序設計語言,比Brick Logo的學習曲線要平緩的多。
- Alice是一個免費的編程軟件,旨在教會孩子們事件驅動的面向對象編程。編程者可以使用現代IDE,以拖拽的方式創建交互式的故事程序。 Alice目標群體是大多數中學階段的有計算機使用經驗的女生,可謂寓教于樂。還有一個叫Story Telling Alice的Alice的變體,能夠提供更強的講故事能力。
- Baltie是圖形化的編程工具,適合兒童,青少年(成人)。Baltie是軟件中一個主要的角色,一個巫師,用來執行各種命令、將出現在他視野 的圖片變魔術。通過Baltie的幫助,孩子們能夠很快認識到什么是計算機,如何對計算機進行操作和編程,這些都是在玩的過程中實現的。Baltie同樣 能夠幫助邏輯思維訓練,而且對孩子們的知識并沒有多少要求,只要求會玩和想象力。Baltie已經在許多國家的小學中采用了。新版本的Baltie 4甚至完全支持C#,更多的信息可以在SGP Systems中找到。
- Guido van Robot是一個機器人控制程序,有點類似于Logo和Karel J. Robot,使用了Python語法中的很少一部分。Guido van Robot被設計成對任何高級語言都盡量簡化和通用。還有一個叫RUR-PLE的變體,它包括了完整的Python語法和一些經典的課程。
- Karel,Karel++,和Karel J.Robot是為那些完全的初學者而準備的。用來在一個由長方形街道網格組成的城市中控制一個簡單機器人。Karel是一個自主的程序設計語言,而 Karel++是Karel的C++實現,Karel J. Robot則是Karel的Java實現。
- Learn to Program BASIC是一個通過互動課程教會中學生Basic的Basic解釋程序,在Basic語言中加入了一些的游戲,包括對2D sprite支持。在LTPB中編寫的程序能夠脫離LTPB獨立執行,即是一個可以自由分發的“runner”。
- Lego Mindstorms(樂高機器人)是集合了可編程Lego磚塊、電動馬達、傳感器、Lego磚塊、Lego Technic部分(齒輪、輪軸、橫梁)的統稱。Mindstorms起源于益智玩具中可編程傳感器模具(programmable sensor blocks)。第一個Lego Mindstorms的零售版本在1998年上市,當時叫做Robotics Invention System (RIS)。最近的版本是2006年上市的Lego Mindstorms NXT。許多語言都能對Mindstorms進行編程,包括Logo、Basic、Java的衍生版、Smalltalk和C語言。Computer Clubhouses是專注于Mindstorms編程的網站。
- Phrogram(第二代的KPL,MS Kid's Programming Language)是2006年引入的一個商業的、易于學習的程序設計語言和集成開發環境。它強調圖形和聲音,使得它特別容易開發游戲,寓教于樂的程序。 Phrogram是簡化的結構化語言,提供了基于組件開發的特性,例如類和方法。Phrogram在現代IDE中進行建模,例如Eclipse 和Visual Studio. NET,并可以幫助初學者為這些或者其他的專業開發環境做好準備。
- RoboMind是一個簡單的教育性質的編程環境,能讓初學者對機器人編程。RoboMind介紹了流行的編程技術、一些機器人學和人工智能的知識。人們能夠使用阿拉伯語、中文、荷蘭語、英語和瑞典語對機器人進行編程。
- StagecastCreators是基于示范編程的可視化編程系統。用戶通過移動屏幕上的圖標,為物體(角色)制定規則來操作整個系統。用戶可以創造2D模型來模擬一個概念,多層次的游戲,交互的故事等。
?大學
- A++ 是最近一個旨在創造一種程序設計語言,提供一個高效編程訓練工具的嘗試
- Curry 是一個教學語言,旨在合并最為重要的編程范式,即函數編程(嵌套表達式、高階函數、延遲賦值)和邏輯編程(邏輯變量、局部數據結構,內 置搜索)。在這一過程中,Curry同樣整合了兩種最重要的操作原則:“Residuation”(殘差)和“Narrowing”(縮小)。
- Haskell 是大學中經常用來替代LISP或Scheme的函數語言。Haskell主要目的是以同樣方式進行教學、研究、程序設計,是純粹的 函數式、富于表達的延遲賦值程序設計語言(extremely expressive lazy functional)。Haskell示例可以在線獲取,同樣還有許多書籍和教程。還有一個叫Helium的教育版的編譯器和IDE。Haskell另 一個優勢是在教學歸納法上,因為Haskell的語法在歸納證明中很有優勢,就像在紙上證明一樣簡單,而不像Lisp/Scheme還需要引入額外的語 法。
- Oz 是旨在于教育計算機理論的程序設計語言。Oz在單一語言中支持大多數主要的編程范式,因而學生學習范式不需要掌握多種語法。Oz通過簡單又良 好分解的方式來闡述主要的編程范式的概念,包括邏輯式、函數式(包括lazy和eager)、命令式、面向對象、強類型、分布式及并發編程。 《Concepts, Techniques, and Models ofComputer Programming》是介紹Oz的經典圖書,還有一個免費的Oz標準實現的語言Mozart Programming System。
- Qi II 是一個函數程序設計語言。Qi的核心是Lisp的簡化版,但是它包含最常見的現代函數式語言的特性,例如模式匹配、局部套用函數、偏應用 (partial applications)、靜態類型檢查。Qi II還包括一個嵌入Prolog的發行版,叫Qi Prolog。 所有這些特性與Lisp環境的結合,使得Qi在某種意義上可以稱為合理化和現代化的Lisp。 Qi在非商業用途上是免費的,一本經典的圖書《Functional Programming in Qi》專門介紹Qi編程。
按年齡和程度區分所授語言
下表為家長和老師總結了上方的信息。
| 學齡前–二年級 | 無/不適用 | Logo style: Logo, Guido van Robot, Karel. Scratch, Baltie 2, Stagecast Creator |
| 二年級–四年級 | 無/不適用 | Kodu, Logo, Scratch or Etoys, Stagecast Creator |
| 五年級–八年級 | 很少或沒有經驗 | Kodu, Lego Mindstorm, Etoys, AgentSheets, Alice, Baltie 3, learning oriented BASIC, Mama, Phrogram, Stagecast Creator |
| 五年級–八年級 | 有一些經驗 | Kodu, Squeak, full featured BASIC, Greenfoot, Pascal |
| 高中 | 很少或沒有經驗 | Kodu, Squeak, Greenfoot, Pascal, full featured BASIC |
| 高中 | 有一些經驗 | Squeak, Greenfoot or BlueJ, newLISP, OZ. Most other programming languages. |
| 大學 | 不是主要專業,假定沒有經驗 | Squeak, Greenfoot or BlueJ, newLISP, full featured BASIC, |
| 大學 | 開始計算機科學或程序設計課程 | Haskell, OZ, Scheme, Qi, Squeak, NetBeans BlueJ., |
總結
- 上一篇: python爬虫 asyncio aio
- 下一篇: 汉诺塔——递归算法