概述
使用RAPTOR設計的程式和算法可以直接轉換成為C++、C#、Java等高級程式語言,這就為程式和算法的初學者鋪就了一條平緩、自然的學習階梯。
背景
沙克爾福德和勒布朗(Shackelford and LeBlanc)曾經觀察到的在計算導論課程中使用特定的程式語言容易導致學生“受到干擾並從算法問題求解的核心上分散注意力”。由於教師希望學生在上課時間中解決他們覺得最有難度的問題。因此,往往把授課的重點集中在語法上,這是由於大部分學生都會遇到的困難(例如:在C語言環境中,錯將須使用關係運算符“==”用成了賦值符號“=”,或在語句結束時遺忘了分號等)。
此外,費爾德(Felder)指出,大多數學生是視覺化的學習者,而教師則往往傾向於提供口頭講授。有的專家研究估計,在高校大約有75%到83%的學生為視覺化學習者。所以對大多數學生來說,由於其高度的文本化,而不是視覺化的性質,無論是傳統的程式語言或偽代碼提供了一個反直覺的算法表達框架。
在最終用戶開發(End User Development)的背景下,菲舍爾(Fischer)等陳述了圖形語言優於文字的好處,他說:“基於文本的語言往往是比較複雜的,因為任何人類語言從無到有,必須從語法和辭彙(術語)開始。因此,專為最終用戶設計的圖形語言表達了編程世界中的包含了通過條件行動規則(condition-action rules)自我訓練的圖形隱喻。其目標則是通過縮短現實世界中的行動與程式設計之間的概念距離來減少學生學習上的認知負擔。”
RAPTOR專門用於解決非可視化的環境的句法困難和缺點。RAPTOR允許學生用連線基本流程圖符號來創建算法,然後可以在其環境下直接調試和運行算法,包括單步執行或連續執行的模式。該環境可以直觀地顯示當前執行符號所在的位置,以及所有變數的內容。此外,RAPTOR提供了一個基於Ada[1]Graph的簡單圖形庫。學生不僅可以可視化創建算法,所求解的問題本身也是可以是可視化的。
RAPTOR作為一種可視化程式設計的軟體環境,已經為卡內基.梅隆大學等世界上22個以上的國家和地區的高等院校使用,在計算機基礎課程教學中,取得良好的效果。
由於RAPTOR是一種基於流程圖的可視化程式設計環境。而流程圖是一系列相互連線的圖形符號的集合,其中每個符號代表要執行的特定類型的指令。符號之間的連線決定了指令的執行順序。由於流程圖是大部分高校計算機基礎課程首先引入的與程式、算法表達有關的基礎概念,所以一旦開始使用RAPTOR解決問題,這些原本抽象的理念將會變得更加清晰。
使用RAPTOR基於以下幾個原因:
· RAPTOR開發環境可以在最大限度地減少語法要求的情形下,幫助用戶編寫正確的程式指令。
· RAPTOR開發環境是可視化的。RAPTOR程式實際上是一種有向圖,可以一次執行一個圖形符號,以便幫助用戶跟蹤RAPTOR程式的指令流執行過程。
· RAPTOR是為易用性而設計的(用戶可用它與其他任何的編程開發環境進行複雜性比較)。
· 使用RAPTOR所設計程式的調試和報錯訊息更容易為初學者理解。
· 使用RAPTOR的目的是進行算法設計和運行驗證,所以避免了重量級程式語言,如C++或Java的過早引入,給初學者帶來的學習負擔。。
其他環境
事實上,IBM已經認識到可視化編程環境對其產品最終用戶的重要性,他們在其WebSphere產品中使用了基於流程圖的開發環境。
瓦茨(Watts)等開發了SFC,一種結構化流程圖編輯器。SFC允許用戶開發的流程圖,並始終在顯示流程圖的同時顯示C或Pascal類似程式語法的文本。然後用戶可以複製和貼上文本到另一個文本編輯器中進行修改,以獲得完整的程式。
卡奧尼和巴格特(calloni and Bagert)開發了一個圖示式的程式語言,BACCII+,這是作為C++到補充並套用在大學的計算機基礎課程式列中。他們的實驗表明,學生使用BACCII+和C++兩者的表現比使用那些只使用C++的效果更好。一旦BACCII+程式開發完畢,用戶可以生成多種基於文本的語言(包括Pascal和C++代碼)。
FLINT是由美國西肯塔基大學齊格勒等人開發的一個程式設計開發教學環境,在FLINT中進行程式開發消除了文本代碼必須調試的缺陷。使用FLINT,學生需要進行一次自上而下的程式分解,然後為實現每個子目標而設計流程圖。流程圖可以在FLINT中執行。這迫使學生使用軟體工程中的瀑布模型[2],而實際上學生在使用增量[3]或螺旋[4]方式開發可能有更多的成功機會。
Visual Logic是FLINT的後續項目,是為過渡到Visual Basic課程之前專為大學的第一門計算機課程設計的。它摒棄了瀑布模型的編程,並增加了對一維數組和圖形功能支持。
與上述程式開發環境相比,RAPTOR將以上產品功能都結合在一起並進化成更先進的教學工具。RAPTOR讓學生在其環境內執行算法,而無須單獨編譯和執行。這意味著,程式邏輯不必在傳統程式設計的文字環境中進行設計和調試,可以直接在可視化表達環境中進行,從而也避免了使用多種工具時帶來的學習負擔。
對學生而言,RAPTOR並沒有強制要求對程式設計目標進行自上而下的分解,而是讓學生逐步開發代碼。此外,RAPTOR中包含一維和二維數組、檔案、字元串和一個允許用戶互動的圖形庫。因此,較之前的工具而言,學生能夠創造出更有趣的算法。
[1]Ada是一種大型通用程式設計語言,它是現代計算機語言的成功代表,集中反映了程式語言研究的成果。
[2]瀑布模型(Waterfall Model)瀑布模型核心思想是使用系統化的方法將複雜的軟體開發問題化簡,將軟體功能的實現與設計分開。將開發劃分為幾個基本活動(制定計畫、需求分析、軟體設計、程式編寫、軟體測試和運行維護等六個基本活動),並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
[3]增量模型(incremental model)融合了瀑布模型的基本成分和原型實現的疊代特徵。當使用增量模型時,第一個增量往往是產品的核心,即它實現了基本需求,但很多補充的特徵還有待發布。客戶對每一個增量的使用和評估都作為下一個增量發布的新特徵和功能,這個過程在每一個增量發布後不斷重複,直到產生了最終的完善產品。
[4]螺旋模型(Spiral Model)採用一種周期性的方法來進行系統開發。該模型也稱為快速原型法,以進化的開發方式為中心,在每個項目階段使用瀑布模型法。這種模型的每一個周期都包括需求定義、風險分析、工程實現和評審4個階段,由這4個階段進行疊代。軟體開發過程每疊代一次,軟體開發又前進一個層次。