пятница, 10 января 2014 г.

Лирика. Ещё про UML

Буквально сегодня работал с моделью наших библиотек и меня "осенила" одна банальная мысль.

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

Раньше я "держал в голове" реально строки кода. Я помнил где и что находится. Какой класс за что отвечает. Какие связи между классами существуют. Что и где в каком модуле находится.

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

Но дело в том, что текстовая информация - очень "детальна и избыточна". КАЖДАЯ (непустая) строка кода что-то значит.

А этих строк - много... МИЛЛИОНЫ... Десятки миллионов....

И в конце концов - "память кончается". Более новые строки вытесняют более старые.

И к "старым строкам" подчас бывает "мучительно больно возвращаться". Вспоминать. Восстанавливать "кеши".

И главное, что мне же не нужны "детали".

Точнее так - "мне ДАЛЕКО НЕ ВСЕГДА" нужны детали.

А "строки кода" предполагают именно ДЕТАЛЬНОЕ "погружение" в архитектуру проекта. Так, а не иначе.

Другое дело - "графические образы".

Приведу пример - я давно заметил, что многие люди воспринимают картинку с иконками на рабочем столе - как "некое рабочее окружение". Они НЕ ЗАДУМЫВАЮТСЯ - "какая иконка что означает". Они лишь видят "разноцветные пятна" и "узорчики". Мозг САМ "додумывает" за людей "а какая функциональность скрывается за этим узорчиком".

И более того - "нарабатывается механистическая моторика" движения мышью. Люди не задумываясь откатываю мышь в правый нижний угол, а потом перемещают её на НУЖНОЕ количество пикселей к нужному "узорчику".

Так и с UML.

Те же "разноцветные пятна", "узорчики". Та же "механистическая моторика".

А ГЛАВНОЕ - при "чтении" или работе с диаграммой - мозг записывает на подкорку ВСЮ архитектуру системы в виде "графических образов".

И уже МИЛЛИОНЫ строк кода превращаются в ТЫСЯЧИ квадратиков и стрелочек. Да ещё и устроенных как "матрёшка". Таким образом - сложность системы - ЛОГАРИФМИРУЕМСЯ, да и не один раз.

Я понял, что я реально мыслю "графическими образами". Если я решают какю-то практическую задачу, то у меня в голове встают уже не "строки кода", а "узорчики". Которые МОЙ мозг уже по-другому воспринимает и по-другому обрабатывает.

КОНЕЧНО - я говорю ТОЛЬКО про СЕБЯ. У других людей мозг устроен по-другому. Но исходя из "закона больших чисел" - существует ХОРОШАЯ вероятность, что я НЕ ОДИНОК.

Ну вот и всё что я хотел сказать про UML сегодня.

P.S. за скобками остались такие "банальности" как годогенерация и модульное тестирование.

P.P.S. у меня есть ОДИН проект где НЕТ UML ВООБЩЕ. И я часто крайне мучительно приступаю к правкам кода в этом проекте. Притом, что этот проект на два или три порядка меньше остальных. Теперь меня "осенило" - почему так происходит. ЛОГАРИФМИРОВАНИЯ сложности - нету.

5 комментариев:

  1. Не скажу, что мыслю квадратиками, но при проектировании какой-нить новой функциональности для нашей системы, я сначала тоже рисую квадратики и стрелки между ними. На бумаге.
    Потом детализирую связи, "кручу" "модули"... и только потом уже рождаются объекты БД и код (pl/sql и в Delphi).

    Причём код я научился писать так, как об этом рассказывал Александр Алексеев: http://www.gunsmoker.ru/2010/07/blog-post_31.html
    Это пришло как-то само-собой, и такой код (почти без комментариев, с разделением большого по маленьким) легче читать и держать в голове.

    ОтветитьУдалить
    Ответы
    1. ВОТ! :-) А "квадратики" это - "следующий уровень" :-) Цитату я у вас украл :-)

      Удалить
  2. http://myrobot.ru/articles/rev_marvin_minsky.php

    Цитата: "Если вы думаете о чем-то, то можете думать об этом с точки зрения языка и с точки зрения логики либо в виде диаграмм, рисунков или структур. Если один метод не работает, вы можете быстро переключиться к другому. Именно поэтому мы настолько хорошо справляемся с очень многими ситуациями."

    Оффтоп небольшой... ближе к концу Марвин говорит "вот бы мне 4-5 программистов для создания ИИ".
    Теперь я знаю, зачем мне нужны деньги в олигархических масштабах.
    Собрать Люлина, Янковского, Зверева... и рвануть к Марвину :)

    ОтветитьУдалить
    Ответы
    1. "Оффтоп небольшой... ближе к концу Марвин говорит "вот бы мне 4-5 программистов для создания ИИ".
      Теперь я знаю, зачем мне нужны деньги в олигархических масштабах.
      Собрать Люлина, Янковского, Зверева... и рвануть к Марвину :)"

      У меня специализация в ВУЗе была - "автоматизация и интеллектуализация процессов управления". Посему к ИИ - я отношусь ОЧЕНЬ скептически. Потому что "не вынес из ВУЗа" ничего "практически применимого".

      Я лично всй больше "на коленке" практикую. Ну от "чертежей" (читай "инженерная графика").

      Хотя и ИГ - я не очень любил в ВУЗе.

      Удалить
  3. >>P.P.S. у меня есть ОДИН проект где НЕТ UML ВООБЩЕ.

    Xcode/Objective-C? :)

    ОтветитьУдалить