Подтвердить что ты не робот

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

В контексте совместимости программного обеспечения в чем разница между этими тремя концепциями?

Итак, например, я хочу использовать библиотеку ncurses, оригинальная библиотека ncurses написана на C, но мое приложение написано на С++, тогда я нашел "обертки ncurses", "привязки к ncurses" и "ncurses" порт". Какой из них я должен использовать?

Каковы плюсы и минусы каждого из них?

4b9b3361

Ответ 1

A wrapper - это немного кода, который находится поверх другого кода, чтобы перерабатывать его функциональность, но с другим интерфейсом. Это обычно подразумевает интерфейс, написанный на том же языке. Следует также отметить, что иногда люди скажут обертку, когда то, что они технически означают, является обязательным (включая меня).

Плюсы:

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

Минусы:

  • Обтекание всей библиотеки может быть чрезвычайно повторяющимся.

A binding - еще один бит кода, который находится поверх другого кода, чтобы перерабатывать его функциональность, за исключением того, что привязки времени записываются в язык, отличный от того, что они связывают. Примечательным примером является PyQt, который является связыванием python для QT.

Плюсы:

  • Приведите функциональность с другого языка на язык по вашему выбору.
  • Относительно быстро по сравнению с портом
  • Необходим тот же уровень тривиальных изменений, что и при упаковке. Вероятно, вам нужно будет только обернуть новые функции/классы, если они не нарушат обратную совместимость, изменив ожидаемые входные/выходные функции/классы.

Минусы:

  • Так же, как повторяющийся, как обертка
  • Вероятно, вы получаете довольно большой удар производительности, особенно любую оболочку с интерпретируемым языком на любом конце

A Port - это когда вы переводите код для работы в другой среде. Общие аналогии включают игры, которые выходят, скажем... XBox и позже выпущены для PS3.

Плюсы:

  • Предоставляет вам возможность улучшать базу кода, поскольку вы видите недостатки
  • Вы будете хорошо знакомы с тем, как работает код, а не только тем, что он делает.

Минусы:

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

Ответ 2

Which one should I use?

Вы должны использовать bindings to ncurses. Связывание - это особый вариант приложения, библиотеки и т.д., Который отличается от исходного только тем, что вы можете использовать его на другом языке. Частые примеры включают в себя администраторы окон (gtk + = C, gtkmm = С++; Qt = С++, PyQt = Python; ecc.). Тем не менее, люди часто используют другие слова, такие как обертка или порт, чтобы ссылаться на привязки, поэтому легко заставить себя запутаться.