Ага. А там лежат несколько версий одной и той же библиотеки и линкер впадает в ступор перед проблемой выбора. Да память не резиновая вроде как...Цитата:
Сообщение от elf/2
Спасибо, буду искатьЦитата:
Сообщение от maximk
Вид для печати
Ага. А там лежат несколько версий одной и той же библиотеки и линкер впадает в ступор перед проблемой выбора. Да память не резиновая вроде как...Цитата:
Сообщение от elf/2
Спасибо, буду искатьЦитата:
Сообщение от maximk
Все гипотетические примеры очень хорошие. :)Цитата:
Сообщение от elf/2
Ну что тут сказать?
У каждого подхода есть недостатки.
С одной стороны, если целостность не контролируется - получается DLL hell. Если есть контроль версий - получаем несовместимость потенциально совместимого кода.
Контроль по сигнатурам - это некоторое промежуточное решение. И наследует достоинства и недостатки обоих подходов. Если это иметь ввиду, то подход весьма практичен. ;)
Самое главное в списке - то что из него можно так или иначе получить указатели на функции плагинов и вызывать их.Цитата:
Сообщение от elf/2
Можно искать файлы по маске, загрузить их, и добавить в список. Но они могут не влезть в память.
Ещё можно вообразить пользователя с одним дисководом. У него есть дискета с графическим редактором и плагинами. Он запускает редактор и автоматически загружаются плагины которые он настроил. Но все плагины не помещаются на дискету, и иногда он загружает плагины, которые хранятся на другой дискете. А ещё у него есть дискеты с его картинками. Не получится просто искать файлы в каталоге по маске. :)
А чего искать, читай, думаю будет полезно.Цитата:
Сообщение от Vitamin
блин, dll hell к целосности отношение имеет слабое. проблема в том что в свое время MS рекомендовала складывать все dll в папочку %windir%\system. при установке двух программ использующих одну библиотеку разных версий побеждала последняя. инсталятор мог проверить только дату/время изменения файла.Цитата:
Сообщение от captain cobalt
для борьбы с этим добавили version_info, чтобы опять же инсталятор мог грамотно сообщить пользователю что происходит и положить библиотеку в папку к программе откуда она будет грузиться в первую очередь
для того чтобы hell'а не было достаточно иметь возможность хранить несколько версий библиотеки на одной машине. это работает в linux и .net
а вы так не делайте :) кстати наличие реестра с общим списком всех библиотек в системе от всего этого не спасаетЦитата:
Сообщение от Vitamin
точно, но вот только где в таком случае будет лежать "реестр"? и как он поможет разрешить проблемуЦитата:
Сообщение от captain cobalt
тогда просто ради коллекции ссылка на описание формата obj файлов от MS OMF (relocatable object module format):Цитата:
Сообщение от caro
http://www2.cs.uh.edu/~mirkovic/cosc2410/omf1_1.pdf
Чтобы использовать перегруженные функции, нужно руками прописывать сигнатуры в клиентском коде.Цитата:
Сообщение от Vitamin
Утилита, делающая из исходников исходники - это компилятор. Лучше сразу обучить её делать объектные файлы. Тогда "старые ассемблеры" можно отбросить. :)Цитата:
Сообщение от Vitamin
Можно ли на спеке позволить себе держать разные версии библиотеки в памяти? Скорее всего нет.Цитата:
Сообщение от elf/2
Поэтому и важно, что если совместимость достаточна - библиотека компонуется. Недостаточна - проблема должна обнаруживаться.
Каждая библиотека должна быть одна.
Пока не ясно.Цитата:
Сообщение от elf/2
Он может лежать на "системном диске", и после загрузки постоянно сидеть в памяти.
Или же каждый кусок может лежать рядом со своей программой в "файле конфигурации".
Есть ещё один способ хранить несколько версий библиотек на одной машине.Цитата:
Сообщение от elf/2
Компоновать программы статически. :)
тоже подкину пару ссылок:Цитата:
Сообщение от elf/2
Вполне можно так делать. Коренным образом поменялась библиотека- меняется имя/версия и она не прилинкуется "куда не надо". А реестр- это бред.Цитата:
Сообщение от elf/2
А чтобы использовать ассемблер надо вообще программы писать ручками! Прикинь, да?Цитата:
Сообщение от captain cobalt
Ну-ну. Никто не выказывал охоты перейти на существующий аласм, зато как только на горизонте нарисуется эфемерный компилятор, так все сразу побегут роняя тапки пользовать его и писать в нем програмы. Уж лучше использовать что есть.Цитата:
Сообщение от captain cobalt
не в памяти, а на диске. соответсвенно когда задаем зависимости от библиотек указываем не только имя но и версию. и компоновщик грузит в память только нужную версиюЦитата:
Сообщение от captain cobalt
"Можно ли на спеке позволить себе держать ... в памяти?" :) нужное вставитьЦитата:
Сообщение от captain cobalt
точно, и добавить в каждую программу парсер конфигурашек... "Можно ли на спеке позволить себе держать ... в памяти?"Цитата:
Сообщение от captain cobalt
вот и я о том. у библиотеки должна быть версия, а не у функции сигнатура. в библиотеке лежат связанные между собой функции и библиотека определяется набором функций.Цитата:
Сообщение от Vitamin
и линковка должна проходить/отваливаться на основе требований программы к версии библиотеки.
при этом не важно как мы эти библиотеки находим. насколько мне известно подход к поиску библиотек у винды/линукса различается, но:
1. можно указать руками где искать при запуске (LD_LIBRARY_PATH)
2. место специфичное для данной программы (каталог где лежит бинарик)
3. общая куча (%windir%\system)
как сейчас модно писать: +1Цитата:
Сообщение от Vitamin
Я тоже было подумал, что черная кошка пробежала дважды, но ты меня опередил %)Цитата:
Сообщение от elf/2
Единственное что полезное вытащил из идей captain cobalt'а- это версионирование на уровне функций, а не модулей целиком. Но это только если будет возможность раздербанивать библиотеки, вытаскивая нужные функции. В противном случае это не имеет смысла.
Сигнатура функции- это как минимум ее имя, как максимум- имя, список и тип передаваемых параметров и версия. Как вариант- хранить хеш вместо сигнатуры. Иначе линковка не имеет смысла. Набор функций в либе тоже может меняться, но только если опять-таки есть возможность вырезать лишнее.Цитата:
Сообщение от elf/2
Ну так нужно писать совместимые с обоими подходами исходники или нет?Цитата:
Сообщение от Vitamin
Вообразим себе программу, которая использует библиотеки A и B.Цитата:
Сообщение от elf/2
В свою очередь A использует C1.0, а B использует C2.0
В соответствии с вышеизложенным, конфигурация отрабатывается до момента когда программа вообще получит управление.Цитата:
Сообщение от elf/2
Я объясню.Цитата:
Сообщение от elf/2
Есть код. Есть данные.
Чтобы код мог обрабатывать данные, они должны быть адресуемы одновременно.
Теперь мы сталкиваемся со страничной адресацией Speccy.
Если хранить код в страницах, то он не сможет напрямую адресовать данные в других страницах.
Если хранить код в нижней памяти, то он сможет эффективно обращаться ко всей памяти через страницы. Именно так чаще всего пишется софт.
Нижней памяти мало. Поэтому держать там дубли кода - недопустимо.
Верхней памяти гораздо больше. Особенно на клонах-монстрах. И использовать её для постоянного хранения конфигурационных данных с целью повышения кофморта работы - может быть вполне допустимо.
у нас уже есть многозадачность?Цитата:
Сообщение от captain cobalt
у нас уже есть ось? или "компоновщик в вакуме"?Цитата:
Сообщение от captain cobalt
"версионировать" на уровне функции имеет смысл только если мы собираемся использовать одну функцию разных версий в одной программе. а этого надо избегать...Цитата:
Сообщение от Vitamin
Не видел, уточните! Напрасно голосновно заявляете - вам девушка привела кучу примеров, так что дерзайте - сравнивайте с амигой ваш писизм дальше. Только не забудьте на арм процессор (лучше тогда на ппц) сделать спек, чтоб шот как то работал с вашим писизмом и оопами и прочими попами :)Цитата:
Сообщение от captain cobalt
к сожалению в услових критически малых ресурсов приходится думать в первую очередь об эффективности их использования, а не о комфорте работы. как я понимаю даже на клонах-монстрах памяти под пользовательские данные - мало. и отдавать одну-две страницы под парсеры/конфигурашки/реестры - это "преступная халатность" :)Цитата:
Сообщение от captain cobalt
Ну во первых, вы девушек видели? С сисями такие? Они никак не товарищи, скорее подруги (amiga по испански :). Во вторых, ну сколько можно, товарищ Витамин С? Ну стормозили вы разок, не поняли, что я вам сказал, дык зачем на себя так долго дуться? простите себя уж! =)Цитата:
Сообщение от Vitamin
Для того, чтобы объяснить вам - у ВАС должен присутствовать интерес, коего у вас нет. Во вторых объем информации не может быть умещен на данном форуме. Вам проеще скачать эмуль амиги и с нуля все исследовать самому - зацЕните. Обкакаете пц сразуже (не во всех отношениях кнешно8).
Я понимаю, что вам трудно все воспринять, но почитайте это (смотрю модеры тщательно удаляют все нужное?)
http://www.totalamiga.org/pdf/totalamiga_19.pdf
страницы 24-26. срочно! =)
Что именно?Цитата:
Сообщение от Vitamin
Это ругательное слово?
А сам подход конфигурации автозагружаемых плагинов?
Когда я обращаюсь к девушкам "мадам", никто не обижается и не считает себя "французской шлюшкой", так что я перешел на сугубо нейтральный тон.Цитата:
Сообщение от acidrain
И на себя я не дуюсь, я вообще ни на кого не дуюсь долго- надоедает быстро %)
Я конечно понимаю, что обидел ее просьбой привести подтверждение своим словам, но, следует заметить, мы тут постоянно друг друга так обижаем, а с тобой лично так через пост прям %))
да не, ты меня не обижал =) читай пост №217 еше раз, ок? =)Цитата:
Сообщение от Vitamin
В примере - одна программа.Цитата:
Сообщение от elf/2
Ведь могут одни библиотеки использовать другие?
1. Надо загрузить в регистр хэндл библиотеки.Цитата:
Сообщение от acidrain
2. Косвенный переход медленнее.
3. Регистр недоступен для передачи аргумента.
У меня другое мнение.Цитата:
Сообщение от elf/2
Вон какие RAM-диски себе отгрохали. И всё ради комфорта работы. :)
По сравнению с этим одна страница - ерунда.
извиняюсь, невнимательно прочитал :(Цитата:
Сообщение от captain cobalt
однако, иметь несколько версий одной библиотеки на диске - это суровая необходимость. иначе получим неработающие программы (тот самый dll hell)
Ну как это не обижал? Постоянно требовал аргументации %)Цитата:
Сообщение от acidrain
А по поводу поста 217- ссылку занотил, почитаю позже. Скачать эмуль и погонять его не имею возможности- просто физически некогда.
(шепотом) А что, модеры удаляют отсюда посты? Наверное столько мусора уже скопилось, что удаление одной-двух кучек особо не заметно...
Возвращаюсь еще раз к теме амиги. Посколько я про нее не знаю, а изучать нет возможности, буду задавать конкретные вопросы тебе. Идет?
Моя позиция:Цитата:
Сообщение от elf/2
1. Каждая библиотека должна быть одна. На диске и в памяти.
2. Нужен контроль целостности.
3. Если совместимость достаточна - должно компоноваться.
4. Всё остальное - проблемы программистов.
пока злобные модеры не потерли, бросился читать... если в двух словах, то очень похоже на COM :), только менее гибкое поскольку в runtime нельзя узнать список интерфейсов поддерживаемых библиотекой и похоже список функций для конкретного интерфейса жестко прошит в header'ах. хотя на основании только этой статьи утверждать не буду.Цитата:
Сообщение от acidrain
расстраивает, то что даже для использования базовой функциональности (Intuition - это GUI? я не ошибся?) приходится делать кучу телодвижений:
1. открыть либу
2. получить интерфейс
попользоваться...
3. отдать интерфейс
4. закрыть либу
структура самой программы напоминает то что рекомендовала MS во времена Windows 3.11, тот же цикл ожидания сообщений, тот же разлапистый switch-case внутри
зы: только без обид пожалуйста, сами ссылку предложили
есть старая, но очень нужная программа требующая main.lib.1.0Цитата:
Сообщение от captain cobalt
поставили новую программу, которой нужна main.lib.10.4
как программист может эту проблему решить?
Задавай, и задавай девушке Лене (хорошо прошаренной не только в амиге, но и пц и zx) - думаю она компетентно ответит...Цитата:
Сообщение от Vitamin
Ок. Вопросы возможно ранее уже здесь звучали, но ответ на них я или не увидел или пропустилЦитата:
Сообщение от acidrain
Тебе (все про амигу):
-поддерживается ли взаимная работа модулей- импортирование-экспортирование функций
-поддерживаются ли экспорт/импорт данных
раз вопрос релокации там не стоит, другой вопрос
-интерфейсы жестко прописаны в виде индексов функций. символические ссылки есть?
может быть, я задаю вопросы без понимания тонкостей структуры и организации, если получится, попробуй воспользоваться параллелями с существующими разработками на том же пц.
Лене:
-я все еще жду ответа на тему автоматического исключения неиспользуемых функций при компиляции с помощью аласма :)
-если есть возможность, можно ответить на вопросы к acidrain
Не знаю, как там с виндовз - я в виндовз (из вредности и пристрастия к амиге и спеку) никогда не кодил (не считая пару сишных прог для моего покетпц).Цитата:
Сообщение от elf/2
То, что в этой статье написано - справедливо для ОС4, а мы обсуждаем ОС3.9. тут несколько иначе (кстати в статье об этом сказанно). Как там хеадерами и прописанными ифейсами - хз, не кодил. Но т.к. уже модуль какой то настряпан автором треда - то думаю обсуждение не уместно.
Давайте немного отдалимся от ооп и современных методах прогинга и пойдем старым, дедовским способом?
Сначала я воспринял предложение Витамина так, что будет некий типа бут, который займется загрузкой либл и прог и их распределением в памяти (то, что я делал на спеке, до окончания универа - после я забросил сие велеколепное дело). Посему посчитал абсурдным линковку и тем более запрос ифейсов и прочее. Разве не разумнее иметь либлы на диске и всего 2-3 открытых для прог в один момент времени. Т.к. о многозадачности не шло речи, то распределение памяти, упраление открытием-закрытием либл вполне мог на себя загрузчик. Одна либла - графический интерфейс (ГУИ), графическая либла (? не вижу необходимости для спека). Возможно математическая либла. Что еще может понадобиться? Управление клавой? Мышью? Все это в ехес (керналь-загрузчик). Итого, мы имеем реально 1 либлу для прог.
Выход из проги ессно в бут (или что там будет). Ествественно все это обрастет со временем. больше никаких изысков.
Для программера будет еще проще - список входов в инклудах(.h, .i) и autodoc's. Единственное что - релокация, но с этим справится загрузчик и прога пост-компилятора для создания таблицы релокации.
Пока все, пора бежать
Давайте поосторожней, всё-таки у нас клуб друзей...Цитата:
Сообщение от yoko_ono
Во-первых, то что вы предлагаете, это не есть что-то новое и для спектрума в частности - такая древня игра как "Strip Poker 2+" - я её ломал - использовала именно такой подход. А если посмотреть, например, http://zx.pk.ru/showthread.php?t=1811, то вы увидите, что это всё уже обсуждалось и флеймилось не раз.Цитата:
Сообщение от yoko_ono
Пока что я вижу идеалистов от амиги а не идеалы от писизма. В нашей среде (имею в виду спектрумистов) это очень тяжкое оскорбление, думаю вы извинитесь перед captain cobalt за незаслуженное обвинение.Цитата:
Сообщение от yoko_ono
В том то и дело, что ежели сей код можно уложить в пределах одной страницы, то можно написать библиотеку - и это будет отлично работать, потому что переходы к этой библиотеке, выраженной в виде модуля и впоследствии собранной линковщиком, будут простым Call или Jp. Как раз это и позволяет реализовать на сильно ограниченных ресурсах хорошие программы - потому что библиотеки будут разрабатываться (в теории конечно, если всё хорошо пойдёт...) коллективом из нескольких (надеюсь десятков) человек. В итоге как вы не пляшите, для вывода мультиколоров вы будете пользоватьсяЦитата:
Сообщение от yoko_ono
pop hl
ld (XXXX),hl
или
ld hl,YY
push hl
И почему бы генератор сего кода не сделать универсальным? тогда останется лишь набрать строчку типа
call ScrMulti.Generate
да вызов
ld hl,<адрес картинки>
call ScrMulti.Show
и всё.
Да, есть такие случаи которые нельзя стандартными библиотеками охватить, но читайте внимательно - я уже про это писал - это около 1% всех случаев программо-производства.
ВЫ сами себе противоречите - то вы говорите что библиотечный подход фигова, а библиотеки отлаженный многократно проверенный и не единожды пользуемый код, то говорите что нужно пользоваться отлаженным кодом (противопостоявляя первое второму). Вы всё-таки определитесь, что нам хорошо а что плохо.Цитата:
Сообщение от yoko_ono
Я к вам лично обращаюсь и прошу вначале ознакомиться с модульной структурой и потом уже такое выдавать.Цитата:
Сообщение от yoko_ono
Это какой то оффтоп, здесь речь идёт, напомню, про спектрум и про Z80.Цитата:
Сообщение от yoko_ono
+1Цитата:
Сообщение от captain cobalt
Всё-таки вы не прочитали по модули, потомы вы такое говорите.Цитата:
Сообщение от captain cobalt
Какая то софистика...Цитата:
Сообщение от captain cobalt
Я совсем не про это вам говорил.
Прежде всего, если ктото хочет многократно пользоваться одним модулем, находящимся резидентно в памяти, то нужна система управления модулями - централизованная - которой будут подчиняться все приложения. Это попахивает целой операционной системой (как это кстати и стало в iSDOS).
Модуль это ГОТОВАЯ программа с точками экспорта, когда она внедрена компоновщиком, то она стала единым целым с программой-инициализатором и отодрать её от программы это сродни пытаться выдрать черенок плодонесущей яблони из дички после того как они 10 лет вживались - вы просто убьёте и то и другое без какого-либо результата. Это не плагинная система, это система пользования готовыми пользовательскими библиотеками.
Что мы с вами друг друга не понимаем - я вам про яблоки вы мне про дрова. Программа она есть и законечена, в качестве одной из библиотек может быть реализация плагинной системы, но плагины и библиотеки - это разные вещи. Условно - без библиотек программа не запуститься - потому что это её часть и её кровь, программа точно знает какие библиотеки надо подгрузить; без плагинов обычно программы работают и плагины в основном нужны для увеличения функциональности программы на основе непредсказуемого заранее объёма дополнительно используемых кусков кода.Цитата:
Сообщение от captain cobalt
Кажется я пытался это сделать, жаль что столь безуспешно...Цитата:
Сообщение от elf/2
Это значит каждую точку внешнего вызова сопровождать версией?.. но это такое... своеобразное увлечение, боюсь лучше (и гораздо лучше) делать major minor редакции библиотек, а компилятору это учитывать.Цитата:
Сообщение от Vitamin
В любом случае эта программа будет на совести программиста который её писал. Обычно комплект библиотек не являются внутри себя противоречивым, а значит и "кривые" модули будут связаны с криворукостью писавшего текст. Кроме того, если библиотека С версии 1.0 и 2.0 представлена в виде отдельных файлов то ничто не помешает ими пользоваться одновременно - потому что в итоге это будет машкод после сборки.Цитата:
Сообщение от captain cobalt
Хочу уверить что есть и очень хорошая - кооперативная с механизмом псевдовытеснения.Цитата:
Сообщение от elf/2
Жаль что я не увидел кучи примеров. Между прочим ярым писизмом/амигизмом занимаются тут всего несколько человек, жаль что их голоса столь отчётливо слышны... Кидаетесь терминами, хоть попытайтесь обосновать вашу точку зрения словами отличными от "это жалкий писизм" "ооп" и прочими из того же ряда.Цитата:
Сообщение от acidrain
Видимо такие не встречаются в таганроге и в набережных челнах.Цитата:
Сообщение от acidrain
И вообще я считаю это очень своеобразным и локальным явлением...
Простите, а на какой платформе запускать эмулятор амиги? На ZX? Или На x86? Тогда это что - оффтоп? И при чём тут амига? Как вообще эмулятор амиги связан с текущим обсуждением?Цитата:
Сообщение от acidrain
Опять оффтоп?Цитата:
Сообщение от acidrain
Тогда очень неправильно с вашей стороны рассуждать о проблемах и преимуществах написания программ под x86Цитата:
Сообщение от acidrain
Какая мышь, какой GUI? Математическая возможна только гипотетически???? Вы вроде про спектрум говорите? Я тут уже указывал специально для вас список нужны библиотек, жаль что вы это просмотрели (или не успели прочитать, как угодно). Поищите, на 16й странице сего треда. Если есть возражения по поводу списка давайте свой.Цитата:
Сообщение от acidrain
Так заявлять - это не правильно с вашей стороны. вы не знаете, что такое программирование под покетпц? Тогда в сад. Это и есть винда, только урезанная, не смотря на то, что она на арме функционирует.Цитата:
Сообщение от GriV
1. +3.Цитата:
Сообщение от captain cobalt
Код:
lea GFXname(pc),a1
jsr -$228(a6) ; OpenLibrary()
Сколько вам надо регистров для передачи данных? 1 регистр из 16 32 битных доступных на момент перехода - это много?
2. кто вам сказал? это не з80 и не х86.
мне вас искренне жаль 8)Цитата:
Сообщение от GriV
Дочитали до конца? Если объем требуемой инфы превышает возможности этого форума, то как вы прекажите выложить инфу? - ищите. ведь для пц вы нашли? и для амми ее полно.Цитата:
Цитата:
Сообщение от acidrain
Вам проеще скачать эмуль амиги и с нуля все исследовать самому - зацЕните. Обкакаете пц сразуже
Простите, а на какой платформе запускать эмулятор амиги? На ZX? Или На x86? Тогда это что - оффтоп? И при чём тут амига? Как вообще эмулятор амиги связан с текущим обсуждением?
Какая мышь, какой GUI? Математическая возможна только гипотетически???? Вы вроде про спектрум говорите? Я тут уже указывал специально для вас список нужны библиотек, жаль что вы это просмотрели (или не успели прочитать, как угодно). Поищите, на 16й странице сего треда. Если есть возражения по поводу списка давайте свой.[/QUOTE]Цитата:
Цитата:
Сообщение от acidrain
Одна либла - графический интерфейс (ГУИ), графическая либла (? не вижу необходимости для спека). Возможно математическая либла. Что еще может понадобиться? Управление клавой? Мышью? Все это в ехес (керналь-загрузчик).
Нет, ну ты попридираться? Я сказал, что мне пора бежать - все уложил в несколько строк в спешке. То, что ты предложил, мною было повторено (не отрицай - все тоже самое. я не могу постоянно следить за форумом), за исключением доса. чуть не забыл ;) добавим еще dos.library.
Ну зачем для токой системы городить огород в виде вашей линковки и прочего?
Вы конструктивно, без язвлений прокомментируйте, то, что я написал в том посте.
Ведь конструктивизма 0. Прочтите еще раз, скажите, где я не прав?
Неправ в том, что отрицая то, что УЖЕ имеется, ничего не предлагаешь взамен. Потому что твои предложения из серии "а вот на амиге..." (притом что пц ближе к спеку как по доступности, так и по архитектурным соображениям) или морально устарели, поскольку не обеспечивают должного функционала.Цитата:
Сообщение от acidrain
Напоминаю про пост 228 (и не только тебе)
Видать база снова рухнула и закатали бэкап. Посмотри на счётчик написаных сообщений у себя. Я не досчитался где-то 70-ти штук.Цитата:
Сообщение от Vitamin
Я лишь высказываю идею.Цитата:
Сообщение от GriV
Вон, Vitamin говорит что "не противоречит".
Динамический компоновщик.Цитата:
Сообщение от GriV
Загрузчик.
Что ещё нужно?
Попробуем объяснить иначе.Цитата:
Сообщение от GriV
Одни модули используют другие модули. Все модули в целом образуют иерархию. Модули более высокого уровня зависят от модулей нижних уровней. Но модули нижних уровней не зависят от модулей высших уровней. Программа зависит от библиотеки. Но библиотека не зависит от программы.
Если так будет понятнее, мы можем пронумеровать уровни иерархии. Вот например в iS-DOS "уровни ядра" - пронумерованы. И имеется документированный способ выгрузить несколько верхних уровней, чтобы освободить память. Некоторые тяжёлые программы делают. При этом нижние уровни не умирают.
Теперь пусть у нас есть динамический компоновщик. Всё точно так же. Только "ядро" и "уровни" не нужны, а есть просто модули.
Дело было так.Цитата:
Сообщение от GriV
Когда программист писал свою программу, библиотека B использовала C1.0.
И только после этого разработчики B выпустили новую версию, совместимую с предыдущей, но использующую C2.0. Программист не виноват.
Именно в этом смысл этого примера.
Совместимость по версии на один уровень нетранзитивна на несколько уровней.
Нужен пресс-релиз для народа. :)Цитата:
Сообщение от GriV
И не писал под покет, и не буду в связи с этим ничего вспоминать. Зато никогда не скажу что на амми покетпэцэ или ещё где галимый формат библиотек и кривая методика программирования, жаль что это не симметрично....Цитата:
Сообщение от acidrain
Я против оффтопа, а вы продолжаете его развивать, какой нафик ООП, какой CALL по смещению? Это не спектрум и никогда им не будет. Вопрос не в том, что лучше - амига или пэцэ, вообще не понимаю, какое это имеет отношение к предмету обсуждения (так же как эмуляторы и прочая), если вы имеете сказать что вот конкретно этот элемент, принятый в библиотечном программировании на другой платформе имеет явный позитив если его использовать в модульной структуре предложенной витамином, тогда это будет конструктивным, всё остальное я считаю оффтопом и это так по определению.Цитата:
Сообщение от acidrain
Прошу заметить, хоть я не согласен с мнением Captain Cobalt, у него отсутствует оффтоп в этой теме - он хоть со своей точки зрения но предлагает модификации текущей структуры модулей (это я и называю конструктивом).
Я не придираюсь, я прошу быть внимательным и прежде чем отвечать посмотреть всю тему до конца. Если это для вас является сложным, тогда наверное не имеет смысл браться участвовать в обсуждении темы. Первый раз я эту тему начал читать вчера, и прежде чем написал свой ответ, я прочитал ВНИМАТЕЛЬНО все 16 страниц уже существующего треда. Если вы торопитесь то потерпите, выберите какой-то отрезок своего времени, чтобы можно было прочитать всё и разобраться с тем, что написано, а только потом отвечайте. Тред никуда не убежит и ни одна ценная идея не канет в лету.Цитата:
Сообщение от acidrain
Не пытался язвить, если вас обидел, извините я это сделал ненарочноЦитата:
Сообщение от acidrain
Я не очень понимаю на какое ваше сообщение вы ссылаетесь, но попытаюсь предположить.
Я считаю что библиотеки должны в себя включать обыкновенные повседневные процедуры, к коим ГУИ и прочее что вы описали не относятся. Вы что - при написании программы в первую очередь дёргаете мышиный интерфейс и ГУИ? Я думаю вы сами знаете ответ.
P.S. 2acidrain> Очень неприятно когда передёргивают мои ответы и сообщения выдернутые из контекста. Ещё неприятней, когда на явно заданные вопросы не получаешь ответа. Я стараюсь ответить на все вопросы ко мне, в который раз приходиться только сожалеть что это не симметрично...
Хорошо.Цитата:
Сообщение от acidrain
Система команд действительно лучше подходит для таких вызовов.
Зато NOP - и тот два байта. :) И команды имеют разную длину. :)
Короче.
Такой подход плохо подходит для "убогих процессоров". Правильно? Тогда зачем столько разговоров о нём.
Значение регистра убивается.Цитата:
Сообщение от acidrain
Необязательно именно передавать аргумент.
Может мы хотели просто, чтобы в нём хранилось число и не испортилось от вызова.
Да, пример я понялЦитата:
Сообщение от captain cobalt
Тем не менее, можно при помощи модульной структуры и этот момент обойти - кажется здесь уже говорилось про это - собрать модуль А с С1.0 и В с С2.0 - в итоге выйдет два модуля - расширенный А и расширенный В, причём естественно что такого рода изврат нужен только в случае, если кто-то нарочно или нет спровоцировал указанный развал библиотек по версиям.
В том то и дело, что простая система-компоновщик может перерасти в целую систему, как это было с ис-досом (вот и вы на него ссылаетесь), витамин же предлагает просто систему облегчения стараний.Цитата:
Сообщение от captain cobalt
Тогда это конструктив %-)))))))Цитата:
Сообщение от captain cobalt