언어 바인딩

위키백과, 우리 모두의 백과사전.

컴퓨팅에서 바인딩(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일에 확인함. 

외부 링크[편집]