![]() |
|
|
|
|
|
#1 |
|
Vitamin C++
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Захотелось мне тут помечтать. Вот и размечтался....
![]() Перелопачивал тут намедни в очередной раз свою библиотеку модулей, попутно одним глазом посматривая в разные доки на тему независимых релоцируемых модулей для разных платформ. И представил себе такую ниибаццо(С) вдохновляющую картину. Каждый спектрумист имеет у себя некий системный диск. На него свалены самые нужные в повседневной жизни программы- коммандеры, редакторы, прочий хлам. Обычно нужного софта там скапливается порядком- иногда и на целый диск получается. А ведь, если разобраться, большая часть кода всех утилит состоит из пользовательского интерфейса, дискового функционала, какого-то графического движка. А теперь представим себе системный диск, на котором находится несколько десятков бейсик-файлов размером от 3 до 10 секторов и кучка библиотек, используемых в разном сочетании разными программами. (Ясен перец, в случае винта и единой ФС это выглядит вообще вкусно). Бейсик-файл содержит загрузчик уникального для каждой программы кодового блока, распаковщик (в общем случае), список используемых библиотек и линковщик. После запуска загрузчик распаковывает в память кодовый блок, ищет, распаковывает и линкует к нему найденные модули и запускает все это дело. Понятно, что при таком подходе будут как плюсы, так и минусы. Начну с первых: + экономия дискового пространства (не всегда, но в общем случае) + простота исправления одного глюка в ряде программ (и соотвецно добавления новых глюков %))) + разработчикам можно меньше заморачиваться- главное иметь библиотеку, ее интерфейс и работать с ней Пока хватит, можно к минусам перейти: - много (и долго!) придется елозить по диску пока соберутся нужные библиотеки, а потом слинкуются - куча мелких файлов может и займут мало места, но быстро забьют каталог - трудности с переносом и копированием программ - возможные проблемы с совместимостью- разные версии, разные интерфейсы... Тоже пока хватит. Теперь можно указать некоторые пути удаления минусов. 1) сжимать библиотеки пакерами. Благо там внутри довольно много "лишней" информации может быть 2) собирать набор библиотек в архив и искать уже в нем (уже не говорю о кешировании каталога для быстрого поиска) 3) утилита автосборщик, собирающая из загрузчика и кучки библиотек единый упакованный моноблок, запускаемый на любой машине, решает третий минус ![]() Вот, в принципе, все. На самом деле, минусов и плюсов куда больше, чем я тут указал. Что скажет многоуважаемый All? |
|
|
|
|
|
#3 |
|
Activist
Join Date: 3rd December 2005
Location: Серов
Posts: 471
Thanks: 21
Thanked 65 Times in 33 Posts
![]() |
Я пытался сделать библиотеку как раз для этого дела, чтоб были скрол бары, менюшки, мышь, удобный вывод текста, в котором присутсвуют все символы ГОСТ-альтернативной кодировки. Всё это вылилось в одной программе - CUTTER. Дело застопорилось на дисковых процедурах. Идею использовать одну библиотеку для всех системных программ одназначно поддерживаю.
__________________
Кворум-192, Кворум-128 CP/M, Кворум-64, ZS-Scorpion 256 Turbo+&Caro ZX_MC, Мастер48К |
|
|
|
|
|
#4 |
|
Activist
Join Date: 13th March 2005
Location: Пермь
Posts: 294
Thanks: 0
Thanked 3 Times in 3 Posts
![]() |
Ещё можно выходить из программы не по RESET, а в ось. При этом библиотеки остаются в памяти. При запуске следущей программы не нужно опять подкачивать библиотеки, достаточно загрузить программу и слинковать её с библиотеками в памяти.
|
|
|
|
|
|
#5 | |
|
Vitamin C++
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
Ну вдобавок можно реализовать API для runtime-линковки модулей. |
|
|
|
|
|
|
#6 | ||||
|
Activist
Join Date: 13th March 2005
Location: Пермь
Posts: 294
Thanks: 0
Thanked 3 Times in 3 Posts
![]() |
Quote:
Quote:
Их набор заранее неизвестен и может настраиваться пользователем. Quote:
А у 256 и тем более 512 и выше запросто может хватить не только на все библиотеки, но и на несколько программ, чтобы запускать их из памяти. Не следует рассуждать о 128-only. Quote:
Библиотека сидит в памяти, настроенная на адрес. Ну и пусть там сидит. Это её вновь загружаемых клиентов надо линковать с учётом этого адреса. |
||||
|
|
|
|
|
#8 |
|
Moderator
Join Date: 15th January 2005
Location: USSR
Posts: 2,035
Thanks: 378
Thanked 362 Times in 228 Posts
![]() ![]() ![]() ![]() ![]() |
Если я отдам все исходники в формате GENS3/GENS4, без комментариев или с комментариями матом, это новых программистов устроит?
Готов. Сам уже ничего не помню, прошло около 15 лет. Извиняюсь. |
|
|
|
|
|
#9 | |
|
Vitamin C++
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
"Конструктор" из исходников- первый шаг к этому. Имея на руках только бинарник и список точек входа исчезает проблема ковыряния и разбирания что и как работает (и соотвецно исчезают соблазны доделать все под себя). |
|
|
|
|
|
|
#10 | |
|
Activist
Join Date: 1st March 2005
Location: Russia, Krasnodar
Posts: 430
Thanks: 9
Thanked 4 Times in 4 Posts
![]() |
Quote:
А про либлы от Shaos'a - спросите у него на его форуме http://www.nedopc.org/forum/ |
|
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|