OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:09

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 09:49 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Пришлось использовать STL. Приятно удивился тому, что там есть то, что ускоряет процесс разработки, например, для выборки из списка записей (или сортировки) можно передавать самому разные критерии, код занимает одну строку.
За счет этого можно, сводя задачу к алгоритмам и структурам данных STL за разумное время реализовывать масштабные вещи.

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

Но с другой стороны, это действенная альтернатива динамической типизации в Python (что до этого также помогло мне уменьшить объем кода для решения задач со сложными структурами данных и их обработкой), вопрос типизации переносится в compile time.

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

Начал приходить к мысли, что шаблоны - это следующий этап решения проблемы сложности кода (после ООП, наверное, которому предшествовало структурное программирование).

Не пора ли в BlackBox ввести шаблоны классов и процедур, чтобы получить возможность аналога STL?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 11:40 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Шаблоны в BlackBox, а, точнее, в Component Pascal, никто добавлять не станет. Большей части наиболее активных его пользователей они не особо нужны.

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

Если хочется использовать готовые структуры на все случае жизни, проще всего соорудить генераторы кода в КП.

У каждого свой путь, и если всё же шаблоны воспринимаются как что-то необходимое, то лучше перестать мучать себя КП и использовать то, что Вам лучше подходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 12:34 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
А поиск по задаваемому позже критерию тоже руками предлагаете городить?

Генератор текста - это и есть реализация шаблонов. Только стоит еще добавить некоторые проверки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 13:33 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Kubanych писал(а):
А поиск по задаваемому позже критерию тоже руками предлагаете городить?
Работа с шаблонами в том же С++ подразумевает доступность используемых алгоритмов в виде исходного кода. При наличии исходного кода добавить нужный критерий не составляет существенной проблемы. Тут принципиальный вопрос лишь в форме работы с исходным кодом. Если же критерий объёмный, или скорость некритична, то он вполне может быть закодирован в ООП стиле. Если скорость критична, то альтернативы собственной реализации, учитывающей все ограничения задачи, нет

Цитата:
Генератор текста - это и есть реализация шаблонов. Только стоит еще добавить некоторые проверки.
Да, но с точностью до наоборот - шаблоны - это частный случай генерации кода. В общем случае генерация кода может быть мощней.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 16:17 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Так я и делал раньше. И генераторы писал, генерировался код, сериализующий многократно вложенные структуры, состоящих из произвольных комбинаций динамических массивов и записей, а в переменной части заменял списками и делал свою реализацию.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Воскресенье, 11 Июнь, 2017 17:27 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Kubanych писал(а):
А поиск по задаваемому позже критерию тоже руками предлагаете городить?
Опять какие-то странные, хм, эмоции.

Напишите поиск с критерием в виде процедурной переменной -- и на здоровье передавайте её потом поиску.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Среда, 14 Июнь, 2017 07:08 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Вот, процедурные переменные и есть хороший аналог лямбда выражений для предлагаемых шаблонов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Среда, 14 Июнь, 2017 08:05 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Цитата:
Хотя шаблоны предоставляют краткую форму записи участка кода, на самом деле их использование не сокращает исполняемый код, так как для каждого набора параметров компилятор создаёт отдельный экземпляр функции или класса. Как следствие, исчезает возможность совместного использования скомпилированного кода в рамках разделяемых библиотек.

Шаблоны - это похоже совсем не гуд, используйте нормально методы работы с абстрактными приемами, POINTER TO ANYREC и т.п. при написании универсальных алгоритмов. У Петра было точно несколько примеров работы с универсальными сортировщиками. Поглядите подсистему Lists, кажется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Среда, 14 Июнь, 2017 08:23 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Вот это и причина многогигабайтных дистрибутивов современных программ.
Но, похоже, большой размер дистрибутива - это меньшее зло, на которое готовы пойти поставщики и потребители ПО,
чтобы снизить издержки разработки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Среда, 14 Июнь, 2017 09:50 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Так ведь достоинства и недостатки шаблонов и структур данных, основанных на нетипизированных указателях, давно известны.
И знающие об этом люди выбирают с умом необходимое для конкретной задачи решение, учитывая множество факторов.
Генерация кода по некоторому шаблону внешней тулзовиной, без поддержки на уровне яп и компилятора имеет давно известные недостатки. И на эти грабли наступают вновь и вновь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Шаблоны для Blackbox
СообщениеДобавлено: Четверг, 15 Июнь, 2017 22:56 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
А Вы встречали более-менее полное описание этих проблем? Мне это интересно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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