9.1. СТРУКТУРИРОВАНИЕ ДАННЫХ
483
Система данных, перерабатываемых программой, базируется на простых
и неделимых понятиях — первичных элементах системы. Выбор базы пер-
вичных элементов зависит от точки зрения на программу, в частности, от
того, что считается существенным и чем можно временно пренебречь. Аб-
стракция рассмотрения в значительной степени определяет и взгляд на дан-
ные. В то же время, различные уровни абстрактности данных требуют раз-
личных языковых средств, иногда своего языка описания обработки. Это ка-
сается и средств оперирования, и структур данных. Реальная моделируемая
программой жизнь содержит не целые, вещественные и иные числа или мас-
сивы, а вполне конкретные объекты, представляемые в программе числами,
структурами, массивами и т. п. Выбор представления сущностей предопре-
деляет реализацию конкретных операций, и чаще всего успех либо неудачу
программного проекта.
Поэтому, если задача с самого начала ставится корректно, правильно го-
ворить о выборе языка программирования, соответствующего решаемой за-
даче. Но часто выбор языка навязан внешними обстоятельствами. В любом
случае программист должен осознавать:
• на какие средства описания он вправе рассчитывать и чего не может
требовать в данной ситуации;
• какие абстракции являются идеально подходящими для решаемой за-
дачи, и как это идеальное моделируется в реальном языке.
Ответ на эти вопросы существенно зависит от квалификации самого про-
граммиста. Первая часть этого положения — вопрос специального образова-
ния программиста, вторая — общей теоретической подготовки.
Обычный язык программирования предлагает широкий ассортимент воз-
можностей организации данных. Следовательно, перед программистом сто-
ит задача выбора не только абстрактного, но и конкретного представления
данных. Видимость, что здесь больше свободы, чем при составлении алго-
ритмов, обманчива. Налицо взаимосвязи и взаимовлияние. Фиксация струк-
тур данных определяет, будет ли хорошо работать тот или иной алгоритм. С
другой стороны, идеально подходящие для алгоритма объекты — не только
образы конкретных объектов, но и прообразы программной структуры дан-
ных, которая не может быть выбрана произвольно. Традиционные критерии
эффективности по времени вычислений и занимаемой памяти ныне являют-
ся отнюдь не самыми важными. На выбор и алгоритмов, и структур данных
существенно влияют ответы на следующие вопросы: