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

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

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

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

같이 보기 편집

각주 편집

  1. “Appendix A. Creating a language binding for cairo”. Cairographics.org. 2014년 4월 2일에 확인함. 
  2. “Standards, APIs, Interfaces and Bindings”. Acm.org. 2015년 1월 16일에 원본 문서에서 보존된 문서. 2014년 4월 2일에 확인함. 
  3. “15.17. ctypes – A foreign function library for Python”. 《Python v2.7.6 documentation》. Docs.python.org. 2014년 4월 2일에 확인함. 
  4. Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). “Real Worl OCaml, Chapter 19. Foreign Function Interface”. 《realworldocaml.org》. 2015년 7월 18일에 원본 문서에서 보존된 문서. 2015년 7월 19일에 확인함. 
  5. “Introduction – CFFI User Manual”. Common-lisp.net. 2014년 4월 2일에 확인함. 
  6. “Subversion JavaHL FAQ”. Subclipse.tigris.org. 2013년 6월 18일. 2014년 12월 27일에 원본 문서에서 보존된 문서. 2014년 4월 2일에 확인함. 

외부 링크 편집