Басқа тілде жазылған кітапхананы пайдалануға мүмкіндік беретін интерфейс
Language binding
Бағдарламалау тілдерін байланыстыру: шетелдік кітапханаларды пайдалану үшін API және wrapper кітапханалар. C/C++ кітапханаларын Java, Python сияқты тілдерде қолдану.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Басқа бағдарламалау тілінде жазылған басқа кітапхананы пайдалануға мүмкіндік беретін бағдарламалық кітапхана. Бағдарламалау және бағдарламалық жасақтауда байланыс – бұл бағдарламалау тіліне шетелдік кітапхананы немесе операциялық жүйе қызметін (сол тілге түпкілікті емес) пайдалануға арналған, арнайы жасалған "көпір" кодты қамтамасыз ететін қолданбалы бағдарламалау интерфейсі (API).
Software library that allows using another library coded in another programming language
In programming and software design, binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to that language).
Сипаттамалары
Байланыстыру, әдетте, бір нәрсенің екіншісімен сәйкестігін білдіреді. Бағдарламалық кітапханалар контекстінде, байланыстар – екі бағдарламалау тілін байланыстыратын аралық кітапханалар, соның арқасында бір тіл үшін жазылған кітапхананы басқа тілде қолдануға болады. Көптеген бағдарламалық кітапханалар C немесе C++ сияқты жүйелік бағдарламалау тілдерінде жазылған. Мұндай кітапханаларды басқа, әдетте жоғары деңгейлі тілдерден, мысалы Java, Common Lisp, Scheme, Python немесе Lua тілдерінен пайдалану үшін, сол тілде кітапханаға байланыстыру жасалуы керек, бұл жағдайда қажетті өзгертулерге байланысты тілдің кодын қайта құрастыру қажет болуы мүмкін. Дегенмен, көптеген тілдер Python және OCaml-дың ctypes, Embeddable Common Lisp-тың cffi және uffi сияқты шетелдік функция интерфейсін ұсынады. Мысалы, Python байланыстары белгілі бір мақсат үшін жазылған C кітапханасын Python-нан пайдаланғанда қолданылады. Тағы бір мысал – Subversion бағдарламалық репозиторийіне қол жеткізу үшін API ұсынатын C тілінде жазылған libsvn. Subversion-ға Java кодынан қол жеткізу үшін libsvnjavahl-ды пайдалануға болады, ол libsvn-нің орнатылған болуын қажет етеді және Java тілі мен libsvn арасындағы көпір ретінде әрекет етеді, осылайша жұмысты орындау үшін libsvn-нен функцияларды шақыратын API-ді ұсынады. Кітапханаларды байланыстырудың басты себептері – бағдарламалық жасақтаманы қайта пайдалану, бірнеше тілде кітапхананы қайта іске асыру қажеттілігін азайту және кейбір жоғары деңгейлі тілдерде алгоритмдерді тиімді іске асырудың қиындығы.
Binding generally refers to a mapping of one thing to another. In the context of software libraries, bindings are wrapper libraries that bridge two programming languages, so that a library written for one language can be used in another language. Many software libraries are written in system programming languages such as C or C++. To use such libraries from another language, usually of higher level, such as Java, Common Lisp, Scheme, Python, or Lua, a binding to the library must be created in that language, possibly requiring recompiling the language's code, depending on the amount of modification needed. However, most languages offer a foreign function interface, such as Python's and OCaml's ctypes, and Embeddable Common Lisp's cffi and uffi. For example, Python bindings are used when an extant C library, written for some purpose, is to be used from Python. Another example is libsvn which is written in C to provide an API to access the Subversion software repository. To access Subversion from within Java code, libsvnjavahl can be used, which depends on libsvn being installed and acts as a bridge between the language Java and libsvn, thus providing an API that invokes functions from libsvn to do the work. Major motives to create library bindings include software reuse, to reduce reimplementing a library in several languages, and the difficulty of implementing some algorithms efficiently in some high level languages.