7

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

Серия Курьёзы программиста

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

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

(с) Рылов В.

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

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

Вывод:

0a


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

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

Вывод:

15 45 e4

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

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

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

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

я напишу:

<< Utils::hex << a

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

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

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

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

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

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

Я начал учить этой весной ради того, чтобы Xonix терминальный написать. Который я последний раз писал на ДВК-2 и ДВК-3 в 1986г. Прям как в детство вернулся)

Кстати, слабо?

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

Xonix - это игра, где нужно поле обрезать для шарика? Звучит круто и как прогресс?)


Кстати, слабо?

ну написать саму игру не сложно, а именно в терминале это сделать - звучит мягко говоря заёбно, но круто. Чисто apt-get скачать и поиграть на линухе из терминала афигенная идея))) Если сделаете, киньте ссылочку

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

Да, это она. Там где области обрезать. И именно в терминале - это так лампово!☺️

Я сделал, кривовато, не смог раскидать параллельные процессы по ядрам проца. Правда на с#, он мне больше понравился. Прям на чпу-станке. Ссылок нет, не выкладывал. И забросил. Пришлось ковырять убоюдочный яваскрипт, потому что на нём один из станков работает. Немного разобрался, дописал таймауты в нужных местах. А с# занялся по причине, что нужна была софтина, типа калькулятора, которая за меня сложные куски G-кода писать будет.

Я вообще не програмер. Я наладчик ЧПУ. И третью в своей жизни игру я сделал уже на рпгмейкере, год назад, от скуки, пока лежал в больнице, за месяц. Большая часть времени ушла на реализацию стрельбы, потому что движком она не предусмотрена вообще никак.

Кстати, обменял игру на двухсотваттные колонки)

Для тебя программирование это работа. А для меня убивалка времени на работе)

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

А чем наладчик ЧПУ от программера отличается? Разве вам не приходится их программировать? Или вы уже готовые скрипты юзаете?

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

Огонь!!!!

Кстати, обменял игру на двухсотваттные колонки)

Ахахаха, это как? Типа права на игру продали?

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

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

Наладчик знает свойства металлов и материалов. Инструмента. Методы обработки (фрезеровка, токарка, токарно-фрезерные станки, эрозия, лазер, плазма). Знает как изменяются свойства металлов при термической обработке (дефекты по Шотке и дефекты по Френкелю). Умеет обслуживать и ремонтировать станки. Шарит в электроаатоматике. Умеет в сварку. Шарит в параметрах стоек (это тебе не биос). Может кинуть локалку, поднять домен-контроллер и сделать удалённое управление и видеонаблюдение. Умеет в 3Д моделирование. И ты не представляешь, сколько видов измерительного инструмента есть.

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

0
Автор поста оценил этот комментарий

Ну, есть три уровня программирования чпу.

Сейчас все генерируют программы. Но это тысячи, десятки тысяч строк кода.

Есть те, кто пишет вручную, пользуясь встроенными циклами (процедурами)

А есть такие, как я, которые делают это на смеси ассемблера с фортраном.

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

В моих уроках тут расписан как раз гибрид фортрана с кастрированным ассемблером.

А вообще, программирование в процессе наладки - это самая простая часть)

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

Я дико извиняюсь, но как одна голова может что-то фоном делать?

У меня из идей только наигрывать мелодии оборотами движка при холостом ходе >.<

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

В 9000 программах пишешь подпрограмму, которая меняет обороты шпинделя +-10%.

Это чтоб стружку ломать.

В основной программе вызываешь её, например перед 71 циклом проточки. Вуаля! Она работает фоном, стружка ломается.

Поищи пример в инете. Я её не выкладывал.

0
Автор поста оценил этот комментарий

Но это же ПРОГРАММИРОВАНИЕ!!!))) Почему тогда вы не программист?)

В моих уроках

а ссыля есть?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества