7

Ох уж этот *СиПлюсПлас*

Так получилось что я научился писать на языке С++. Как так получилось? Амбиции, тщеславие, желание выебнуться. Главные чувства, пульсирующие в моём сердце, когда я слушал лекцию Рылова В. по плюсам в нгу на фите. До сих пор помню его слова:

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

(с) Рылов В.

Я начал кодить на плюсах примерно на втором курсе универа, т.е. 2015 год. Сейчас двадцать четвертый, жесть. Девять лет прошло. Конечно я не кодил непрерывно на этом языке. Последний год до работы на заводе я вообще бросил их, обещая себе наивно, что не вернусь к ним. Думал, что перешёл на Python. Но... Вот я снова с ними. В первые года отношений я испытывал влюблённость, меня тянуло к ним как сейчас тянет к своей мадам. Но потом стали появляться звоночки. Причём громкие. Мне больно было слушать их. Сердце разрывалось. Я не понимал, язык ведь идеальный, на нём можно столько крутого всего делать. На нём делают ААА игры (и ни на чём больше!), потому что такой уровень науки (да-да, в компьютерных играх используются бешенные технологии) можно захерачить только там. Чтобы игра выглядела красиво, игралась драйвово, ничего не лагало. На этом языке такие мощные штуки делаются, ну разве кроме запуска ракет. Там вроде до сих пор Fortran в моде. Короч писец. Язык крутой. И понятное дело не простой. На нём сложно (тогда мне казалось, что это сложно, хи-хи-хи) программировать. Я принял эти правила. Но почему было так больно. Когда...

Я уже не вспомню, что конкретно мне отдавало болью. Поэтому поделюсь сегодняшней задачкой. Я на неё потратил полдня. Первые полдня я создавал этот канал. Тайм-менеджмент на вершине! Так вот, есть такой код:

Ох уж этот *СиПлюсПлас* Мат, Программист, Смешанные чувства, Бомбёж, Страсть, C++, Длиннопост

Вывод:

0a


Код выводит число в шестнадцатеричном формате. Мне, как embedded программисту часто приходится работать именно с этим представлением. Выяснил, что плюсах до 20 стандарта вообще какие-то проблемы с выводом шестнадцатеричных чисел. Есть функции на Си, но блинский, плюсы, ё-моё, а своё?

Идём дальше. Теперь нам потребовалось написать вот так:

Ох уж этот *СиПлюсПлас* Мат, Программист, Смешанные чувства, Бомбёж, Страсть, C++, Длиннопост

Вывод:

15 45 e4

Да, кто внимательный, заметил, что пиздец чёт дохуя одинаковой хуйни. Программист на то и программист, что любит избавляться от дублирования. Я по крайней мере точно, у меня это синдром. Прям не могу спокойно на это смотреть. Я специально использовал переменные разного типа данных, чтобы не было соблазна запихать их в массив и в цикле перебрать это добро. Поэтому решение с моей колокольни лишь одно: нужно реализовать собственный манипулятор ввода/вывода, по примеру с setw, setfill или hex. Как истинный гуру программирования я заглянул в свою душу, чтобы отыскать ответ, а душа мне говорит:

Гугли. Ну а хули, я загуглил. Вот ответ. Портянка слабо говоря немаленькая (именно длину кода я имею в виду). Однако у меня получилось встроить её в проект:

Ох уж этот *СиПлюсПлас* Мат, Программист, Смешанные чувства, Бомбёж, Страсть, C++, Длиннопост
Ох уж этот *СиПлюсПлас* Мат, Программист, Смешанные чувства, Бомбёж, Страсть, C++, Длиннопост

Итого, что мы имеем. Я добился уменьшения длины строки. Теперь вместо

<< std::setw(2) << std::setfill('0') << std::hex << (int)a

я напишу:

<< Utils::hex << a

Результат на лицо. Я доволен. Пока не начал считать строки кода...

Было 6 строк кода, а теперь 32! Вау, сэкономил ... длину строки. Да, конечно я могу вынести пространство Utils в отдельный файл и подгружать, когда мне нужно воспользоваться этим "волшебным" манипулятором ввода/вывода. НО: а я воспользуюсь им вообще когда-нибудь? Зачем я потратил 4 рабочих часа на это? Ну были бы у меня те 3 длинные строчки (в рабочем проекте мне нужно вывести 6 переменных, но написать пришлось бы всего один разок). Что я получил? На самом деле я получил удовлетворение. Малюсенькое. Да, теперь я спокоен. Но проблема в том, что я это не контролирую. Если я вижу, что могу что-то улучшить, я это делаю практически не задумываясь, чего мне это будет стоить. Сколько сил уйдёт.

Да, вы можете сказать, что не в языке дело, а во мне. Да, это правда. НО блять сука но. Но заключается в том, что этот язык, язык С++ даёт мне кучу возможностей для улучшения. Буквально бесконечную возможность способов себя заебать.

Не так: "я могу вот так сделать круто, а могу вот так круто сделать". Нет. Я могу попробовать 10 способов, которые в результате не дадут никакого эффекта. И только сука 11 способ приведёт меня туда, куда нужно, удовлетворив мой тщеславный перфекционизм. Язык как будто поощряет меня ебать себя через колено. И я как наркоман этим пользуюсь.

В целом вот весь тэйк, я нарик и снова попал в заложники.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

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

раскрыть ветку (21)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (19)
0
Автор поста оценил этот комментарий

Т.е. вы стали ориентироваться на бизнес в своей работе?

раскрыть ветку (18)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (17)
0
Автор поста оценил этот комментарий

Это я много раз слышал)) Но мой вопрос немного глубже. Я занимаюсь программированием, потому что того просит моя душа. Это моя страсть. Так получилось, что я решил связать своё стремление и то, чем я хочу зарабатывать деньги. Т.е. работу с увлечением. Но тот факт, что я пришёл на работу программистом, где мне платят деньги, не означает, что я отказываюсь от своей страсти в пользу работы. Повторюсь, только потому что мне платят за это деньги. Работодатель мной не владеет. Бизнес мной не владеет. Я свободный человек, который "типа" ограничен трудовым договором. Но по факту я решаю, сколько времени я потрачу на ту или иную задачу, сколько я буду писать код и насколько глубоко я буду погружаться, до какой поры буду оптимизировать код. И в целом это сложно кому-то контролировать. Разве что не поставить надо мной человека, который разбирается в моём коде, в моей предметной области. Короч тим лида, который будет 8 часов в день стоять над душой. Тот же самый бизнес не даст просто ему денег на это, потому что этот специалист дорогой и он будет заниматься чем-то другим. А у меня есть выбор. Подстраиваться целиком и полностью под бизнес или искать свой, менее проторенный путь.

раскрыть ветку (16)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (15)
0
Автор поста оценил этот комментарий

идеальный код

Я про идеальный код и не говорю. Не предлагаю вставить его во главу угла. Я просто к тому, что необязательно "отдаваться" бизнесу целиком и полностью. Нужно учиться искать баланс. Поэтому я и спрашиваю других, как им удаётся не скатываться в перфекционизм в кодировании. Выбрать просто другую сторону, сторону бизнеса для меня тоже не выход. Это всё равно что отказаться от самого себя. Так что буду искать дальше)

раскрыть ветку (14)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (13)
0
Автор поста оценил этот комментарий

а как же самореализация?)

раскрыть ветку (12)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (11)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (10)
0
Автор поста оценил этот комментарий

Уфф, не хотел бы я когда-нибудь оказаться доёбщиком дооптимизатором(( А как у вас происходит кодирование программы?) Возникают ли у вас соблазны оптимизировать, даже если чувствуете, что это лишнее? Приходится ли бороться с этим чувством или вы просто по кайфу пишете код?)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку