Неправильный подход к изучению программирования. Возможно ли в обозримом будущем найти работу?
Меня угораздило начать учиться программированию с С++. В книжке был минимум объяснений, но были примеры и задачки. Я перерешал почти все задачки, и понял, что ничего не понял. Было принято решение разобраться, как это работает (неудачное, как впоследствии выяснилось). Начал разбирать архитектуру компьютера. Позже взялся за ассемблер. Все изучал основательно, до полного понимания (зря, видимо). Затем C, который я неплохо освоил - все средства этого языка, как мне кажется, осознал, но с минимумом практики: самостоятельно пытался написать некоторые библиотечные функции, поработал немного со структурами данных, т. е. воспроизводил и "игрался" с тем, что встречалось в процессе обучения, кое-что дизассемблировал. Сейчас углубляюсь в Unix-системы и C++. Это, наверно, от какой-то нехватки воображения, не удовлетворяет объяснение, типа: этот системный вызов делает то-то, потом то-то. Мне обязательно нужно посмотреть его код. И все это получается как-то долго. C++ изучаю с библиотекой C. Я воспринимаю этот язык, как какой-то очень навороченный низкоуровневый инструмент. Таким макаром до STL я дойду не скоро. Нужно садиться за руль и ехать, а я лезу под капот, выкручиваю болт и с интересом его разглядываю. Все участники этой гонки уже выехали на трассу и несутся навстречу Мечте, а я залезаю глубже за следующим болтом.
В ближайших планах научиться использовать систему контроля версий, поизучать сети, начать разбираться с многопоточным программированием. Возможно ли с таким подходом, с минимальной практикой, в течение пары месяцев подтянуть какие-то знания и устроиться на работу хоть за минимальную оплату, если, скажем, я хорошо пойму основные вещи в C++ и пройдусь по C++11 и далее, и реализую вышеобозначенные планы? Как мне кажется, чтобы стать полезным в Linux разработке на C понадобится существенно больше времени, чем для плотного усвоения основ C++.
Так не бывает.
Вы как будто учите английский по учебникам, да еще лезете в этимологию слов, заимствования и прочие лингвистические глубины. Но пока вы не откроете рот и не начнете говорить - вы не владеете языком, и вакансии переводчика вам не занять никак.
Понятно, что вам интересен не быдлокодинг, а системное программирование. Но от необходимости наработать навык собственно программирования этот выбор не освобождает.
Совершенно справедливо. Нужно учить язык быстро пройдясь " по верхушка" теории, начать как можно больше программировать, углубляясь по ходу дела, а не "вертеть" одну функцию 2 дня. Это самодисциплина.
С++ -опасная штука. Поэтому начинающих не хотят брать. Может из-за того, что с STL начинают, они такие легкомысленные?
Я дотошный. Может мне подтянуть за пару месяцев определенные навыки (надо точно знать что), чтобы работодателя успокоить и не представлять опасность для проекта?
Вам определенно стит написать резюме и отослать его в такие компании как rtsoft, и aurigа, parallels Будете заниматься под капотом своими болтами!
Да, и посмотрите на язык Rust!
История одного байта
Разглядыватели болтов тоже нужны, но нужны они РЕЖЕ, чем те, что "*уяк-*уяк, и в продакшен".
Прямо сегодня найдите несколько объявлений, где ищут джунов на плюсах, посмотрите каких скиллов вам не хватает. Потом прикиньте, можно ли их освоить за пару месяцев.
История одного байта - это из 90х и самого начала 2000.
Сейчас такой ерундой не занимаются. Не влез код в микроконтроллер? Просто переразведут плату на другой контроллер, с запасом по ресурсам в 5-10 раз.
Меня пугают иногда эти программы на ацкие сотни мегабайт непонятного кода. Представляете, что бы сделал этот веселый мужичок из Истории с сотнями мегабайт? Сейчас эти бородатые суровые мужи пишут сообща полноценный ИИ. И скоро мы о них опять услышим. Я бы поостерегся называть ерундой их творческие муки.
fatfish, низкоуровневое программирование таки нужно и сегодня, просто не во всех областях. С одной стороны имеем текстовые редакторы на электроне, жрущие ресурсы посильнее чем GTA, а с другой где-то сидят люди вылизывающие каждую инструкцию для майнера, видеодрайвера, гигабитного маршрутизатора или автофокуса в камере.
fatfish, если программа выполняет свою работу, то какая собственно разница, сколько она занимает места, 10МБ или 100МБ? Даже если в компьютере всего 2ГБ RAM, разницы никакой не будет.
Вот вы знаете сколько весит MS Office на вашем компьютере? Это имеет какую-то разницу для вас? Нет, потому что он просто работает. И люди его покупают именно за это.
fatfish, лет 20 назад плюсы не считались особо низкуровневыми, низкоуровневым ассемблер был.
И были люди "умеющие в ассемблер", и они делали удивительные, в плане производительности, штуки.
А потом постепенно в компиляторы добавили больше оптимизаций, и вручную их переплюнуть почти невозможно. И не нужно.
Может и в самом деле лет через пять лет какая-то хреновина с диплернингоим научится оптимизировать все эти электроны с питонами. Может даже к фотошопу прикрутят голосовое управление, и он по команде "поиграйся с шрифтами" будет выдавать несколько вариантов, причем не вырвиглазных.
Но пока этого нет можно успеть немножко поработать нажимателем кнопочек и думателем головой.
неправильный подход - это когда вы чего-то похватали по верхам, попытались вайтивайти, у вас не вышло, потому что на самом деле вы нихрена не умеете, вы обиделись и пошли в интернет/на тостер строчить посты как вас обманули.
Если вы чему-то реально учитесь и получаете новые знания и навыки - то это уже по определению правильный подход.
Но, возможно, это неправильный подход если цель - найти работу на плюсах.
Как бы банально не звучало, но чтобы найти работу - надо начать искать работу. База какая-то я так понимаю у вас уже есть - продолжайте учиться и параллельно эту работу ищите. В какой-то момент ваш уровень который вы можете предложить совпадет с уровнем который какая-то компания ищет и вы устроитесь.
К тому же активный поиск дает вам обратную связь которая крайне помогает двигаться в нужном направлении.
Для самоучек это всегда сложно. При академическом подходе всё намного проще - осваиваешь азы всего стека и закрепляешь опытом работы, а хочешь лезть под капот - иди в магистратуру и занимайся наукой плотнее. Вообщем сейчас это изучение не более чем хобби, спортивный интерес, для работы в основе своей нужны спецы умеющие решать тривиальные задачи в разумный срок.
Это конечно неправильный подход изучения С++.
Во-первых, ассемблер сейчас точно не нужно изучать. В работе он нужен 1% программистов, которые пишут какие-нибудь кряки или вирус. Остальные 99% делают фигак-фигак и в продакшн, потому что заказчику нужна готовая работающая программа, которая делает то что написано в ТЗ. Как там внутри это написано, мало кого волнует. А если и волнует, то понятность кода, поддерживаемость, простота важны гораздо больше, чем мнимая "красота" и скорость работы.
Поэтому берите книги и учите С++, классы, шаблоны, STL, многопоточность, сокеты. Можете написать какую-нибудь небольшую программу, например торрент-клиент или хотя бы HTTP-загрузчик файлов.