Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2015, 10:30   #11
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
В памяти. Вот загрузилась основная программа. Нашли список юнитов, и? Как их хранить в памяти?
Например как std::map<UnitName, UnitBody>

Тем самым сможете отслеживать уже загруженные модули и не возникает проблемы нескольких юнитов ссылающихся на один и тот же юнит. Скорее проблема будет типа circular reference.

Мы сейчас про хранение или про выполнение?

Что касается дубликатов, если у вас минимальная единица - файл, тогда ничего не выйдет дубликаты так и останутся. Если при загрузке доступ на уровне функции, тогда можно убирать дублирующиеся функции.
waleri вне форума Ответить с цитированием
Старый 01.07.2015, 10:48   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Так это и есть каша в голове. По-умному называется "отсутствие проектирования". К языку не имеет никакого отношения, только если вы не хотите решить задачу доказательства эквивалентности кода в том или ином виде -- то есть научиться формально доказывать, что физически разные участки кода на вашем языке делают одно и то же. Это сильно выходит за рамки модульности, я бы сказал.
Я хочу просто уберечь людей от подобных проблем. Никакой каши нет.
Цитата:
Мы сейчас про хранение или про выполнение?
Хоть про что. Модели пока нету, но уже подошло время к ее реализации. Поэтому мне нужно срочно выработать какое-то решение, способное закрывать очевидные грабли.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.07.2015, 16:43   #13
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Я хочу просто уберечь людей от подобных проблем. Никакой каши нет.
Проблема одинакового содержимого под разными именами лежит в области проектирования, а изначально -- в психологии.

Скажем, любой мало-мальски развитый проект на C/C++ наверняка содержит по несколько локальных реализаций функций strstr(), strchr() и подобных, разбросанных по файлам. Причина -- воспринимаемая ментальная сложность подключения библиотечных заголовочников, проистекающая от отсутствия модульности в C/C++. В нем надо думать, чтобы не напортачить, из c/cpp-файла переключаться на его заголовочник, учитывать порядок включения, #define-ы и прочее.

В Delphi уже нет такой сложности, достаточно вписать SysUtils в uses, поэтому описываемая ситуация почти не встречается (встречается в проектах, написанных переученными сишниками). В Канторе еще проще -- имя SysUtils достаточно вписать через двоеточие в месте использования, ничего дополнительно подключать не надо.

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

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

Последний раз редактировалось Vapaamies; 01.07.2015 в 20:09.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация автоматизированной системы распознавания изображений php + js Aleks47-samara Помощь студентам 7 23.02.2015 22:19
Общие модули системы. Организация WennY Общие вопросы по программированию, компьютерный форум 0 29.11.2012 20:49
Несколько юнитов в DLL Alex Cones Общие вопросы Delphi 2 09.11.2010 18:45
Правильная организация системы плагинов-расширений Alexei91 Общие вопросы Delphi 4 26.09.2010 18:10
Чем отличается подключение юнитов до implementation и после? TwiX Общие вопросы Delphi 1 07.12.2009 02:13