Доклад с ArchDays 2021 "Язык на пути к DevArch: разгонная полоса или лежачий полицейский?" от Игоря Беспальчука
Достаточно интересный и дискуссионный доклад, в котором автор размышляет над текущим состоянием дел в мире разработки и архитектуры ПО и задает классические вопросы "кто виноват" и "что делать". Отдельно отмечу, что автор сразу очервивает границы своих размышлений корпоративным software и мейнстримными объектоно-ориентированными языками. Начинает автор с того, что говорит о том, как обычно пытаются понять систему - с точки зрения функциональной декомпозиции, выделяя части системы с значимой функцией и областью ответственности, а также рассматривая связи между такими частями. Автор говорит о том, что это основа системного мышления, но разработчикам такой взгляд на систему дается сложно, так как мешает их стандартный язык, а точнее следующее
- В ООП по мнению автора практически отсутствует способ выражения целое/часть
- В современных ООП языках слишком многое смешано в универсальном понятии "класс"
- Язык определяет сознание, поэтому разработчикам на ООП языках сложно думать о программном обеспечении системно Дальше автор делает историческую ретроспективу, рассматривая как развивались подходы к языкам программирования и паттернам
- Начиналось все с компьютерных вычислений (а лямбда исчисления как основу функционального подхода еще Алонсо Черч придумал в 30х годах 20 века для анализа проблемы вычислимости)
- Потом появилось структурное программирование (спасибо Дейкстре)
- Потом появились ООП языки (тут большой вклад Алана Кея)
- Функциональное программирование было давно, но оно сейчас проникает в мейнстрим, но все таки в чистом виде оно не слишком распространено по сравнению с ООП С использованием этих подходов люди строили системы и дальше начали появляться паттерны, которые решали часть проблем, которые появлялись при росте размера системы и долговременном ее развитии. Многие слышали паттерны вида
- GRASP
- SOLID
- CQS/CQRS
- DDD
Это все хорошо, но мир разработчиков и архитекторов разделен, причем разделен на уровне семантики и языка, который они используют в своей работе. Существуют попытки навести мосты и на самом деле часть проблем можно решить, на уровне соглашений, аннотаций, использования DSL и анализаторов кода. Но часть это приводит к риторике в формате "контроля архитектором работы разработчиков".
Автор предлагает для улучшения ситуации подумать об общем языке, который сблизит архитектуру и разработку. И вот собственно мысли автора на этот счет
- Надо ценить достижения языков ООП и ФП, но отказаться от крайностей
- Надо добавить специализации "классам" в языке от уже известных паттернов (превратить паттерны в языковые конструкции)
- Добавить новый паттерн: герметичный компонент с рядом новых запретов и гарантий
А дальше автор приводит ряд примеров и предлагает подумать о большем. Ну и напоследок приводит свой vision по развитию этой области на 5-10 лет вперед.
#SystemDesign #SoftwareArchitecture #Software #Conference