Поки вчора з Мішею обговорювали мікросервіси, зачепили купу всього по дорозі, і був момент, коли я не зміг згадати слово з доповідей Річа Хікі. Річ взагалі з ніжністю відноситься до слів і не розкидується термінологією, тому його користування мовою наблюдати дуже цікаво.
Так от, в доповіді Effective Programs він каже цікаву річ: що в книжках слово "абстракція" використовувається в двох випадках. Один — коли ми з набору екземплярів створюємо щось істотне, інший — коли ми чомусь даємо назву.
І в другому випадку — це зовсім не абстракція! Тобто реляційна алгебра, datalog та RDF — це абстракції. А клас Person
чи Product
- це конкретизація (бетонування навіть, подивіться на слово concretion). Така сама історія з класами даних у Хаскелі, наприклад, це все конкретизації.
І побудувати якийсь більш-менш загальний засіб керування гетерогенними даними в ОО-мовах чи в статично типізованних мовах — це дуже великий шматок роботи. І вочевидь роблять це тільки тоді, коли вкрай потрібно. Вчора, наприклад, згадалося, як в Django ORM неприємно працювати було, коли ти не просто цілими рядками з таблиці хочеш дані, а якось більш ефективно.
Так, за десятиріччя розвитку стало краще. А в кложі це просто звичайне життя. Як Річ каже: "величезна кількість функцій та синтаксис роблять життя з мапами дійсно кайфовим" (переклад не точний).