Всё хорошо, но не очень

в 22:45, , рубрики: c++, Программирование, метки: ,

Надоело… Накипело и надоело. Не знаю как высказаться и поймёте ли вы о чём я, но всё же, не судите строго.
За всё что только не возьмись — всё хорошо, но «не совсем». Я не имею большого опыта, можно сказать, — junior — 1 год. Увлёкся программированием, а именно C++ — программированием. Да-да, именно «C++ — программирование». И с этого всё началось. Сначала чтение много чего, чтение днём и ночью: начиная с «C++ за 21 день» или чего-то в этом духе, заканчивая бандой четырёх и их модными паттернами.
Первое что приходило в голову — «Нет ничего сложного и когда говорят, что C++ сложный и запутанный — слишком сильно преувеличивают». Ну подумаешь, множественное наследование и проблема с неоднозначностью — так всё верно ж — виртуальное наследование, как минимум, тебе в руки. Всё и так давным давно написано умными людьми — осталось просто почитать и правильно понять. Что ж тут сложного?
Ага, почитал.

Лафоре — для малышов, то что нужно для того, кто не видел раньше программирование — основы ООП и C++ ООП. Шилд… Страуструп 1 («Язык программирования С++»), Страуструп 2 («Справочное руководство по языку программирования C++ с комментариями»), Страуструп 3 («Дизайн и эволюция С++»), Саттер 1й, Саттер 2й. Мейерс 1й, 2й, 3й с его рекомендациями. Дьюхерст с его священными знаниями. Солтер и его коллега с С++ уже для проффесионалов. Начитался. Знал уже различие между интерфейсом и абстрактным классом, о нужности виртуального деструктора в иерархии классов. О приведении типов «вниз» и «вверх» иерархии. Пришло чёткое понимание «раздельной компиляции», всяких там поздних и ранних связываний, об extern и inline тоже было ясно. Знал и про исключения и чётко понимал и мог ответить на любимый вопрос при собеседовании «А что будет, если выбросить exception в конструкторе?.. а в деструкторе, а?». Ладно-ладно, ответил, а как насчёт наследования? «Правильно, public, private, protected и…? (вдруг не знает о virtual? — да, извините, в любой книжке чёрным по белому написано)».
А что такое виртуальный метод, а чисто вируальный? а const что значит, а константный указатель и указатель на константу? а?
Всё хорошо, но для написания консольных приложений не возьмут, нужно уметь GUI писать. Хорошо. Возьмёмь Qt и будем учиться… да! вот теперь есть толк… только нужно, «было бы не плохо», знать это и… извините, а STL, вы знаете? Да, конечно, ведь «Джосьютис — C++. Стандартная библиотека» (и ещё кое-что 90х годов) читалась, знаем про функторы, алгоритмы, написание своих функциональных объектов тоже знаем, да что там! Использовать умеем. Угу! Всё хорошо, но давайте немножко побольше узнаем про шаблоны (Вандервуд, к примеру, — для начала). Это слишком просто — Александреску со своими списками типов — вот оно!
Ага — собеседование, первое, волнуешься. Как бы не спросили про частичную и полную специализации шаблонов, не подкололи по поводу неопределённости вычисления значений аргументов, передаваемых в функцию. Алгоритмы ж совсем не знаешь ( да, нужно подчитать — себе на заметку). Да-да, приходишь — и слышишь — «А что такое переменная?»… А функция? — молодец… Наследование? Ого, и о виртуальном слышал. Отвечаешь на вопрос про виртуальный конструктор говоришь, что паттерн такой есть — блескаешь умом и сообразительностью). Говоришь, что знаешь о STL, где какой контейнер использовать знаешь, а об О-символике слышал? — Да. — А напамять быстродействие контейнеров, а?..

Все говорят, что нужно, для опыта, попасть в комманду, хотеть программировать и тебе улыбнётся удача… А ещё уметь разбираться в чужом коде… Ну вот оно — ты попал на работу в солидную компанию, кругом люди, которые senior-девелоперы, помогут, всё хорошо, но… На тебе огромный проект (n-годовой давности) — не знал об MFC? Так посмотришь как раз…
Ого, молодец, немножко понимаешь что к чему в этом проекте? — там используется COM-библиотека — почитай про COM, а в конце концов разберись в нашей библиотеке (документации конечно же не густо) и напиши минимальный клиент с использованием MFC и COM.
Молодец, разобрался — программа твоя работает? — Работает. Ну вот и хорошо (А посмотреть, что я там написал и как я это сделал, а качество кода — да никому ничего не надо!).
Но сейчас проектов на C++ нет. Читай. Читай COM. ( и про подразделения COM почитай, разберись)… Ага. Хорошо. Читаешь MFC, паралельно WinApi (сообщения, очередь сообщений, цикл обработки сообщений, оконная процедура… основы запомнил. К ним еще несколько 10в ф-й, Рихтера, говорят, надо бы почитать — берём и его). Читаем COM — слушаем вокруг — да он же умер, его никто не использует, но нужно почитать. ActiveX уже не выдерживаем, да еще и этот дурацкий подсчёт ссылок, маршаллинг… А еще ручками сейчас никто не пишет — давай ATL…

Молодец — почитал и забыл… А вот и проект… ну как проект — просто поможешь там другим, ты ж сейчас ничем не занят? Нужно dll написать, чтобы делала то то и то. Не знаешь — google тебе в помощь. Не получается? — google тебе в помощь.

Вот так вот сидишь и что до команды опытных разработчиков никому не нужен, так и с ней — никому не нужен.
Знаний никаких, вариантов развития ноль, на работу не ходишь — к чёрту всё, на подзаработку — тоже не ходишь — та идёт вся эта работа к чёрту вместе с этим программированием. Как ничего не получалось, так и не получается… и только у тебя! — все вокруг во какие успешные… Учёба тоже — крахом.

Автор: Door

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js