Мне снова пришлось работать с корпоративными системами: на этот раз с WSO2. Я еще раз вспомнил, почему я ненавижу это. Маленькие ошибки порождают большие неинтуитивные проблемы, которые трудно отлаживать и исправлять.

Такие приложения нарушают Принцип наименьшего удивления/удивления (PLS), потому что они используют неполные слои абстракции поверх реального кода. Иногда разрыв происходит по замыслу, поскольку поставщики хотят, чтобы ваши специалисты специализировались на некоторых причудах (также известных как опыт). Иногда обрыв происходит непреднамеренно из-за неполной очистки, вирусов в основном много неоплаченного технического долга.

В любом случае, веская причина, по которой предприятию нужны уровни абстракции, заключается в том, что они хотят иметь возможность настраивать/настраивать систему с использованием высокоуровневых доменных языков, а не кода (для них это всегда низкий уровень: c, c++, java, .net, kotlin). , swift, javascript, что угодно). По этой причине они изобретают файлы конфигурации xml (с огромными вредоносными программами вокруг них), а в последнее десятилетие файлы конфигурации json или просто простые интерфейсы пользовательского интерфейса. С ними вы начинаете терять гибкость. Обычно эти системы имеют функциональную форму (а не императивную), поскольку вы скорее описываете намерение, а не шаги.

Мысль: что, если функциональное программирование всегда заканчивается перерывом в PLA? Это неполные уровни абстракции, которые нарушают PLA, или только уровни абстракции?

Я надеюсь, что мы поймем, что неполные предметно-ориентированные языки не помогут. Нам нужна спецификация домена/бизнеса/конфигурация/настройка программного обеспечения, но в реальном DSL, а не в файлах типа «укажи и щелкни» или xml. Некоторые шаги в этом направлении:

  • стандартные форматы данных для обмена информацией (schema.org, микроданные, твиттер-карты, открытый график)
  • стандартные процессоры данных, независимые от транспортных технологий
  • рынок взаимозаменяемых импортеров/экспортеров данных из/в различные источники. IFTTT движется в этом направлении.