Стандартизация первого уровня. Расширение-2

«Расширение-1» было гомогенным, собирающим аналогичные (stateless) функции из различных предметных областей. Пора идти дальше.

Рассмотрим «структуры данных». Это термин я использую, так как не смог придумать ничего лучшего. Я не имею ввиду типы в языках программирования, типы в языках программирования являются «конструкторами», позволяющими собрать нужную «структуру данных», а не структурами данных.

Я говорю о постоянно используемых «логических» структурах, которых совсем не много:

  • Список
  • Очередь (FIFO)
  • Стек (LIFO)
  • Дерево (разные деревья)
  • Ассоциативный массив
  • Хеш-таблица
  • Вектор (№-мерная матрица)

Вот это «золотой фонд» программирования. Это безусловно часть «Лексикона программирования», о котором говорил А.П. Ершов.

Мой список не полный, например, я не включил в него графы, так как считаю, что их в программах не бывает. Точнее не должно быть, так как граф – это список или дерево, дополнительно провязанное слабыми ссылками. Может я не прав, и не собираюсь сейчас на своем утверждении настаивать.

Важнее другое, перечисленные «структуры данных» существуют отдельно от языков программирования (по крайней мере в голове опытного программиста).

Попробуем добавить их мысленно в open semi-binary репозиторий…

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

Вот всего лишь несколько вопросов/мыслей, которые возникают:

  • А как же быть со статической типизацией?
  • Они же такие разные? Списки чего? Деревья чего? Гетерогенные деревья (списки) – как сделать?
  • Есть templates, зачем еще что-то придумывать?
  • Как помещать в репозиторий? Ведь это не отдельная функция. А что это? Класс? Объект?
  • А как быть с тем, что для структур данных (как правило) используется куча?
  • А как быть со сборкой мусора?
  • И с тем, что в одних случаях сборка мусора нужна, а в других нет?

Этот клубок вопросов придется разбирать по частям. И разбирать я его буду исходя из того, что над-языковые структуры данных дадут скачок в качестве программирования, а значит, помещать их в репозиторий надо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *