bindings

在計算機編程中,對庫或操作系統的綁定是一個API(application programming interface),它提供在給定編程語言中使用某個庫或服務的橋接代碼(glue code)。Binding通常指把某樣東西映射爲另一樣東西。在軟件庫上下文,binding就是橋接兩種編程語言的wrapper庫,這樣就可以使用其它語言編寫的庫。許多軟件庫是使用像C,C++這種系統編程語言寫的。要在另一種編程語言中使用此類庫,比如,Java,Common Lisp,Python等,就必須以該語言創建對要使用的庫的binding,這可能需要重新編譯該語言的代碼,具體取決於所需的修改量。不過,大多數語言都提供了外來函數接口,例如Python和OCaml的ctype,以及Embeddable Common Lisp的cffi和uffi。通過這樣的接口,可以方便的調用其它語言編寫的庫。

例如,當要從Python使用爲某種目的編寫的現存C庫時,將使用Python綁定。 另一個示例是用C語言編寫的libsvn,它提供用於訪問Subversion軟件存儲庫的API。要從Java代碼中訪問Subversion,可以使用libsvnjavahl,它依賴於所安裝的libsvn並充當Java語言和libsvn語言之間的橋樑,因此提供了一個API,該API調用libsvn中的函數來完成工作。

創建庫綁定的主要動機包括軟件重用,減少以多種語言重新實現庫的難度以及在某些高級語言中高效實現某些算法的難度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章