OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 27 Апрель, 2024 10:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 22 Сентябрь, 2023 20:31 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
Иван Денисов писал(а):
В Компонентном Паскале есть прекрасные средства для создания интерфейсов и загрузки платформенных реализаций, поэтому ваши трюки с подстановками тут просто и не требуются. Реализация кода ложится в понятный граф исходников на какой бы Операционной Системе не выполнялся код.
я помню, в последний раз они мне не требовались при адаптации MySQL-драйвера. где выбор был сделан селекторами. вы предлагаете пропускать работу с MySQL через ещё один абстрактный API, который инициализировать вручную, вместо того, чтобы просто позволить среде самой выбрать правильный API-модуль. я положительно не могу понять, почему ввод дополнительного слоя абстракции, который нужен исключительно от того, что среда не умеет сама выбрать модуль на стадии компиляции, делает код проще, удобней и сопровождаемей. это какие-то абстракции ради абстракций получаются, право слово. тем более, что драйвер уже призван реализовать абстракцию работы с БД.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 22 Сентябрь, 2023 20:36 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
автоматизация вредна, когда система выходит из-под контроля и начинает жить своей жизнью, а пользователю приходится угадывать, что там система себе решила. в данном случае нам это не грозит: система ничего не решает сама, её состояние совершенно однозначно контролируется пользователем. более того: система даёт визуальную индикацию текущего состояния. зачем в этом случае отказываться от автоматизации? в компилятор, например, в 2.0 добавили команду `DevCompiler.CompileSubs` — но зачем, ведь модули же можно перечислить и руками? тоже лишняя автоматизация получается, скрытие явного. кстати, намного более хитрое скрытие, чем просто переключение целевой архитектуры и подмена некоторых модулей. у этой команды вообще нет никакой визуальной индикации того, что и как она собирается компилировать

CompileSubs родился в итоге работы международного центра, в чём-то я с вами соглашусь, что это излишняя автоматизация, однако она форсировала обсуждение роли директории как компонента системы Блэкбокс, внесла ясность, что не надо городить много подсистем в одну папку. И на мой взгляд - это хорошо. Чем яснее требования к пакетам расширений, тем лучше.
Расширение расположено в директории, в ней есть Quick-Start, Compile-List, и было бы здорово, чтобы оно собиралось командой DevCompiler.CompileSubs
Однако не обязательно. Но внутри Блэкбокса это должно выполняться, как пример компонентности, как это было задумано изначально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 22 Сентябрь, 2023 20:40 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
к правке компилятора потихоньку подбираетесь. ;-)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 22 Сентябрь, 2023 23:30 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
Иван Денисов писал(а):
То, как вы сделали, это нехорошая схема. Подстановка реализации в Блэкбоксе принята на этапе исполнения.
вообще-то ровно так оно и происходит: подсистема Sql динамически грузит драйвер поддержки конкретной ДБ. зачем этому драйверу в свою очередь делать ещё одну прослойку, когда он тоже уже импортирует модуль, который динамически же грузит .so/.dll?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 22 Сентябрь, 2023 23:34 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
Иван Денисов писал(а):
arisu писал(а):
к правке компилятора потихоньку подбираетесь. ;-)

правка компилятора под указания явной целевой архитектуры в названии модуля тем не менее лучше, чем глобальные состояния компилятора, поскольку исключает возможность собрать модуль, который для сборки таким состоянием не предназначен
я, честно говоря, перестал понимать, откуда у компилятора взялись глобальные состояния. но соглашусь с тем, что у меня открытый руками исходник от другой архитектуры можно попытаться скомпилировать. выйдет из этого, правда, ошибка компиляции, потому что архитектурно-зависимые модули неизбежно импортируют другие архитектурно-зависимые модули, которые компилятор не видит. и получается ошибка сразу в IMPORT. а если модуль таки собрался — то это знак, что он не архитектурно-зависимый, и его надо вытащить на уровнень выше. так что ошибка будет в обоих случаях, просто немного разная.

p.s.: единственный, пожалуй, случай, когда такой финт может получиться — это модуль импорта из .so/.dll. если он другие модули не импортирует, то соберётся, хоть оно и бессмысленно. надо бы защиту от этого прикрутить, спасибо за идею.

кстати, мне чтобы такую защиту прикрутить — надо сходить в DevCompiler, и вставить туда одну проверку. а парзер менять не надо. сразу стоило сделать, конечно, но я не подумал. виноват.

p.p.s.: ваш вариант с изменением парзера, правда, позволяет защититься от случая, когда исходники модулей лежат по произвольным путям. только я не очень понимаю, как в вашем случае компилятор будет проверять допустимость той или иной архитектуры. глядя в `Dialogs.platform`? так это ровно то же самое глобальное состояние. и вдобавок не позволяет кросс-компилировать. или я что-то не так понял?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 23 Сентябрь, 2023 08:20 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
Иван Денисов писал(а):
То, как вы сделали, это нехорошая схема. Подстановка реализации в Блэкбоксе принята на этапе исполнения.
вообще-то ровно так оно и происходит: подсистема Sql динамически грузит драйвер поддержки конкретной ДБ. зачем этому драйверу в свою очередь делать ещё одну прослойку, когда он тоже уже импортирует модуль, который динамически же грузит .so/.dll?

Потому что есть платформенно-независимая часть драйвера, и есть зависимая от платформы, поэтому ещё один слой. Это ок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 23 Сентябрь, 2023 08:22 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
p.p.s.: ваш вариант с изменением парзера, правда, позволяет защититься от случая, когда исходники модулей лежат по произвольным путям. только я не очень понимаю, как в вашем случае компилятор будет проверять допустимость той или иной архитектуры. глядя в `Dialogs.platform`? так это ровно то же самое глобальное состояние. и вдобавок не позволяет кросс-компилировать. или я что-то не так понял?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 23 Сентябрь, 2023 23:34 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
теперь я точно ничего не понял. то вы пишете, что надо править компилятор и указывать в модуле явно целевую архитектуру, и это блокирует неправильные сборки. то пишете, что можно собрать что угодно.

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

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

p.s.: просто у меня есть вполне неиллюзорный шанс возникновения ещё и RISC-архитектуры, например, поэтому я сразу думаю о том, что я буду делать, когда настанут зимни холода. и у меня всё изначально затачивалось именно на мультиархитектурность в плане поддержки разных CPU (и даже разных конфигураций среды под разные CPU), а не только разных осей для одного CPU в одном его режиме. да, там не всё ещё доделано (динамическая загрузка правильных бэкэндов, например), но пилилось изначально с прицелом именно на это. собственно, я CPfront засунул, а потом вынул обратно как раз потому, что его надо правильно интегрировать вместо хранения отдельной подсистемой: как новую target.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Понедельник, 25 Сентябрь, 2023 13:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3777
arisu писал(а):
теперь я точно ничего не понял. то вы пишете, что надо править компилятор и указывать в модуле явно целевую архитектуру, и это блокирует неправильные сборки. то пишете, что можно собрать что угодно.

Да, собрать то можно всё из репозитория под любую ОС, но не нужно. Поэтому и делается выборка модулей.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB