LINUX.ORG.RU

История изменений

Исправление runtime, (текущая версия) :

А есть ли такой тулкит, к которому бы не требовался биндинг?

Просто чтобы программа на любом ЯП могла рисовать GUI через IPC, например сокеты.

Ты не совсем понимаешь, какие проблемы решают биндинги. Среди основных проблем:

  • Преобразование структур данных родных для одной среды в родные структуры другой. Самый банальный пример - преобразование строк UTF-8 в UTF-16.
  • Предоставление функционала тулкита в родном/естественном виде для клиентского языка. Например, для какого нибудь Ruby было бы естественно предоставлять ООП-style функционал Gtk в виде встроенных в язык классов, наследования, итп., а не заставлять программиста пользоваться «низкоуровневыми» методами Gtk. Ещё один банальный пример - отображение родных Ruby string'ов на соответствующие стринги Qt, чтобы при вызове Qt'шного метода можно было бы написать foo.bar(«string») вместо вызова String.new... и последующей передачей результата методу.

Это, конечно же, не полный список, но даже эти 2 пункта показывают, что использование сокетов вместо «обычного» FFI магическим образом основных проблем не решат, по той простой причине, что на какой-то из сторон всё равно указанные моменты придётся решать.

Исходная версия runtime, :

А есть ли такой тулкит, к которому бы не требовался биндинг?

Просто чтобы программа на любом ЯП могла рисовать GUI через IPC, например сокеты.

Ты не совсем понимаешь, какие проблемы решают биндинги. Среди основных проблем:

  • Преобразование структур данных родных для одной среды в родные структуры другой. Самый банальный пример - преобразование строк UTF-8 в UTF-16.
  • Предоставление функционала тулкита в родном/естественном виде для клиентского языка. Например, для какого нибудь Ruby было бы естественно предоставлять ООП-style функционал Gtk в виде встроенных в язык классов, наследования, итп., а не заставлять программиста пользоваться «низкоуровневыми» методами Gtk. Ещё один банальный пример - отображение родных Ruby string'ов на соответствующие стринги Qt, чтобы при вызове Qt'шного метода можно было бы написать foo.bar(«string») вместо вызова String.new... и последующей передачей результата методу.

Это, конечно же, не полный список, но даже эти 2 пункта показывают, что использование сокетов вместо «обычного» FFI магическим образом основных проблем не решат, по той простой причине, что на какой-то из сторон всё равно придётся указанные моменты придётся решать.