OberonCore
https://forum.oberoncore.ru/

Перевод BlackBox под Linux
https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280
Страница 15 из 15

Автор:  Роман М. [ Воскресенье, 03 Октябрь, 2010 23:24 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Так как раздел Компоненты и Библиотеки закрыт внешним посетителям, продублирую сообщение о доступности консольного компилятора для Linux/Windows:
консольный компилятор для Компонентного Паскаля можно скачать из Component Pascal Compiler for command-line (описание частей, как с ним работать и, конечно, исходный код).

Готова динамическая загрузка модулей посредством вызова библиотеки bbldr (пока только прототип для Windows, а для Linux самую малость осталось доделать):
Вложение:
libBBox.zip [12.67 КБ]
Скачиваний: 260

Подробности читать в libBBox и расширяемый framework.

Автор:  Kubanych [ Четверг, 27 Октябрь, 2011 07:57 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Уважаемый Роман.

Вы проделали большую работу.
С консоли libexport.so и модули HostDynLoader.pas и DynLoader.pas без проблем компилируются.

У Вас есть готовый пример программы на freepascal,
использующей модуль HostDynLoader.pas, чтобы пользователи Вашей системы могли запускать libexport.so?

С уважением,
Кубаныч

Автор:  Роман М. [ Воскресенье, 30 Октябрь, 2011 12:32 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Прошу прощения, т.к. не мог ответить сразу.

Насколько я понимаю, вопрос относится не к BlackBox, а к Free Pascal. Если я прав, то на пример использования DynLoader можно посмотреть в файле cdev.pas проекта CPcc, ответственного за загрузку библиотеки компилятора.

Насчёт запуска библиотеки - не понял вопроса. Если про то как запускать библиотеки, скомпонованные в BlackBox, то метод описан в теме по libBBox. Остальное могу добавить после получения подробностей задачи.

Автор:  Kubanych [ Суббота, 05 Ноябрь, 2011 01:19 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Уважаемые коллеги.

Как вы думаете, будет ли рационально и возможно перенос GUI BlackBox на Linux организовать таким образом?

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

2. Затем постепенно переносить остальные элементы управления постепенно по мере необходимости.

Автор:  Kubanych [ Суббота, 05 Ноябрь, 2011 05:02 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Проблема переноса BlackBox на Linux не в Linux, а в BlackBox!

Димыч писал(а):
... дело не в ГУИ библиотеке, которая будет в основе "BB-on-Linux"....
Сделать привязку [к любой библиотеке] относительно не сложно
...
В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична.


подсистема Host в папке Docu на все вопросы дает ответы
This module has a private interface, it is only used internally

Может быть это и есть диагноз?
Может быть, начать именно с ее изучения и документирования?
Ведь смогли же перевести основную часть документации BlackBox с английского на русский.

1. В качестве первого шага это технически будет несложно, достаточно поставить и изучать обычный BlackBox в Windows.
2. Если кто-то заинтересованный работает преподавателем в вузе, то может эту работу можно распределить в качестве каких-нибудь курсовых/дипломных среди студентов,
причем изучение каждого модуля подсистемы может быть отдельной задачей.
3. После получения понимания того, как работает существующая подсистема, будет намного легче осуществить перенос BlackBox на Linux.

То есть, вместо того, чтобы запрыгивать с этажа на этаж, легче приставить лестницу и по ступенькам подняться.

Или как в химии, катализаторы позволяют разделить труднопротекаемую реакцию на несколько легкопротекаемых,
в итоге труднопротекаемая реакция намного ускоряется.

Автор:  Роман М. [ Воскресенье, 06 Ноябрь, 2011 11:59 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Скорее, дело даже не в БлэкБокс, а в малом сообществе и ещё более малом количестве заинтересованных лиц. Судя по всему, многих устраивает "отзывчивость" запуска виндовс-версии в Wine.

Однако полностью согласен насчёт технической документации по реализации. Также нужно собрать мнения, высказанные ранее в этой теме и смежных. Полагаю, Вики вполне подойдёт для этих целей.
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).

Моё мнение таково: если уж переносить, то избавляться от грехов BB. Соответственно, он не будет похож 1:1 на виндовс-версию.
То есть нужно пересмотреть что нужно, что переделать. Но, прежде всего, высокой переносимости можно добиться путём совершенствования реализации подсистемы Host и самого каркаса. Тогда, гляди, останется переписать лишь незначительную часть.

Если же начинать снизу вверх, то неизбежно сталкиваемся с теми или иными трудностями, связанными, прежде всего, с отличиями технологиях и в конечной функциональности.

P.S.
Я столкнулся с тем, что перенесённый в Линукс консольный компилятор (проект cp-dev) в некоторых случаях валится при компиляции модулей, импортирующих SYSTEM или Kernel . Не знаю на что грешить, но по логике вещей, виновата реализация подсистемы Host в Линукс (прежде всего, модуль Kernel), ибо тот же компилятор корректно работает в "родной" реализации Host. Конкретнее, связано с привязкой компилятора к COM.

Автор:  Пётр Кушнир [ Воскресенье, 06 Ноябрь, 2011 13:38 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

исходя из опыта попытки переноса ББ под gpcp и, предшествовавшего этому, анализа Host-части могу сказать, что самый нормальный способ портирования - стереть всю хост часть и написать по-новой, реализуя стандартные интерфейсы и дополняя набор абстракций до полного. При этом постепенно выкорчёвывая из "платформенно-независимых" модулей, типа Stores всякие заигрывания с SYSTEM. Больше ничего на ум не пришло.

Автор:  Kubanych [ Воскресенье, 06 Ноябрь, 2011 17:48 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Пфистер К. писал(а):
Интерфейс, который задает слишком много несущественных деталей, заставит программистов использовать их и допускать их истинность. Становится невозможным изменить эти детали позже, даже если это действительно потребуется. Особенно заманчиво приводить много деталей, когда уже существует сложный и недокументированный код, который должен быть включен в компонент.
Тогда простым решением кажется опубликовать исходный код и не беспокоиться по поводу определения менее ограниченного интерфейса. В результате вся реализация становится интерфейсом, и ее уже никогда нельзя изменить, так как это может нарушить работу клиентского кода.

Использование полной реализации в качестве спецификации создает также проблему сложности: очень тяжело анализировать десятки тысяч строк кода, чтобы понять, как себя ведет фрагмент программы. Такая сложная «спецификация» подобна контракту, который включает в себя книгу, написанную мелким шрифтом.

Автор:  Пётр Кушнир [ Воскресенье, 06 Ноябрь, 2011 18:37 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

кто пишет платформеннозависимо, с прямым или косвенным импортом (иногда приходится, да) Host* - сам себе враг, и знает что делает. Ну или не знает, но тогда сам виноват. Нет смысла делать на них поправку.

Автор:  Kubanych [ Понедельник, 07 Ноябрь, 2011 02:34 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Роман М. писал(а):
...
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).
..


Ссылка не открывается.

Пётр Кушнир писал(а):
... стереть всю хост часть и написать по-новой ...


Может быть, тогда стоит составить развернутое описание по каждому модулю из Host,
на основе которого можно составить список задач, если будет много желающих принять в этом участие?

Автор:  Роман М. [ Понедельник, 07 Ноябрь, 2011 11:30 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Kubanych, она рабочая, но в ограниченное время суток.
Эта ссылка доступна в неночное время ~23-24-до утра (GMT+2). Я попросту вырубаю ПК с работающим веб-сервером, чтобы не мешал спать. 8)

Автор:  Kubanych [ Вторник, 08 Ноябрь, 2011 11:11 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Роман М. писал(а):
...
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).
..


Хорошее дело.

Автор:  Kubanych [ Суббота, 19 Ноябрь, 2011 01:07 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Уважаемые коллеги

Димыч писал(а):
... дело не в ГУИ библиотеке, которая будет в основе "BB-on-Linux"....
Сделать привязку [к любой библиотеке] относительно не сложно
...
В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична.


Как вы думаете насчет такого варианта перенесения на Linux?

1. Посмотреть, какие функции WinAPI вызывает подсистема Host.
2. Написать для них wrapper над qt (так как функции WinAPI документированы). При этом можно подсмотреть, как это дело реализовано в Wine.

Автор:  Илья Ермаков [ Суббота, 19 Ноябрь, 2011 09:07 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

У меня была такая мысль.
Технически этот путь реален.

Стратегически он тупиковый, потому что не даёт возможности отвязаться от старых изъянов типа MDI.

Кроме того, Вы получите то же самое, что уже имеете в виде Wine. Свой "мини-Вайн".

Вот вам статистика, сколько функций нужно будет реализовать:
USER32.dll 77 функций
GDI32.dll 67 функций
KERNEL32.dll 27 функций

Автор:  Роман М. [ Воскресенье, 20 Ноябрь, 2011 11:33 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Возможно, лучшей стратегией было бы переписывание Host с использованием какой-нибудь межплатформной библиотеки. Так что Linux, как уже выражались ранее, "станет как литой".

Пожалуй, стоило бы даже начать с переорганизации каркаса. Избавиться от архаичных технологий, а затем двигаться вперёд.

Автор:  Kubanych [ Вторник, 22 Ноябрь, 2011 02:05 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

Илья Ермаков писал(а):
Технически этот путь реален.
Стратегически он тупиковый, потому что не даёт возможности отвязаться от старых изъянов типа 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).

Автор:  Евгений Темиргалеев [ Четверг, 16 Май, 2013 09:32 ]
Заголовок сообщения:  Re: Перевод BlackBox под Linux

1) (согл. п. 3.3) три сообщения удалены как оффтопик
2) (согл. п. 3.3) выделена новая тема: Наработки Ominc

Страница 15 из 15 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/