|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2015, 10:30 | #11 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Цитата:
Тем самым сможете отслеживать уже загруженные модули и не возникает проблемы нескольких юнитов ссылающихся на один и тот же юнит. Скорее проблема будет типа circular reference. Мы сейчас про хранение или про выполнение? Что касается дубликатов, если у вас минимальная единица - файл, тогда ничего не выйдет дубликаты так и останутся. Если при загрузке доступ на уровне функции, тогда можно убирать дублирующиеся функции. |
|
01.07.2015, 10:48 | #12 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
||
01.07.2015, 16:43 | #13 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Проблема одинакового содержимого под разными именами лежит в области проектирования, а изначально -- в психологии.
Скажем, любой мало-мальски развитый проект на C/C++ наверняка содержит по несколько локальных реализаций функций strstr(), strchr() и подобных, разбросанных по файлам. Причина -- воспринимаемая ментальная сложность подключения библиотечных заголовочников, проистекающая от отсутствия модульности в C/C++. В нем надо думать, чтобы не напортачить, из c/cpp-файла переключаться на его заголовочник, учитывать порядок включения, #define-ы и прочее. В Delphi уже нет такой сложности, достаточно вписать SysUtils в uses, поэтому описываемая ситуация почти не встречается (встречается в проектах, написанных переученными сишниками). В Канторе еще проще -- имя SysUtils достаточно вписать через двоеточие в месте использования, ничего дополнительно подключать не надо. При отсутствии модульности язык имеет потоковую природу, поэтому решения должны искаться в рамках потоковой парадигмы. Поскольку C/C++ -- компилируемые языки, дублирование функций в них не является проблемой, ибо развитый потоковый оптимизатор с высокой вероятностью развернет простые функции в месте вызова, поэтому сишники и не парятся по поводу дублирования (и ловят уязвимости по переполнению буфера, поскольку библиотечные функции системно совершенствуются, а свои велосипеды -- нет). Другое решение -- в интерпретируемом потоковом языке PHP. Акселераторы PHP эмулируют глобальное пространство имен и теоретически могут отслеживать одинаковые по содержанию скрипты при помощи хешей. Если не хочется возиться с доказательством эквивалентности кода, решение на основе хешей можно позаимствовать, но считать хеши не от текста скрипта, а от некоего нормализованного внутреннего представления. Совпадают хеши -- совпадает и смысл.
В разработке: воспроизводственный контур ИТ
Последний раз редактировалось Vapaamies; 01.07.2015 в 20:09. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Организация автоматизированной системы распознавания изображений 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 |