教育程式語言
此條目或章節需要被修正為維基格式以符合品質標準。(2010年6月8日) 請協助添加相關的內部連結來改善這篇條目。 |
教育程式語言是一個教育性質的程序設計語言,是一種主要設計於用來學習的工具,是與用於編寫真實環境下的應用程序程式語言不大相同的一種程式語言。
目錄[隱藏] |
[編輯] 學習順序
許多教育性質的程式語言都提供建議的學習順序,即是學習一組程式語言的順序,每種語言都建立在其他語言的基礎上,使得學生能夠完成從簡單又易於理解的娛樂性編程環境到專業開發環境的轉變。
下面是一些著名的程式語言。
[編輯] 基於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., |
[編輯] 參考連結
[編輯] 外部連結
- A nontechnical encyclopedia article on educational programming languages, hosted on kidslike.info 由Scratch、 Alice和Greenfoot所做的評論和解釋。
- 關於用教給孩子哪種語言的爭論。各種觀點詳見Don's Box。
- Coding 4 Fun 微軟旨在培養編程者的網站。
- BASIC vs. Logo 於WikiVS上