Category: it

vit_r

Про чекистское рождество

Смотрим на аватар и запоминаем:
Vit minus R dot com

Там сейчас ничего нет, но если что, адрес всем известен.

Запомнить советую потому, что Гугл находить не будет, если сделаю так, как мне нравится. Судя по тестам, Империя Зла фильтрует определённые вещи из результатов поиска. Бинг и остальные в подобном не замечены.

А теперь к делу.
Collapse )
vit_r

В дебрях водопада

Изучая развитие технологий производства и методологий планирования процессов в области информационных технологий, всё больше и больше склоняюсь к мысли о том, что оптимизируются они по формуле P4Sh (Pay for shit! или более вежливо You have to pay for our shit.)

Причём, это действует на всех уровнях от языков программирования до создания новых направлений.

Помнится, ещё в прошлом веке после лекции о том, что сейчас называют «agile», специалист по праву в области софтостроения недоумевал, как на подобное смогут согласиться вменяемые заказчики. Прошло меньше двадцати лет...

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

Удаётся отнюдь не всем.
vit_r

Про ёжика в тумане, зазнайство, языки программирования и вериги

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

Как кудесники монад и эндофункторов объясняют нормальным людям работу их софта? «Иди читай код, болван!» работает только на программистах. Да и то, только на тех, которые не умеют правильно посылать.

Устаревшие методы позовляют нормально коммуницировать если не с обитателями отдела маркетинга, то с людьми, способными думать.

- Идентификатор заказа состоит из полей Число, Время, Источник Запроса, Путь Получения и Уникальный Номер. Для таблицы мы группируем записи по времени с интервалом час и подсчитываем среднее для Пути Получения.

- Менеджер Задач ожидает прихода сигналов. Если сигнал А приходит раньше Б, выполнение продолжается. Если Б не приходит в течении заданного промежутка времени, ситсема снова посылает запрос. Если Б приходит раньше А, Менеджер Задач выдаёт ошибку и переходит в состояние ожидания перезапуска.

- Когда пользователь нажимает на кнопку, окно получает фокус ввода и меняет цвет на синий.
...

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

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

Чтобы не усложнять задачу, представим, что мы руководим группой Очень Крутых функциональных программистов, которые сделали Крутую Программу. Теперь мы сидим в переговорной комнате вместе с заказчиками и пытаемся всеми доступными средствами объяснить, что же такое замечательное они от нас получат. При этом, заказчики должны во-первых, понять, а во-вторых, заметить те мелочи, которые не соответствуют требованиям и особенностям конкретного применения.
vit_r

Про ёжика в тумане, зазнайство, языки программирования и вериги

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

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

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

Самое хреновое, что начав думать, невозможно остановиться. Поговорил с детьми, поиграл, посмотрел новости, почитал книжку, а на задворках сознания всё время прокручиваются оборванные наброски, комбинируя всё новые и новые варианты.

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

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

Про ёжика в тумане, зазнайство, языки программирования и вериги

Остаётся тут пояснить, почему я такой умный, а сам многих из этих приёмов не использую: мой блог и мои учебники читать-то невозможно! Во-первых, я устный существенно отличаюсь от меня письменного: устная коммуникация у меня в разы и разы понятней. Люди сильно удивляются, впервые увидев меня живьём, а не в виде текстов.


Угадали кто это? Ну конечно же [Spoiler (click to open)] ailev в подвале очередного поста. (Кстати, понятность устного общения - это по большей мере иллюзия. Просто плотность информации меньше и качество её передачи хуже контролируется.)

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

Сложилась бы судьба по-другому, может быть и остался таким же. До сих пор лежат архивы, куда как сорока сносил всё увиденное.

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

Во-вторых, оказалось, что я не пригоден для консалтинга.

Дело не в языковом или культурном барьере. Когда надо, убедить отдельного человека или зажечь аудиторию не так сложно. Проблема в том, что всё это требует упрощения. И приходится взбираться на пьедестал, откуда вещать банальности.

При этом, без разницы, рассказывать ли с умным видом элементарные вещи или сыпать на неподготовленную аудиторию хитромудрые наукообразности. Главное - это всё будет понято неправильно и применено криво.

И консультант хорош лишь до тех пор, пока не начинает этого понимать.

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

К сожалению, я слишком рано начал видеть лажу.
Collapse )
vit_r

В дебрях водопада

Хотел написать вечером, получилось ночью. ailev выставил замечательную схему. Она настолько прекрасна, что я её сюда скопирую.

ailev_LJ_1289942_Схема_организации_предпринимательства

В центре - предприниматель с (чужими) деньгами. Справа - покупатели и инвестор. Слева - Инженерный Менеджер [sic], Системный Инженер, CTO/CIO.

Картинка великолепно выражает, то что я вижу постоянно в разных формах и разных интерпретациях. Название в оригинале «Схема организации предпринимательства», а должна бы называться «Схема развода лоха».

Такие тут не ходят, так что можно приоткрыть завесу над тайной современной индустрии софтописания. (Предваряя вопросы, замечу, что я знаю, как надо, но это рассказ долгий и не сейчас.)
Collapse )
vit_r

Про немецкие компьютерные науки

Она была красива, изящна, быстра.
База данных.
Десять лет назад.


Это было вместо эпиграфа.

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

Победа разума выглядит совсем не так, как проповедует ailev. Никакого deep learning. Никаких нейросеток. Никакого профессорского парения. Но это ещё не вся тайна.

Сеть односвязная. Без циклов. (Может они и есть, но пушкам за угол стрелять не приказывали.) Вся классификация сети проходила путём административным. То есть, классы без всяких научных методов составлялась заинтересованными сторонами путём нудного и долгого обсуждения с введением конечного результата в приказном порядке.

Плюс переводы на другие языки выполнены отдельной фирмой и обязательны к исполнению для поставщиков и иностранных отделений.

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

Ошибки не ищутся в принципе. Люди, работающие с сетью, находят дыры в данных сами. После чего вызывают запросы на исправление.

Изменения листьев никаких действий выше по сети не инициируют. Только когда отчёт составляется сверху вниз информация от листьев может дойти до ответственных и вызвать какие-то реакции.

И, конечно, много чего красивого и обещающего только в перспективе. Работает лишь простая часть. Простая и понятная.

Это позволило выбросить старые запутанные системы и даёт перспективу заменить другие, висящие сбоку. И, пока на балансе одни победы, можно усиленно рекламировать технологию, предлагая её для всех случаев.

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

Похоже, индустрия совтописания страдает не от молодости, а от разрыва поколений. Нет такого, как в механической инженерии или электронике. Некому сказать «Ну, попробуй. Только учти, мы так пытались делать в тысяча девятьсот восемьдесят третьем году и наткнулись на это, это и это. А вот здесь лучше сделать так. Но всё равно из-за того и сего это не взлетит.»
vit_r

Про ёжика в тумане, зазнайство, языки программирования и вериги

HTML5_Handbuch_cover

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

Оглавление половины просмотренных книг по этому самому HTML5 вызвало очень странное впечатление, частично подтверждённое отзывами. На английском ничего актуального и сопоставимого не нашлось.

Поиск библиотек решений выдал горы примеров того, как сайты и приложения для смартфонов раскрашивать. Из кода несколько наборов различных приколов сомнительной полезности. А, вот, по взаимодействию пользователя с информационной системой как-то печально. Особенно, если исключить PHP. У университетов только теоретические упражнения по моделированию.

Копаю дальше.
vit_r

Про ёжика в тумане, зазнайство, языки программирования и вериги

Software Engineering
В гости к juan_gandhi пришли perdakot, thedeemon, nponeccop и другие высоколобые товарищи, пообсуждать, почему это в области надёжного автомобильно-самолётно-спутникового софтостроения дремучие менеджеры нагораживают ООП с процессами и запрещают применять всякую красоту вроде
fun evenSqares {n:nat | n % 2 == 0 && n >= 4 %% n != 10}(x : int n) : int(n*n) = x*x

Выяснилось, что народ не знает различия между верификацией и валидацией.

Я их вечно путаю, так что объясняю просто: Та, которая «ве», - она про «Кто виноват?», а которая «ва», она про «Что делать?» (Кто не застал уроков литературы советских времён, пусть придумает что-то посовременнее.)

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

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

Качество верификации определяется метриками надёжности типа наработки на отказ. И стоимость растёт экспоненциально при приписывании сзади очередного нуля.

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

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

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

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

Про ёжика в тумане, зазнайство, языки программирования и вериги

И от грелок бывает польза. Если, конечно, читать не нетленку, а комментарии.
Получал я диплом учителя информатики на курсах. Там целых две или три пары было посвящено программированию. На Паскале. Это такой нафиг никому не нужный язык, но достаточно простой. Пока мне объясняли и показывали - я все понимал. Как только начался самостоятельный материал - все, стена. Стыдно признаваться, но именно за лабораторки по программированию я единственный раз в своей жизни дал взятку преподу, чтобы зачли. В общем, самое сложное, что я мог сделать с детьми на уроках - это калькулятор на Делфи. И то, один раз такое было, потому как информатику мне преподавать практически не пришлось. И не придется более, так сложилось.
...
И захотелось мне сделать свою игрушку. Уже давно, вернее, хотел - но не получалось. А тут как раз допилили Construct2, идеальная среда разработки для дизайнеров. Там, короче, просто прописываешь алгоритм действий, по типу: если кликнешь левой кнопкой мыши на квадратике, квадратик улетит за край экрана. С фантазией было туго, поэтому, вместо очередного клона Злых Птиц я начал себе делать игры для работы, чтобы можно было использовать в классе. Потратил больше месяца на первую, но получилось. Потом вторая, третья, четвертая... в процессе создания и курения мануалов до меня дошло все, чего я не понимал несколькими годами ранее, например, массивы. Код получался донельзя кривой, и я это знал, но в то же время, он работал.
Потом я для себя определил, что если получается работать на алгоритмическом уровне, то я же теперь смогу работать и на языковом без посредника. Только в уме перевести выражение Кликнуть мышкой по на что-то вроде mouse.onclick итп. Еще пошерстил интернет, покурил мануалы, определил, что мне нужно осовоить для того, чтобы заняться веб-дизом и веб-девом на профессиональном уровне. PHP, JavaScript, HTML, CSS, MySQL ну и еще там по мелочи. За два месяца отпуска у меня получилось освоить начала PHP, сейчас уже изучаю его более глубоко, сделал свой первый проект. Опять кривовато, но работает же. По мелочи вычистить глюки, и можно людям показывать. И теперь каждый день я учу языки программирования дальше и дальше. Через год-два, думаю, освою и сменю профессию.
тут