언어 바인딩

컴퓨팅에서 바인딩(binding)은 프로그래밍 언어가 해당 언어에 네이티브하지 않는 외부 라이브러리나 운영 체제 서비스를 사용할 수 있도록 만들어주는 글루 코드를 제공하는 API이다.

바인딩은 일반적으로 하나를 다른 것으로 매핑시키는 것을 의미한다. 소프트웨어 라이브러리 문맥에서 바인딩은 두 프로그래밍 언어를 이어주는 래퍼 라이브러리이며 여기서 한 언어로 작성된 라이브러리는 다른 언어에서 사용이 가능하게 된다.  수많은 소프트웨어 라이브러리들은 C나 C++과 같은 시스템 프로그래밍 언어로 작성된다. 자바, 커먼 리스프, 스킴, 파이썬, 루아 등 일반적으로 더 고급의 다른 언어에서 해당 라이브러리들을 사용하려면 라이브러리에 대한 바인딩은 해당 언어에서 생성되어야 하며, 필요한 수정의 정도에 따라 잠재적으로는 해당 언어 코드의 재컴파일이 요구될 수 있다. 그러나 대부분의 언어들은 파이썬과 OCaml의 ctypes, 임베더블 커먼 리스프의 cffi와 uffi 등의 외부 함수 인터페이스를 제공한다.

예를 들어, 파이썬 바인딩은 일부 목적으로 작성된 현존하는 C 라이브러리를 파이썬에 사용하기 위해 쓰인다. 다른 예로 C로 작성된 libsvn을 통해 서브버전 소프트웨어 저장소로 접근하기 위한 API를 제공할 수 있다. 자바 코드 안에서 서브버전에 접근하려면 설치된 libsvn에 의존하는 libsvnjavahl를 사용할 수 있으며 언어 자바와 libsvn 간 다리 역할을 함으로써 해당 작업을 수행하기 위해 libsvn로부터 함수를 호출하는 API를 제공하게 된다.

라이브러리 바인딩을 생성하는 주된 동기에는 여러 언어의 라이브러리로 라이브러리 하나를 다시 구현하는 일을 줄이기 위한 소프트웨어 재사용, 일부 고급 언어에서 일부 알고리즘을 효율적으로 구현하는데 따르는 어려움이 포함된다.

같이 보기 
 API
 응용 프로그램 이진 인터페이스 (ABI)
 호출 규약
 임베디드 SQL

각주

외부 링크 
 JTC1/SC22/WG11 - Binding Techniques, an ISO standard for language bindings
 What is a language binding?

컴파일러
라이브러리