Как повысить уровень программирования в общем и в C++ в частности?

Я достаточно хорошо знаю сам язык (C++) - основные возможности, большую часть стандартной библиотеки. Но знаю лишь теоретически, использовать это толком не умею. (Для примера - описать базовые возможности и правила работы шаблонов я могу, но вот самостоятельно написать код, подобный тому, что пишет Александреску на этих шаблонах - нет.)

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

И где искать информацию, вопроса нет - есть много хороших сайтов/статей/книг.

Вопрос в том, каким образом её лучше усваивать? Очевидный ответ один - практика. Но где её взять? И какую?

Проблема в том, что если я буду тренироваться на минимальных примерах, типа классов Foo и Boo, вряд ли я научусь хорошо использовать язык, структуры и алгоритмы. Всё таки слишком оторванной от реальности будет практика. Мне так кажется. Или я ошибаюсь?

Ситуацию усугубляет ещё то, что в данный момент я на работе использую другой язык (Go). Это может мне помочь прокачиваться в алгоритмах и структурах (и то не особо - всё же в рабочих задачах напротив часто не требуется и даже вредно городить свои велосипеды, гораздо лучше использовать готовые решения, ибо я всё же работаю на работе, а не учусь). Но работая с языком Go в языке C++ я точно не прокачаюсь.

А работу в ближайшей перспективе я сменить не могу.

Опять же очевидное решение - личные домашние проекты. Я пытался так делать. Но все они всё равно слабо прокачивают мой уровень в языке, так как сами по себе маленькие (что логично для домашних проектов), а следовательно не могут охватить все возможности языка.

Вот, в общем, не знаю, как дальше развиваться и прошу у вас совета. Ещё раз подчеркну - мне требуется совет не в источниках информации, а в методике её усвоения. Как тренироваться, как расти и на чём?
  • Вопрос задан
  • 905 просмотров
Решения вопроса 2
Rulexec
@Rulexec
Метатеоретик теории типов
Больше велосипедов в домашних проектах.

Например, попробуйте на C++ написать свой HTTP-сервер. Который бы был полностью асинхронен. Чтобы можно было взять вашу библиотеку, создать экземпляр сервера, указать ему порт, навешать хэндлеров на обработку запросов, которым бы передавались объекты для управления запросом (в том числе считывание/запись данных, сервер не должен делать этого сам, приложение должно) и от которого не требовалось бы произвести обработку запроса тут же на месте, а когда ему захочется в будущем.
Ответ написан
Комментировать
afiskon
@afiskon
Присоединяйтесь к open source проекту или начните свой большой проект. Разбивайте его на части, двигайтесь постепенно. Так, чтобы несколько часов работы - и уже какая-то фича, пусть и небольшая. Не обязательно делать прям ну очень большой проект, можно начать с чего-то простенького - todo-шка, простенький irc клиент, и так далее, и потом постепенно развивать. Если удастся найти что-то, что вам лично сейчас нужно, будет больше мотивации. Еще как вариант, посмотрите в backlog у вас на работе. Всегда есть какие-то большие, но на данный момент не приоритетные задачи. Попробуйте взять одну из таких задач и написать PoC в свободное время. Если получится хорошо, покажите начальству, так и С++ на свою работу протащите! Ну а вообще самый-самый крутой способ прокачать в чем-то скил - устроится все-таки на работу где это используется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Ответ очевиден растите в го , это как бы си+++
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы