Size: a a a

Архитектура ИТ-решений

2020 May 19

PD

Phil Delgyado in Архитектура ИТ-решений
Эээ, что же ты такое хотел сделать-то...
источник

IM

Igor Morozov in Архитектура ИТ-решений
Да там всё просто.

Вот есть у меня Software System. внутри неё есть Container.

На уровне языка я решил, что можно вложить объявления. это выглядит естественно, как граф.

Но тогда я не смогу нормально давать имена контейнерам, компонентам и иже с ними — языковые скоупы просто так не работают

Ну собственно, пример почти псевдокодом:

val billing = SoftwareSystem(…) { 
 val pg = Container(…) {
   tags(“database”)
 }
}

// ← вот на этом лексическом уровне уже нет доступа к pg. а хочется для диаграммок и прочего


я в этот момент понял, что я делаю что-то не так и отказался от идеи строить такой дсл на котлине
источник

IM

Igor Morozov in Архитектура ИТ-решений
Вот идея посмотреть в сторону Python — хорошая. на его основе можно что-то соорудить.

Там, правда, нет живых альтернативных интерпретаторов, поэтому скорее подойдёт JRuby. Чтобы получить доступ к Java библиотеке и не писать слишком много своего кода
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А, так это в любом языке не будет работать же, дело не в Котлине, дело в попытке использовать что-то не то.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
На питоне у тебя тоже не будет же доступа к переменным внутри левого скоупа.
источник

IM

Igor Morozov in Архитектура ИТ-решений
да, но я могу вполне родительский объект превратить в контейнер и всё будет нормально
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Тогда типизации, подозреваю, не будет.
источник

IM

Igor Morozov in Архитектура ИТ-решений
И тупо через точку получать доступы. Вместо объявления переменных — объявление новых полей у объекта.

Оно выглядит как-то так же
источник

IM

Igor Morozov in Архитектура ИТ-решений
Ну типизации не может не быть, в общем-то
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А, в смысле что ты строишь диаграмму как большой объект с вложениями?
источник

IM

Igor Morozov in Архитектура ИТ-решений
Ага
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Подумаю, как это на котлине сделать, по идее тоже можно.
источник

IM

Igor Morozov in Архитектура ИТ-решений
Они вообще свою библиотеку сделали так, что у них всё же есть реестр объектов, которые ты создаёшь. И системы, и контейнеры, и компоненты, и связи. Только нельзя к ним по имени обратиться

Вот надо куда-то положить, чтобы было удобно.

Можно либо контейнер, но с ним developer experience грустный что в Kotlin, что в любом другом языке. map накручивать можно, ноооо как-то не хочется

Либо можно в динамику свалиться.

Либо заранее описывать классы с полями, как в некоторых либах сделано. Но не хотелось бы
источник

F

Fagor in Архитектура ИТ-решений
мда... пойду я стартапы пилить... все веселей...
источник

F

Fagor in Архитектура ИТ-решений
Igor Morozov
И тупо через точку получать доступы. Вместо объявления переменных — объявление новых полей у объекта.

Оно выглядит как-то так же
ну уж тогда гетеры запилите, по канону...
источник

F

Fagor in Архитектура ИТ-решений
ладно я конечно шучу, но прям так убиваться в диаграммы, я даже не знаю какой это импакт бизнесу дает... хотя может и дает, я то ваш бизнес не знаю...
источник

IM

Igor Morozov in Архитектура ИТ-решений
Меня вот просто очень бесит рисовать их руками. а описывать всякий PlantUML и мейнтейнить их — нууууу не очень.

Не хочу слишком сильно заморачиваться с ними (иронично, да?), поэтому просто решил, что можно написать простенькую модельку системы на C4 и потом на её основе строить всякие нужные вещи.

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

Вот подобные вещи работают, но хочется по-другому:
https://github.com/structurizr/java/blob/master/structurizr-examples/src/com/structurizr/example/MicroservicesExample.java
источник
2020 May 20

I

Ivan in Архитектура ИТ-решений
Igor Morozov
Вот идея посмотреть в сторону Python — хорошая. на его основе можно что-то соорудить.

Там, правда, нет живых альтернативных интерпретаторов, поэтому скорее подойдёт JRuby. Чтобы получить доступ к Java библиотеке и не писать слишком много своего кода
источник

IM

Igor Morozov in Архитектура ИТ-решений
а он уже тройку поддерживает?
источник

I

Ivan in Архитектура ИТ-решений
Igor Morozov
а он уже тройку поддерживает?
Наверное, лучше не стоит:
https://github.com/jython/jython3/issues/36#issuecomment-369484561
Спроси у Никиты, он же эксперт в Питоне.

По IronPython, я смотрю, ситуация не лучше:
https://ironpython.net/download/
Но там хоть есть прогресс:
https://github.com/IronLanguages/ironpython3
источник