Я давно не совсем понимаю, как смешивать разные языки программирования. Согласно этой статье в Википедии , интерфейс внешней функции (или FFI) может быть выполнен несколькими способами:
- Требование, чтобы функции гостевого языка, которые должны быть вызваны на языке хоста, были указаны или реализованы в определенный способ; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызваны на языке хоста, были указаны или реализованы в определенный способ; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызваны на языке хоста, были указаны или реализованы в определенный способ; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на языке хоста, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на языке хоста, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на главном языке, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
- Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на главном языке, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
- Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
- Использование библиотек-оболочек
- Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.
Мои вопросы:
Мои вопросы:
Мои вопросы:
Один источник, на который он ссылается , гласит: внедрение FFI может быть выполнено в несколькими способами:
- Требовать, чтобы вызываемые функции на целевом языке реализовали конкретный протокол.
- Реализация библиотеки оболочки, которая принимает данный низкоязычный функции и "обертывают" ее кодом для преобразования данных в / из соглашения о языках высокого уровня.
- Требование к функциям, объявленным как родные, для использования подмножества функций высокого уровня (которые совместимы с языком низкого уровня).
Мне было интересно, может ли первый способ связанный источник такой же, как первый способ в Википедии?
Что значит третий путь в этом источник значит? Соответствует ли это 4-му способу в Википедии?
Являются ли языковой привязкой и FFI эквивалентные концепции? Как они связаны и отличаются?
привязка из языка программирования к библиотеке или сервису ОС - это API предоставление этой услуги в язык.
Мне было интересно, к какому пути в цитате из Википедии или из источника принадлежит каждый из следующих примеров?
Спасибо за понимание! С уважением!