Языковая привязка
В программировании и разработке программного обеспечения привязка — это интерфейс прикладного программирования (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 для языковых привязок.
- Что такое языковая привязка?