К основному содержимому
#SystemDesign

Доклад с ArchDays 2021 "Язык на пути к DevArch: разгонная полоса или лежачий полицейский?" от Игоря Беспальчука

#SystemDesign #SoftwareArchitecture #Software #Conference

Достаточно интересный и дискуссионный доклад, в котором автор размышляет над текущим состоянием дел в мире разработки и архитектуры ПО и задает классические вопросы "кто виноват" и "что делать". Отдельно отмечу, что автор сразу очервивает границы своих размышлений корпоративным software и мейнстримными объектоно-ориентированными языками. Начинает автор с того, что говорит о том, как обычно пытаются понять систему - с точки зрения функциональной декомпозиции, выделяя части системы с значимой функцией и областью ответственности, а также рассматривая связи между такими частями. Автор говорит о том, что это основа системного мышления, но разработчикам такой взгляд на систему дается сложно, так как мешает их стандартный язык, а точнее следующее

  • В ООП по мнению автора практически отсутствует способ выражения целое/часть
  • В современных ООП языках слишком многое смешано в универсальном понятии "класс"
  • Язык определяет сознание, поэтому разработчикам на ООП языках сложно думать о программном обеспечении системно Дальше автор делает историческую ретроспективу, рассматривая как развивались подходы к языкам программирования и паттернам
  • Начиналось все с компьютерных вычислений (а лямбда исчисления как основу функционального подхода еще Алонсо Черч придумал в 30х годах 20 века для анализа проблемы вычислимости)
  • Потом появилось структурное программирование (спасибо Дейкстре)
  • Потом появились ООП языки (тут большой вклад Алана Кея)
  • Функциональное программирование было давно, но оно сейчас проникает в мейнстрим, но все таки в чистом виде оно не слишком распространено по сравнению с ООП С использованием этих подходов люди строили системы и дальше начали появляться паттерны, которые решали часть проблем, которые появлялись при росте размера системы и долговременном ее развитии. Многие слышали паттерны вида
  • GRASP
  • SOLID
  • CQS/CQRS
  • DDD

Это все хорошо, но мир разработчиков и архитекторов разделен, причем разделен на уровне семантики и языка, который они используют в своей работе. Существуют попытки навести мосты и на самом деле часть проблем можно решить, на уровне соглашений, аннотаций, использования DSL и анализаторов кода. Но часть это приводит к риторике в формате "контроля архитектором работы разработчиков".

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

  • Надо ценить достижения языков ООП и ФП, но отказаться от крайностей
  • Надо добавить специализации "классам" в языке от уже известных паттернов (превратить паттерны в языковые конструкции)
  • Добавить новый паттерн: герметичный компонент с рядом новых запретов и гарантий

А дальше автор приводит ряд примеров и предлагает подумать о большем. Ну и напоследок приводит свой vision по развитию этой области на 5-10 лет вперед.

#SystemDesign #SoftwareArchitecture #Software #Conference