Данные - это факты о событиях, запись о чём-то произошедшем.

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

Характер и значение данных определяются их структурой, в идеале, отражающей предметную область.

Данные должны быть неизменяемыми, это достигается с помощью двух стратегий:

  1. Copy-on-write - Создание копий данных перед их изменением.
  2. Defensive copying - Создание копий данных на границах системы.

Достоинства:

Данные используются в основном из-за их ограничений. Данные нельзя “выполнить”, они инертны, поэтому данные очень легко понять.

  1. Сериализация. Данные, по сути, являются ничем иным, как потоком байтов, поэтому они идеально подходят для передачи по сетяи, например.
  2. Равенство. Данные можно легко сравнивать.
  3. Интерпретация. Одни и те же данные можно интерпретировать по-разному и в разных целях.

Недостатки:

  1. Интерпретация. Данные необходимо интерпретировать, чтобы они имели хоть какой-то смысл.

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