Раскачка C++ скилла

Разбираться в новой для себя области, конечно, интересно, но хочется в будущем и пользу с этого иметь. Поэтому, разбираясь сейчас с плюсами задался следующими вопросами:
1) Дополнительные технологии. Перелопатив несколько десятков вакансий, обнаружил, что востребованы знания STD (что, впрочем, не дополнительная технология) и Boost по части библиотек, плюс сетевое и многопоточное программирвоание по части технологий. В остальном же — прикладная область.
Есть ли ещё какие-либо must know вещи для c++ разработчика, которые не зависят от специализации (алгоритмы, ооп, архитектуры ос и прочие фундаментальные вещи — это к впросу не относится, т.к. понятия языконезависимые и их знать в любом случае нужно, а меня сейчас интересует конкретно C++)
2) OpenSource-проекты с низким порогом вхождения и качественным кодом, чтобы такой новичок в прикладном программировании (за плечами в основном веб) как я мог видеть, как это делают взрослые дяди, и писать код, который будут смотреть и оценивать другие программисты.

В общем суть такова, что я хочу стать через некоторое время востребованным c++ разработчиком. А для этого одного только знания языка недостаточно, как показывает моя практика.

p.s. Я смотрел и в сторону .net, и в сторону java, и в сторону мобильных платформ, но не приглянулись, поэтому советы по поводу выбора другой технологии будут излишни, я думаю.
  • Вопрос задан
  • 7134 просмотра
Пригласить эксперта
Ответы на вопрос 7
@sige
Qt это другой мир, не std и не boost. Я думаю тех требований которые вы нашли в вакансиях очень даже достаточно. Надо практиковаться много — много. В c++ у вас развязаны руки и надо на практике набивать шишки, чтобы понять когда и насколько использовать все эти си плюс плюсные фишки.

Если вам хочется писать «труъ» программы, где главное логика, алгоритмы, скорость, то лучше больше смотреть на std, boost, если больше гуя, то более глубоко изучать Qt.

Проектов подсказать не смогу к сожалению. Хотя бы пока что посмотрите исходники, ну того же boost. Там все довольно сложно и дизайн «библиотечный», то есть все написано максимально абстрактно и обобщенно (в реальных проектах это скорее зло). Но что-то уже покажет и чему-то научит. Начните с простого (с библиотек, обеспечивающих кроссплатформенность): boost time, boost thread, потом можно boost asio (она сложнее намного).

Что точно должен понимать c++ программист из чисто технических вещей, не относящихся к мастерству — шаблоны. Попробуйте научиться делать вещи, работающие аналогично boost::enable_if, boost::any(+использование RTTI), boost::HAS_XXX (определяет объявлен ли тип XXX в такой-то структуре), потом можно научиться сортировать списки типов (есть в Александреску современной проектирование на С++), заодно в программировании на чистом функциональном языке потренироваться можно. После этого шаблоны — ваши :)
Ответ написан
afiskon
@afiskon
Часто требуется опыт работы в команде, использования систем контроля версий и написания модульных тестов. Работа с каким-нибудь багтрекером не повредит. Дальше идут знание кроссплатформенных библиотек, WinAPI/Posix, разработка многопоточных/сетевых приложений и тп.
Ответ написан
lightman
@lightman
Хотя и полуофф, не смотрели в сторону языка D? Хотя по распространению и кол-ву разных либ он (примечание: с сишными совместим) и уступает C++, сам язык декларируется как современная замена C++, лишённая его исторических недостатков, удобная и практичная.
Я задавался таким же вопросом как и вы, и пришёл к выводу, что буду смотреть в первую очередь именно D (пока нахожусь в процессе освоения C).
Ответ написан
@Jedi_Knight
Вот тут описан теоретический минимум для программиста, причём С++ там на первом месте.
Ответ написан
По первому пункту — изучите шаблоны проектирования. Также будет совсем нелишним ознакомиться с замечательной книгой Фаулера "Рефакторинг". Примеры, приведённые в книге можно транслировать применительно и к другим языкам программирования.
Ответ написан
ixSci
@ixSci
В общем случае достаточно знать, что есть в stl и примерно знать, что есть в boost. Это нужно для того, чтобы быстро сориентироваться где найти решение и не велосипедить.
Было бы неплохо почитать книги Майерса, Саттера и Александреску. Это поможет понять некоторые узкие места языка. Ну и писать собственно :) Опыт бесценен.

По поводу Qt: стоит почитать где-нибудь туториал по нему, чтобы понять что-к-чему(слоты\сигналы, метасистема и т.д) и потом уже кодить, опять же. Qt довольна простая библиотека(в плане освоения) с отличным потенциалом. Советую, также, сразу смотреть в QtQuick как перспективное GUI в Qt
Ответ написан
@dmtrrr
Backend developer
1) В реальных проектах весьма вероятно наличие легаси кода на чистом C, поэтому понимание pure C необходимо (учтите еще большое количество библиотек на Си беъ плюсов).

2) Посмотрите на исходники MongoDB, проект писался как раз на современном C++.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы