В программировании и разработки программного обеспечения , связывание является интерфейс прикладного программирования (API) , который обеспечивает клей код специально сделанный , чтобы позволить язык программирования использовать внешнюю библиотеку или операционную систему обслуживания (тот , который не является родным для этого языка).
Характеристики
Связывание обычно относится к отображению одного объекта другому. В контексте программных библиотек привязки - это библиотеки-оболочки , соединяющие два языка программирования , так что библиотеку, написанную для одного языка, можно использовать на другом языке. [1] Многие программные библиотеки написаны на языках системного программирования, таких как C или C ++ . Чтобы использовать такие библиотеки из другого языка, обычно более высокого уровня , такого как Java , Common Lisp , Scheme , Python или Lua , необходимо создать привязку к библиотеке на этом языке, что, возможно, потребует перекомпиляции кода языка, в зависимости от количество необходимых модификаций. [2] Тем не менее, большинство языков предлагают внешней функции интерфейса , такие , как в Python и OCaml «с ctypes
, и Встраиваемый Common Lisp » s cffi
и uffi
. [3] [4] [5]
Например, привязки Python используются, когда существующая библиотека C, написанная для какой-то цели, должна использоваться из Python. Другой пример libsvn
написан на C для предоставления API для доступа к репозиторию программного обеспечения Subversion . Для доступа к Subversion из кода Java libsvnjavahl
может использоваться, который зависит от libsvn
того , что он установлен, и действует как мост между языком Java и libsvn
, таким образом, предоставляет API, который вызывает функции libsvn
для выполнения работы. [6]
Основные мотивы создания привязок библиотек включают повторное использование программного обеспечения , чтобы уменьшить повторную реализацию библиотеки на нескольких языках, а также сложность эффективной реализации некоторых алгоритмов на некоторых языках высокого уровня.
Среда выполнения
Объектные модели
- Common Object Request Broker Architecture (CORBA) - кроссплатформенная языковая модель
- Component Object Model (COM) - кросс-языковая модель только для Microsoft Windows
- Распределенная компонентная объектная модель (DCOM) - расширение, позволяющее COM работать по сети
- Кросс-платформенная компонентная объектная модель ( XPCOM ) - кроссплатформенная модель приложений Mozilla.
- Common Language Infrastructure - кроссплатформенная языковая модель .NET Framework
- Freedesktop.org D-Bus - открытая кроссплатформенная языковая модель
Виртуальные машины
Портирование
- Переносимый объект - кроссплатформенное определение объектной модели языка
Смотрите также
- Интерфейс прикладного программирования (API)
- Бинарный интерфейс приложения (ABI)
- Соглашение о вызове
- Встроенный SQL
- Изменение имени
- Simplified Wrapper and Interface Generator ( SWIG ) - генератор привязки интерфейса со многих языков на многие языки, с открытым исходным кодом
- Функция обертки
Рекомендации
- ^ «Приложение A. Создание языковой привязки для cairo» . Cairographics.org . Проверено 2 апреля 2014 .
- ^ «Стандарты, API, интерфейсы и привязки» . Acm.org. Архивировано из оригинала на 2015-01-16 . Проверено 2 апреля 2014 .
- ^ «ctypes - библиотека сторонних функций для Python» . Документация по Python v3.8.3 . Docs.python.org . Проверено 4 июня 2020 .
- ^ Хики, Джейсон; Мадхавапедди, Анил; Минский, Ярон (2013). «Реальный мир OCaml, Глава 19. Интерфейс внешних функций» . realworldocaml.org . Проверено 19 июля 2015 .
- ^ «Введение - Руководство пользователя CFFI» . Common-lisp.net . Проверено 2 апреля 2014 .
- ^ «Часто задаваемые вопросы по Subversion JavaHL» . Subclipse.tigris.org. 2013-06-18 . Проверено 2 апреля 2014 .
Внешние ссылки
- JTC1 / SC22 / WG11 - Binding Techniques , стандарт ISO для языковых привязок
- Что такое языковая привязка?