Языковая привязка
В программировании и разработке программного обеспечения привязка — это интерфейс прикладного программирования (API), который предоставляет связующий код , специально созданный для того, чтобы язык программирования мог использовать стороннюю библиотеку или службу операционной системы (не родную для этого языка).
Характеристики [ править ]
Привязка обычно относится к сопоставлению одного объекта с другим. В контексте программных библиотек привязки представляют собой библиотеки-оболочки, которые соединяют два языка программирования , так что библиотеку, написанную для одного языка, можно использовать на другом языке. [1] Многие библиотеки программного обеспечения написаны на языках системного программирования, таких как C или C++ . Чтобы использовать такие библиотеки из другого языка, обычно более высокого уровня , такого как Java , Common Lisp , Scheme , Python или Lua , привязка к библиотеке должна быть создана на этом языке, возможно, требуя перекомпиляции кода языка, в зависимости от необходимое количество модификаций. [2] Однако большинство языков предлагают внешний интерфейс функций , например Python и OCaml . ctypes
и встраиваемые Common Lisp'ы . cffi
и uffi
. [3] [4] [5]
Например, привязки Python используются, когда существующая библиотека C, написанная для какой-либо цели, должна использоваться из Python. Другой пример: libsvn
который написан на C и предоставляет API для доступа к Subversion репозиторию программного обеспечения . Чтобы получить доступ к Subversion из кода Java, libsvnjavahl
можно использовать, что зависит от libsvn
устанавливается и действует как мост между языком Java и libsvn
, тем самым предоставляя API, который вызывает функции из libsvn
сделать работу. [6]
Основные мотивы создания привязок библиотек включают повторное использование программного обеспечения , чтобы уменьшить повторную реализацию библиотеки на нескольких языках, а также сложность эффективной реализации некоторых алгоритмов на некоторых языках высокого уровня.
Среда выполнения [ править ]
![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2016 г. ) |
Объектные модели [ править ]
- Общая архитектура брокера объектных запросов (CORBA) – кроссплатформенная языковая модель
- Модель компонентных объектов (COM) — для Microsoft Windows. межъязыковая модель только
- Объектная модель распределенных компонентов (DCOM) – расширение, позволяющее COM работать через сети.
- Объектная модель кроссплатформенных компонентов ( XPCOM ) - кроссплатформенная модель приложений Mozilla.
- Общеязыковая инфраструктура – .NET Framework. кроссплатформенная языковая модель
- Freedesktop.org D-Bus – открытая кроссплатформенная языковая модель
![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2016 г. ) |
Виртуальные машины [ править ]
![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2016 г. ) |
Портирование [ править ]
- Переносимый объект – на кросс-платформенном языке. определение объектной модели
![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2016 г. ) |
См. также [ править ]
![]() |
- Интерфейс прикладного программирования (API)
- Бинарный интерфейс приложения (ABI)
- Соглашение о вызовах
- Встроенный SQL
- Искажение имени
- Упрощенный генератор оболочек и интерфейсов ( SWIG ) — генератор привязки интерфейсов со многих языков на многие языки, с открытым исходным кодом.
- Функция-обертка
Ссылки [ править ]
- ^ «Приложение А. Создание языковой привязки для Каира» . Cairographics.org . Проверено 2 апреля 2014 г.
- ^ «Стандарты, API, интерфейсы и привязки» . Acm.org. Архивировано из оригинала 16 января 2015 г. Проверено 2 апреля 2014 г.
- ^ «ctypes — внешняя библиотека функций для Python» . Документация Python v3.8.3 . Docs.python.org . Проверено 4 июня 2020 г.
- ^ Хикки, Джейсон; Мадхавапедди, Анил; Мински, Ярон (2013). «Real Worl OCaml, Глава 19. Интерфейс внешних функций» . Realworldocaml.org . Проверено 19 июля 2015 г.
- ^ «Введение – Руководство пользователя CFFI» . Common-lisp.net . Проверено 2 апреля 2014 г.
- ^ «Часто задаваемые вопросы по Subversion JavaHL» . Subclipse.tigris.org. 18 июня 2013 г. Проверено 2 апреля 2014 г.
Внешние ссылки [ править ]
- JTC1/SC22/WG11 — Binding Techniques , стандарт ISO для языковых привязок.
- Что такое языковая привязка?