vit_r: default (Default)
[personal profile] vit_r
Задумался о вечном, пока вчера вечером отвечал на комментарии о программировании, а на другом экране тётя в онлайн курсе разбирала мозг и рассказывала что, почему и где отключается при инсульте, ударе и других неприятностях. (Вечером смотрю, потому что после просмотра весёлой дамы со скальпелем аппетит совершенно пропадает.)

Что-то странное происходит с коммуникацией. Вроде, просто констатирую банальности.

Например, полезно называть вещи своими именами.

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

Если вместо слова "рефакторинг" использовать термин "ошибка на уровне дизайна", можно вместо дурацких рассказов про запах кода (Кстати, чем он пахнет? Потной футболкой программиста?) говорить об ошибочных предположениях, отвергнутых гипотезах, оптимизации на основе лучшего понимания и, конечно, о способах устранения этих ошибок до начала бессмысленного сжигания бюджета на кодировании.

Также программисты прекрасно помнят, что в зависимости от задач и выбора алгоритмов затраты ресурсов в зависимости от объёма данных могут расти линейно, экспоненциально, квадратично или сублинейно.

Почему-то при этом удивление, граничащее со священным ужасом, вызывают вполне очевидные слова о том, что совершенно также в зависимости от задачи и выбранного решения линейно, экспоненциально, квадратично, сублинейно... от объёма кода может зависеть его когнитивная сложность (то есть те же затраты ресурсов на его обработку).

Ещё я писал, что есть задачи, где результаты однозначно зависят от входных данных, и проще решать их процессом преобразования в структурном подходе. Есть задачи, решаемые операциями над множествами, и лучше реляционных баз данных для них ничего не придумали. Есть задачи, раскладываемые на иерархию модулей. Если добавить к этому немного психологии восприятия, очевидным решением будет использование объектно-ориентированного подхода. Есть задачи, где можно прямо набивать в коде решение по образцу. Есть те, где надо сначала понять структуру и найти оптимальные пути решения, а потом переходить к частностям, спускаясь сверху вниз по уровням моделей. (И при правильном подходе сами модели напрямую в код преобразовывать.)

Так нет же. "Давайте представим, что весь мир состоит из математических абстракций, и применим современные модные методы, не взирая на мелкие отклонения реальности от идеала".

Мне кажется, что я пишу достаточно элементарные вещи. Но они почему-то вызывают странные реакции.

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

Date: 2018-03-11 05:16 pm (UTC)
From: (Anonymous)
У математиков есть готовые решения, у них проблемы с поиском задач. Если в руках молоток - то везде монады мерещится.

Date: 2018-03-12 04:16 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Давно уже на монады не наезжали.

А лемма Ионеды вам тоже не по душе? А законы де Моргана?

Date: 2018-03-18 11:41 am (UTC)
From: (Anonymous)
Когда их именем начнут называть програмистские конструкции,
и расказывать что "онежевизде" и "тот кто этого не понимает -- ну, тупоо-о-ой"
Дойдет дело и до них. ;)

Date: 2018-03-11 05:35 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
Не, "рефакторинг" - это не "ошибка на уровне дизайна". Дизайн - вещь не статическая, а динамическая.

Во-первых, требования к программе не фксированны, а меняются со временем.

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

В-третьих, программу сколько-нибудь заметных размеров невозможно вот так сесть и написать целиком. Она так или иначе пишется частями. Если пытаться имитировать "написать целиком" и писать все части и потом их ждруг с другом соединять, то работать ничего не будет (чему есть множество примеров). Части эти придется очень сильно именять, чтобы подогнать друг к другу. Более разумный вариант - начинать с минимальной функциональности и постепенно выращивать оттуда, чтобы все время была работающая программа, но ее функиональность постепенно росла.

Date: 2018-03-11 06:47 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
> Ну, скажем, летит зонд к Юпитеру.

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

> Хорошие требования содержат большой раздел "риски", куда входит описание всего, что известно только в виде предположений, и способы действий в этой ситуации.

И этот раздел обычно оказывается бессмыссленным по сути, и способы дейтсвий в нем - неверными.

> И возможность внесения необходимых изменений закладывается в дизайн изначально.

О! То есть, все-таки рефакторинг.

> Легенда о том, что из самоката небольшими наращиваниями можно сделать Мерседес, очень привлекательна, но неправдоподобна.

Тут надо вспомнить о том, из чего сделали настоящий Мерседес в реальности. И окажется, что это не легенда, а реальность.

Date: 2018-03-11 08:26 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
> Даже, если это одна платформа, на следующем зонде будут другие приборы, системы с другими параметрами, другие массово-габаритные характеристики и прочее.

Во-от. Другие. Созданные с использованием полученного опыта.

> Я писал не про "обычно", а про "правильно".

Думать, что можно все предусмотреть заранее - неправильно.

Date: 2018-03-12 04:48 am (UTC)
From: [personal profile] alexott
это хорошо когда время заложено на прототипы и т.д., только на практике получается что требования меняются/добавляются каждый месяц, и у верхнего менеджмента все время меняются приоритеты...

я думаю что есть компании где это все делается, но скорее всего это что-то около-государственное/военное, где время особо не считают...

Date: 2018-03-13 05:22 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
Полученного от предыдущих миссий. Все идет итеративно.

Date: 2018-03-14 01:25 am (UTC)
sab123: (Default)
From: [personal profile] sab123
С чего бы им быть независимыми?

Date: 2018-03-14 10:00 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
Даже те, которые в других странах, полагаются на найденную информацию о рабочей среде.

Date: 2018-03-14 10:12 pm (UTC)
sab123: (Default)
From: [personal profile] sab123
Имея готовый код, конечно, легче его отрефакторить. Но не имея его, знания об области задач тоже очень важны, и составляют собой центр всего проектирования.

Date: 2018-03-12 04:18 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Я уверен, что трехколесный мерседес еще можно где-нибудь встретить в реале.

Date: 2018-03-11 11:14 pm (UTC)
From: [personal profile] bowhill
Сколько зондов летит к Юпитеру?

Date: 2018-03-12 08:33 am (UTC)
From: [personal profile] anonim_legion
>Легенда о том, что из самоката небольшими наращиваниями можно сделать Мерседес, очень привлекательна, но неправдоподобна.

Это же про Линукс! Мерседес и вправду не получился, но работать с ним всё равно приходится.

Date: 2018-03-11 05:57 pm (UTC)
From: [personal profile] smugastyi_kit
Проблема в том, что мы все (ну или бОльшая наша часть) разучились общаться.
Мы все неплохо умеем отстаивать свою правоту, приводить аргументы, передергивать, уводить темы в другую плоскость, в общем — заниматься демагогией.
А вот общаться — увы. :(

Date: 2018-03-11 06:13 pm (UTC)
xoxlobandera: (Default)
From: [personal profile] xoxlobandera
Ага.

Date: 2018-03-11 09:38 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Рефакторинг - это не ошибка архитектуры. Это ИСПРАВЛЕНИЕ ошибки архитектуры.

Баг - это да, ошибка кодирования. Но кодирование может быть на языках совершенно разного уровня.

Date: 2018-03-12 04:20 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Это мы тут должны были догадаться пять лет назад, что ваши выдумают GDPR.

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

Date: 2018-03-12 12:07 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Да я против него не возражаю особо-то.
Просто почему-то этот общеевропейский ответ даже европейцам не был заранее известен. Как и Y2K. Типичные же примеры, когда традиционные стандартные решения вдруг оказываются неправильными. А теперь уже все правильные, что ли? Да я б начал с логики. Ну и с монад.

Date: 2018-03-18 11:54 am (UTC)
From: (Anonymous)
Казнить, нельзя помиловать.
Казнить нельзя, помиловать.

Какой из двух вариантов -- ошибочный? ;) (надеюсь вы и так поймете, на что тут намек, вы же умный, али разжевывать нужно?)

Profile

vit_r: default (Default)
vit_r

February 2026

S M T W T F S
12 34 567
8 91011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 12:10 am
Powered by Dreamwidth Studios