(學術譯文) 安全且夠力的語言互動性

原文章標題: “Safe, expressive language interoperability" http://robotics.upenn.edu/~posera/papers/interop-obt.pdf

聲明:這是個人閱讀及順手翻譯之練習作。原文之著作權屬於原文作者 Peter-Michael Osera and Steve Zdancewic ,譯文之著作權屬於我黃耀賢。

譯文開始:「安全且夠力的語言互動性」

作者為來自 Pennsylvania 大學的 Peter-Michael Osera and Steve Zdancewic 二位。發表於 2012 年 1 月 21 日。文章共 1 頁。

在程式語言領域,語言之互動能力不是新的研究範圍。西元 2000 年代前期,人們投注相當的心力來理解怎麼在二種互通的語言中整合資料。這方面之終結帶來 .NET 軟體架構的誕生。 .NET 就是讓各種語言使用同一種資料模型的方式,搞定了問題。從此之後, .NET 軟體框架和 Java JVM 平台軟體框架之風行,能夠處理多而又多的各種程式語言的類別庫,那些語言即為搭配著 .NET DLR 或是 Java 的 Da Vinci 平台專案的動態語言。

在這問題之外,研究程式語言的學者們面臨更大的一種問題是,當他們弄一些有很漂亮的資料型別系統的程式語言時,這樣做是否恰當。往往造成一種情況,是語言中所使用較先進的資料型別教人搞不懂怎麼把這樣的工作成果延續到主流程式語言上,使那些新玩意可以博得大眾喜愛。因為是這樣,這些語言工作者也比較難提出有力的論證,強調他們的創作很切合實用。

語言的互動能力更讓這種情況變得很有趣,假想一種情況,你做出的那種炫麗的、可以有線性資料結構或依賴式的資料結構的程式語言,它跟當前主流的程式語言搭配得不錯的時候,拿來做日常作業,對普通使用者來說,它只是很棒而已,因為要採用漂亮的程式語言所碰到的障礙變得很小。不過,對研究者來說呢,我們就可以玩弄主流語言所包含的程式庫,也可以做一些普通用途的東西,藉以製造一大堆好例子來表演自己的語言的用途。而結果就是,我們創造出二種語言之間的互動層,我們漂亮的資料型別系統可以擔保安全。

以上講的這個想法並不只是來自於之前做到互動性的實作經驗中得到的心得,該注意的要點是要考慮到那個互動層的語意。在這方面,由 Matthews 和 Findler 二位共同做的前瞻研究 [1] 指出,太強調互動層的語意,就可能弄出另一種問題是,會太強調在多種語言之間所搞出一些協約的東西。 [2]

不過呢,在這個領域還有很多工作該做。所以不管是程式員、或者是程式語言學者,都可以從語言互通性得到幫助,讓他們發展更好的程式語言。尤其在這些語言互通層上頭,某些特別的資料型別系統必須要有相當的檢查機制,是很重要的。我們提出一種決定性的假設,用在程式語言的互通上頭,是指二種語言彼此獨立,並且除非跨過互通性的界線,任何一種語言不會去影響到另一種語言。由此限制來看,我們的下個程式語言可能需要犧牲掉一些表達力來確保安全,那麼我們可以藉此得知一些細密的方式,好整合不同的程式風格。

[1] J. Matthews and R. B. Findler, Operational semantics for multi-language programs. ACM Trans. Programs. Lang. Syst., 31(3):144, 2009. ISSN 0164-0925.

[2] R.B. Findler and M. Felleisen, Contracts for higher-order functions. SIGPLAN Not., 37(9):4859, 2002. ISSN 0362-1340.

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Programming。將永久鏈結加入書籤。