圖片來源: 

iStock

美國麻省理工學院(MIT)的軟體技術教授Adam Chlipala設計了新的Ur/Web程式語言,這是一個整合HTML、CSS、XML、SQL及JavaScript等網路標準的「完整獨立」語言(self-contained programs),強調快速、安全及「元編程」(metaprogramming,或作「超編程)的開放源碼專案,可望減少開發人員設計網路應用程式所耗費的時間與精力。

根據Chlipala所發表的論文,Ur/Web是個靜態的函數式語言,它把各種疊床架屋的網路標準融合成單一的程式模型,不論從安全或效能來看,都讓網路得以保留它作為一個單純應用程式平台的本質。

Chlipala表示,全球網路(World Wide Web,WWW)是個非常受歡迎的平台,可用來設計各種具備圖像使用者介面的應用程式,各種網路標準也慢慢出現,造就今日複雜的生態體系。若要以瀏覽器及伺服器所支援的語言撰寫豐富的功能,至少必須熟悉產生文件架構的HTML、產生文件格式的CSS、提供互動服務的JavaScript,以及遞送上述內容的HTTP通訊協定。近來還有一些受歡迎的應用程式仰賴JSON來傳遞複雜的資料格式,或是以SQL來儲存永久的結構化資料,這些不同的語言的程式碼經常以各種複雜且片段的方式相互嵌入。

Ur/Web主要解決了兩個問題,一是把封裝(Encapsulation)應用在豐富網路程式中,支援那些能夠以私有狀態處理網路應用程式關鍵片段的程式模組。其次是揭露一個供開發人員使用的併發模型,用來支援伺服器端與客戶端之間的重要通訊。

因此,Ur/Web允許開發人員把網路應用程式當作獨立程式來撰寫,Ur/Web的編譯器可以自動產生相對應的XML程式碼及樣式表規格,進而將JavaScript與資料庫程式碼擺放在正確的地方。Chlipala說明,雖然Ur/Web編譯器能夠產生XML、JavaScript與SQL程式碼,但它並不會自動製造樣式表,而是分析完整的程式後列出有關的CSS類別,再提出設定建議。

Ur/Web除了能夠協調各種網路標準之外,理論上還會更加安全。它採用了強型別(strongly typed),任何在Ur/Web中所設定的新變數都被侷限在單一的型別,同時也限制了變數的範圍。例如想在網頁上同時提供行事曆與廣告版位的組件(widget)時,開發人員並不希望廣告會影響行事曆的運作,或是行事曆干預了廣告的遞送,Ur/Web會禁止這兩個不同網頁組件之間擅自相互存取。

不過IDG News分析認為,對於一般的開發者來說,做為一種「函數式程式設計語言」(functional programming language)的Ur/Web將會有很高的學習門檻,Chlipala教授也同意這樣的看法,並拿Ur/Web與受到特定族群喜愛的Haskell做比較,而Haskell就是以晦澀難懂而知名。

Chlipala準備在明年1月由計算機協會主辦的程式語言原則座談會(Symposium on Principles of Programming Languages)上正式發表及展示Ur/Web的細節。(編譯/陳曉莉)

 

熱門新聞

Advertisement