История изменений
Исправление 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 магическим образом основных проблем не решат, по той простой причине, что на какой-то из сторон всё равно придётся указанные моменты придётся решать.