原理
線上編程的原理比較複雜,因為其涉及web前端以及後端編譯系統。
web前端需要提供用戶代碼錄入,行號、高亮語法、自動補全功能。並需要使用異步更新(Ajax) 的方法來實現上述功能。
後端編譯系統接收到用戶的代碼,並調用正確的編譯器進行編譯並將結果返回前端進行顯示。
特性
1、方便:無論何時何地,打開網址,就可以進行代碼編寫。更可以將現有代碼拷貝過去運行驗證結果,是驗證代碼,學習語言、算法的快捷工具。而且再也不需像傳統一樣,為了編寫一點程式,就必須在自己電腦上安裝很大的軟體,配置非常複雜的環境。
2、跨平台,無論使用Windows、Mac、Linux還是使用安卓平板、iPad,都可以進行線上編程,而且程式語言可以是任何語言,在iPad上編寫Java代碼是件很輕鬆地事。
3、集成性:所有的線上編程的程式語言網站都支持多種語言的編譯或解釋,具有較強的集成性,是傳統IDE無法比擬的。
實現
國外多家網站以及國內的少數網站都已經實現了線上編程的功能。比如:
anycodes
該網站智慧型支持中英韓三種語言。並且該網站支持九種程式語言,如C/C++/Java/Tcl/Matlab/Perl/Ruby/Python/Php,支持多檔案,標準輸入,命令行參數,語法高亮,代碼可摺疊,支持全螢幕模式及代碼下載,其中Matlab語言支持圖像化輸出,該平台還有對應的手機客戶端(線上編程),可以用手機寫代碼,同時還擁有對應的微信平台,垂直論壇,移動課堂,線上題庫,雲資源庫等功能。該網站比較簡潔,使用起來也很方便,回響速度較快。
codepad
該網站只支持英文,支持C/C++/D/Haskell,Lua/OCaml/PHP/Perl/Plain Text/Python/Ruby/Scheme/Tcl,相比anycodes而言支持語言更多,適合於團隊合作,代碼可生成一個簡短的URL。缺點是不支持語法高亮,也無法完成自動縮進功能,同時也無法使用scanf等需要從標準輸出中獲取值之類的函式,同時需要頁面跳轉,回響速度較慢。
Ideone
該網站支持英文,和上述兩個相比,支持包括C++,Java,JavaScript,Perl,PHP,Python和Ruby在內的40多種程式語言,且含有代碼demo,供初學者學習。缺點是,使用不夠簡潔,且回響速度較慢。
imooc
該網站支持包括HTML,CSS、JavaScript、PHP、Python和Ruby等多種程式語言,提供初學者學習demo。支持多檔案,標準輸入,資料庫操作,語法高亮,代碼摺疊,自動縮進,全螢幕預覽模式及代碼下載。缺點是平台還需要諸多細節最佳化,相應速度有待加強。
碼農谷
該網站支持包括C語言、C++、C#、Java及PHP等多種程式語言線上編譯與調試,同時支持包括HTML(CSS)、JavaScript、jQuery、BootStrap及EsayUI等前端語言線上運行與調試。
1.anycodes
該網站智慧型支持中英韓三種語言。並且該網站支持九種程式語言,如C/C++/Java/Tcl/Matlab/Perl/Ruby/Python/Php,支持多檔案,標準輸入,命令行參數,語法高亮,代碼可摺疊,支持全螢幕模式及代碼下載,其中Matlab語言支持圖像化輸出,該平台還有對應的手機客戶端(線上編程),可以用手機寫代碼,同時還擁有對應的微信平台,垂直論壇,移動課堂,線上題庫,雲資源庫等功能。該網站比較簡潔,使用起來也很方便,回響速度較快。
2.codepad
該網站只支持英文,支持C/C++/D/Haskell,Lua/OCaml/PHP/Perl/Plain Text/Python/Ruby/Scheme/Tcl,相比anycodes而言支持語言更多,適合於團隊合作,代碼可生成一個簡短的URL。缺點是不支持語法高亮,也無法完成自動縮進功能,同時也無法使用scanf等需要從標準輸出中獲取值之類的函式,同時需要頁面跳轉,回響速度較慢。
3.Ideone
該網站支持英文,和上述兩個相比,支持包括C++,Java,JavaScript,Perl,PHP,Python和Ruby在內的40多種程式語言,且含有代碼demo,供初學者學習。缺點是,使用不夠簡潔,且回響速度較慢。
4.imooc
該網站支持包括HTML,CSS、JavaScript、PHP、Python和Ruby等多種程式語言,提供初學者學習demo。支持多檔案,標準輸入,資料庫操作,語法高亮,代碼摺疊,自動縮進,全螢幕預覽模式及代碼下載。缺點是平台還需要諸多細節最佳化,相應速度有待加強。
5.碼農谷
該網站支持包括C語言、C++、C#、Java及PHP等多種程式語言線上編譯與調試,同時支持包括HTML(CSS)、JavaScript、jQuery、BootStrap及EsayUI等前端語言線上運行與調試。
套用
目前在教學方面的套用比較廣泛。