Илья Ермаков писал(а):
Технически этот путь реален.
Стратегически он тупиковый, потому что не даёт возможности отвязаться от старых изъянов типа MDI.
Кроме того, Вы получите то же самое, что уже имеете в виде Wine. Свой "мини-Вайн".
Вот вам статистика, сколько функций нужно будет реализовать:
USER32.dll 77 функций
GDI32.dll 67 функций
KERNEL32.dll 27 функций
Да, по большому счету перенос напрямую подсистемы Host - более правильное решение. Однако на этом пути есть барьеры:
1. Недокументированность подсистемы Host.
2. Требуются большие усилия одного человека или малой группы людей (Кто это будет делать? Насколько хватит его энтузиазма?).
С другой стороны
1. Функции из USER32.dll, GDI32.dll, KERNEL32.dll в достаточной степени документированы.
2. Работу можно распараллелить на множество малозависимых друг от друга процессов, так что можно использовать административный ресурс, например, в вузах.
3. Сегодня делается много диссертаций по программированию. Проблема у них - найти реальное масштабное внедрение. Вот и мотивация для тех, кто работает в вузе,
имеет административный ресурс и хочет повысить свою степень. А результат этой работы, если она будет сделана достаточно хорошо, может быть реально масштабно внедрен (просьба не разводить флейм о том, что сам BlackBox мало применяется и не переходить на оффтопную критику современных диссертаций)
Пусть будет свой "мини-Вайн". Отличия этого "мини-Вайна" от Вайна:
1. Запуск elf исполнимого файла, а не exe и dll.
2. Заточенность именно под BlackBox и программы, сделанные на нем.
При этом сам Вайн послужит примером, как функции USER32.dll, GDI32.dll, KERNEL32.dll реализовывать в Линуксе.
Пусть с недостатками, но полностью работающий в Linux дистрибутив BlackBox, который можно будет включить в стандартные репозитарии Ubuntu, Fedore, Debian и др.
- намного лучше, чем Windows BlackBox, запускаемый под Wine.
Тем более, для облегчения начало массовых работ:
1) начать эту работу можно в Windows, перепривязывая BlackBox к Qt под Windows;
2) саму переделку вызовов функций USER32.dll, GDI32.dll, KERNEL32.dll на вызовы библиотеки qt можно сделать в виде модулей BlackBox;
3) при необходимости отработки у студентов навыков работы на Си++, эту работу можно выполнить при помощи Си++.
Пусть это послужит первым шагом для дальнейшего полного переноса подсистемы Host на Linux.
На сегодняшний день написание GUI приложений для Linux - пока еще задача с довольно высоким барьером.
Lasarus дает очень много сбоев в работе, он не спроектирован, как коммерческий продукт, а как система для достижения целей самих его разработчиков, видимо, еще десятки лет он будет работать так.
А BlackBox изначально спроектирован, как коммерческий продукт, хорошо проработан. Тем более, технически этот шаг реален (а qt поддерживает MDI).