Иван Кузьмицкий писал(а):
Осталось рассказать о вашем открытии самому Вирту А если серьёзно и внимательно посмотреть на найденное, то внезапно выяснится, что процедурная абстракция сортировки делается ровно один раз, а потом вызывается ровно столько раз, сколько нужно - и никакого дублирования кода нет.
Не могли бы вы указать на код, абстракции я не нашёл. Как минимум каждой сортировки реализовано, по 2 раза. Для списка и массива.
Иван Кузьмицкий писал(а):
Я о чём и говорю - программист, вооружённый шаблонами, мыслит шаблонно, пытаясь натянуть реальную обстановку на своё знание шаблона. Возможно, ещё и по этой причине, Вирт не стал перегружать Оберон сугубо практическими вещами, предполагая лишь их библиотечное использование. Не знаю.
Чем шаблоны не библиотека? Статически линкуемая библиотека, можно так сказать. Вот оно расширение через библиотеки.
Вот смотрите, берём язык с шаблонами и без. Почему в обероне преобладает односвязный список? Правильно, просто проще написать. Идём дальше.
Нужен чуть сложнее список, к примеру с добавлением в конец. Что для этого нужно. Как минимум создать переменную, которая будет указывать на последний элемент. Глобальная переменная вроде как не хорошо. Значит, нужно создать структуру список, в которой будут поля, первый, последний и следующий, а возможно ещё и предыдущий и указатель на данные.
Теперь просто добавить элемент не получиться. Нужно создавать 2 записи, для списка. плюс ко всему для каждого типа нужно повторить действия. Чем здесь помогает минимализм оберона не понятно. Я уже не говорю о функциях для списка, таких как добавить в конкретный узел и т.д Одна рутина.
Та же очередь. Можно создать через список или массив. Или список массивов. В языке с шаблонами можно написать все 3 реализации, с одним интерфейсом и в нужном случае использовать ту реализацию, которая будет больше подходит под задачу. Шаблоны помогут избежать рутины.
Теперь вектор, реализации могут быть тоже разные, это простая реалокация, при удалении из вектора, создавать список свободных индексов, который сможет снизить перевыделение памяти. На шаблонах можно, написать нужные реализации и использовать их.
И полно других, разных структур данных которые не так просты в реализации. И мне непонятно, как кп или оберон поможет мне не дублировать код. Как избежать выше изложенной рутины при программировании кп?