В связи со вчерашней дискуссией всплыла интересная тема. В принципе, надо бы спросить гуру функционального подхода, вроде
juan_gandhi, но вопрос, скорее, на общую сообразительность.
Как кудесники монад и эндофункторов объясняют нормальным людям работу их софта? «Иди читай код, болван!» работает только на программистах. Да и то, только на тех, которые не умеют правильно посылать.
Устаревшие методы позовляют нормально коммуницировать если не с обитателями отдела маркетинга, то с людьми, способными думать.
- Идентификатор заказа состоит из полей Число, Время, Источник Запроса, Путь Получения и Уникальный Номер. Для таблицы мы группируем записи по времени с интервалом час и подсчитываем среднее для Пути Получения.
- Менеджер Задач ожидает прихода сигналов. Если сигнал А приходит раньше Б, выполнение продолжается. Если Б не приходит в течении заданного промежутка времени, ситсема снова посылает запрос. Если Б приходит раньше А, Менеджер Задач выдаёт ошибку и переходит в состояние ожидания перезапуска.
- Когда пользователь нажимает на кнопку, окно получает фокус ввода и меняет цвет на синий.
...
Примеры не очень красивые, но для демонстрации принципа сойдут и такие. Главное, всё, что происходит в софте, можно пояснить на простом человеческом языке, причём терминами, понятными специалистами в пердметной области.
Если что-то сложное для простого текста, то это можно нарисовать. И поток управления, и структуру классов, и пути ветвления в зависимости от различных условий для бизнес-процессов.
Чтобы не усложнять задачу, представим, что мы руководим группой Очень Крутых функциональных программистов, которые сделали Крутую Программу. Теперь мы сидим в переговорной комнате вместе с заказчиками и пытаемся всеми доступными средствами объяснить, что же такое замечательное они от нас получат. При этом, заказчики должны во-первых, понять, а во-вторых, заметить те мелочи, которые не соответствуют требованиям и особенностям конкретного применения.
Как кудесники монад и эндофункторов объясняют нормальным людям работу их софта? «Иди читай код, болван!» работает только на программистах. Да и то, только на тех, которые не умеют правильно посылать.
Устаревшие методы позовляют нормально коммуницировать если не с обитателями отдела маркетинга, то с людьми, способными думать.
- Идентификатор заказа состоит из полей Число, Время, Источник Запроса, Путь Получения и Уникальный Номер. Для таблицы мы группируем записи по времени с интервалом час и подсчитываем среднее для Пути Получения.
- Менеджер Задач ожидает прихода сигналов. Если сигнал А приходит раньше Б, выполнение продолжается. Если Б не приходит в течении заданного промежутка времени, ситсема снова посылает запрос. Если Б приходит раньше А, Менеджер Задач выдаёт ошибку и переходит в состояние ожидания перезапуска.
- Когда пользователь нажимает на кнопку, окно получает фокус ввода и меняет цвет на синий.
...
Примеры не очень красивые, но для демонстрации принципа сойдут и такие. Главное, всё, что происходит в софте, можно пояснить на простом человеческом языке, причём терминами, понятными специалистами в пердметной области.
Если что-то сложное для простого текста, то это можно нарисовать. И поток управления, и структуру классов, и пути ветвления в зависимости от различных условий для бизнес-процессов.
Чтобы не усложнять задачу, представим, что мы руководим группой Очень Крутых функциональных программистов, которые сделали Крутую Программу. Теперь мы сидим в переговорной комнате вместе с заказчиками и пытаемся всеми доступными средствами объяснить, что же такое замечательное они от нас получат. При этом, заказчики должны во-первых, понять, а во-вторых, заметить те мелочи, которые не соответствуют требованиям и особенностям конкретного применения.
no subject
Date: 2016-12-07 10:53 am (UTC)Но по-моему так же и объясняют - "когда пользователь нажимает на кнопку, окно получает фокус ввода и меняет цвет на синий". Логика программы остается такой же, просто в коде она выражена другими идиомами.
Ну 60 лет назад заметили, что при работе с массивами очень часто возникает паттерн "изменить индекс, и если меньше N, то поделать дела, если нет, остановиться" и оформили его в виде конструкции for.
no subject
Date: 2016-12-07 11:52 am (UTC)"Всё сделано точно также, только через жопу"
Вопрос был именно про логику выполнения в коде. Потому что у программистов часто программа делает не то, что они думают, она делает.
no subject
Date: 2016-12-07 11:58 am (UTC)В этом отношении т-щ Паронджанов с его "иконами" и прочей примитивной визуаплизацией прямой алгоритмики выступает просто аватором божества. Уже потому что прямая алгоритмика обычно лучше воспринимается ЛПР. А уж в графической форме тем более.
no subject
Date: 2016-12-07 12:14 pm (UTC)no subject
Date: 2016-12-07 12:24 pm (UTC)Проблема же с ООП (обыденная проблема) и с ФП (заведомая) именно в заведомой невозможности представить не вполне компетентному в разработке заказчику фактическое поведение системы.
Как Вы совершенно и заметили.
В случае с ООП эта проблема нерешаема вовсе. Да, осмеливаюсь утверждать именно так.
В случае с ФП теоретически решаема путём обучения заказчика предлагаемой парадигме. Что само по себе ещё та задачка.
Третий случай (Дракон) лишь предлагает дикарский, пещерный, но очень наглядный для некоторых категорий клиентов вариант ясного изложения поведений и структур системы. Что, конечно, не выход, лишь наблюдение.
no subject
Date: 2016-12-07 12:24 pm (UTC)В представленной ситуации придется умалчивать о функциональной специфике, переводя ее на человеческий.
Какая-нибудь проверка на непустоту результата пересечения двух множеств будет озвучена как "если А входит в Б"
no subject
Date: 2016-12-07 12:27 pm (UTC)Почему программисты такие зазнайки? Финансовые аналитики прекрасно понимают всё, что им важно. Инженеры понимают абсолютно всё, включая зависимости по времени.
no subject
Date: 2016-12-07 12:29 pm (UTC)no subject
Date: 2016-12-07 12:39 pm (UTC)А вот среда инженерии куда причудливей. Неоднократно сталкивался с большой трудностью объяснить -- а, например, вот конструктору-ракетчику матмеханизм и логику функционирования нашей программы БЦЭВМ. У него не только не хватало понятийного аппарата воспринять блок-схемы, матрицы состояний и потоки событий -- они просто не желали этого делать. Им подавай, буквально, мультик. Заверения "вот эта теорема с этими наблюдениями учтены" для них пустой звук. "Хочу видеть", и всё тут. А "видеть" -- извините, на полигоне. Стенд дороже изделия, и "в рамках ОКР денег нет". И как объясняться? Трудно. Но у меня обычно получалось хорошо. Хотя бы потому что я-то их понимал, а это уже две трети успеха.
no subject
Date: 2016-12-07 12:41 pm (UTC)Просто (к вопросу о зазнайках) именно в области ФП зазнаек сегодня фатально много. Подавляющее большинство.
no subject
Date: 2016-12-07 12:48 pm (UTC)no subject
Date: 2016-12-07 12:50 pm (UTC)no subject
Date: 2016-12-07 01:02 pm (UTC)Человек, отказываясь проявлять компетенцию в несвойственных ему областях (например, заведомо отказываясь принимать решения отличные от инструктивных) лишь закрепляет свой профессиональный статус.
Про это ходит много анекдотов в рамках темы "извилина одна, да и та от фуражки", и большинство этих хохмочек глупы. Да, такая школа мешает прогрессу. Но она же сильна надёжностью в серии и в режиме.
Впрочем, в российском ракетостроении эта школа уже почти исчезла (по причинам естественной смертности её носителей и огромном разрыве поколений на производстве), так что теперь, может быть, и выйдет что-то иное.
Пока же жду катастроф на РЖД. Там пока школа "одной извилины" ещё сильна. Как вымрут -- пойдут отказы СЦБ и диспетчеры начнут играть на смарфоне за пультом одноколейки (говррят, демократия это позволяет и одобряет).
Это ни хорошо, ни плохо. Это другая школа. Отличных специалистов в своих областях. Которым нет нужды учить Бэйсик и пытаться понять основы задвигов Страуструпа. Они очень хорошо делают своё дело, и им по долгу службы приходится иногда общаться с т.н. "программистами". Что порой вызывает проблемы.
Мне почему-то показалось, что Ваши рассуждения затрагивают именно эту тему. Видимо, ошибался. Ну что ж, всегда был дурнем, в очередной раз признать не стыдно.
Вот. Именно.
Date: 2016-12-07 01:08 pm (UTC)"Мэнеджэры... ну, тупые-е-е!".
Заказчики? А, это те кто не хотят платить мнохо денех на развитие ФП.
Конечные пользователи... а это вообще кто такие?
И вообще... если вы не знаете что такое "монада", хотя они везде... с таким недоумком даже разговаривать не о чем. %)))
no subject
Date: 2016-12-07 01:11 pm (UTC)Но пока списываю на свой узкий горизонт и вообще малый опыт работы -- где они там привыкли хвалиться? телеком? причём в рамках базовых коммутаторов? видеонаблюдение?-- действительно, там я просто сильно внутри не бывал. Даже прислушиваясь к пивному хвастовству автоматизаторов трейдинга ни разу не слышал ни "про лисп", ни "про замыкания" и т.п.
А вот вся промэлектроника, которую видел -- либо чистая алгоритмика: даже плюсы скорее исключение; если не "чистый Си", то как правило разновидность ассемблера с визуализатором алгоритмов в рамках фирменной IDE; либо, наконец, ПЛИС (что само по себе отдельная тематика).
Re: Вот. Именно.
Date: 2016-12-07 01:12 pm (UTC)no subject
Date: 2016-12-07 01:17 pm (UTC)П*ж.
Обычное текстовое описание, с последовательным исползованием лексических денеиц,
легко (ну, отностельно, это уже от программиста зависит, да) переводится в ООП,
по принцыпу:
существительные -- объекты,
глаголы -- взаимодействия между ними.
no subject
Date: 2016-12-07 01:20 pm (UTC)no subject
Date: 2016-12-07 01:21 pm (UTC)Страструп - это не то, на что стоит равняться, если поглядеть, во что превратился С++.
Насчёт катастроф - это общая болезнь. Специалистов для DB не найти. Просто нет людей с достаточно глубокой подготовкой по базовым предметам.
no subject
Date: 2016-12-07 01:23 pm (UTC)no subject
Date: 2016-12-07 01:26 pm (UTC)Просто исходя из того, что только что употреблённый Вами термин "пиздёж" в рамках типичной ООП-программы вполне может выражать "бурные, продолжительные апплодисменты сопровождали речь докладчика". Что бы Вы ни пытались мне сейчас эмоционально выразить -- а вот у меня просто библиотека другая. И всё. Доклад был хорош, но реализация слита в унитаз.
Это изначальная фича ООП.
no subject
Date: 2016-12-07 01:27 pm (UTC)Приятно слышать.
no subject
Date: 2016-12-07 01:28 pm (UTC)no subject
Date: 2016-12-07 01:29 pm (UTC)no subject
Date: 2016-12-07 01:34 pm (UTC)