Понимание интерфейса внешних функций (FFI) и языковой привязки

Я давно не совсем понимаю, как смешивать разные языки программирования. Согласно этой статье в Википедии , интерфейс внешней функции (или FFI) может быть выполнен несколькими способами:

  1. Требование, чтобы функции гостевого языка, которые должны быть вызваны на языке хоста, были указаны или реализованы в определенный способ; часто используют какую-либо библиотеку совместимости.
  2. Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
  3. Использование библиотек-оболочек
  4. Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

Мои вопросы:

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

    Мои вопросы:

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

      Мои вопросы:

      1. Каковы различия между интерфейс внешней функции (или FFI) может быть выполнен несколькими способами:
        1. Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на языке хоста, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
        2. Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
        3. Использование библиотек-оболочек
        4. Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

        Мои вопросы:

        1. Каковы различия между интерфейс внешней функции (или FFI) может быть выполнен несколькими способами:
          1. Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на языке хоста, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
          2. Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
          3. Использование библиотек-оболочек
          4. Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

          Мои вопросы:

          1. Каковы различия между
            1. Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на главном языке, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
            2. Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
            3. Использование библиотек-оболочек
            4. Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

            Мои вопросы:

            1. Каковы различия между
              1. Требование, чтобы функции гостевого языка, которые должны быть вызываемыми на главном языке, были указаны или реализованы определенным образом; часто используют какую-либо библиотеку совместимости.
              2. Использование инструмента для автоматического "оборачивания" функций на гостевом языке с помощью соответствующего связующего кода, который выполняет любую необходимую трансляцию.
              3. Использование библиотек-оболочек
              4. Ограничение набора возможности основного языка, которые можно использовать в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

              Мои вопросы:

              1. Каковы различия между
              2. Использование библиотек-оболочек
              3. Ограничение набора возможностей основного языка, которые могут использоваться в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

              Мои вопросы:

              1. Каковы различия между
              2. Использование библиотек-оболочек
              3. Ограничение набора возможностей основного языка, которые могут использоваться в разных языках. Например, функции C ++, вызываемые из C, могут (в общем случае) не включать ссылочные параметры или вызывать исключения.

              Мои вопросы:

              1. Каковы различия между 1-й, 2-й и 3-й способы? Кажется мне они все должны скомпилировать код названный язык в некоторые библиотека с объектными файлами и заголовком файлы, которые затем вызываются вызывающий язык.
              2. Один источник, на который он ссылается , гласит: внедрение FFI может быть выполнено в несколькими способами:

                • Требовать, чтобы вызываемые функции на целевом языке реализовали конкретный протокол.
                • Реализация библиотеки оболочки, которая принимает данный низкоязычный функции и "обертывают" ее кодом для преобразования данных в / из соглашения о языках высокого уровня.
                • Требование к функциям, объявленным как родные, для использования подмножества функций высокого уровня (которые совместимы с языком низкого уровня).

                Мне было интересно, может ли первый способ связанный источник такой же, как первый способ в Википедии?

                Что значит третий путь в этом источник значит? Соответствует ли это 4-му способу в Википедии?

              3. В том же источнике при сравнении трех способов, которые он перечисляет, кажется, говорится работа по заполнению пробела между два языка постепенно перешел с названного языка на вызывающий язык. я был интересно, как это понимать? Верно ли это изменение для четырех способов в Википедии?
              4. Являются ли языковой привязкой и FFI эквивалентные концепции? Как они связаны и отличаются?

                привязка из языка программирования к библиотеке или сервису ОС - это API предоставление этой услуги в язык.

              5. Мне было интересно, к какому пути в цитате из Википедии или из источника принадлежит каждый из следующих примеров?

              Спасибо за понимание! С уважением!

21
задан Faheem Mitha 11 June 2018 в 06:32
поделиться