Удобный способ освоения С++ как дополнительной квалификации

nikola1956

Уважаемые читатели раздела, помогите, пожалуйста, советом. У меня сейчас появилось свободное время. Хотелось бы дополнительно к своим знаниям (это в основном Java, Web и iOS) все-таки изучить и практически освоить С++. Книги хорошие есть (например, Lippman "C++ Primer", последнее изд. но язык С++ большой по размеру и не хватает мотивации, чтобы читать про разные его детали. Это очень скучно.
Нужны реальные интересные проекты, желательно с математическим и алгоритмическим уклоном и с возможностью общения и обсуждений. Но вот где их найти? Может быть у кого-то из работающих С++-программистов имеются подзадачи, которые они могли бы мне дать (например, удаленно чтобы появился мотив для изучения этого языка и его библиотек?

nata_chira

с тем как интернет организован уже разобрался? :smirk:

nikola1956

Да, в общих чертах.

yroslavasako

Найди какой-нибудь опенсорс и приткнись к нему. Какой именно - даже не могу сказать.
Большая часть установленного у меня плюсового опенсорса - это гуи и сеть. Научные библиотеки до сих пор используются фортрановские. Даже если их механистически скопировали на си, хорошим примером для плюсов они не будут. Но есть и хорошие (внешне, в исходники я не смотрел) плюсовые проекты - opencv, gambit. Можно туда смотреть, если хочется больше алгоритмики. По идее ещё 3d графика богата на алгоритмические задачи, можешь поковырять ogre3d.
Все советы, данные мной, отчасти вредные. Сам я исходников всего этого не видел, но по ощущения искать надо где-то в том направлении.

nikola1956

есть и хорошие (внешне, в исходники я не смотрел) плюсовые проекты - opencv, gambit. Можно туда смотреть, если хочется больше алгоритмики. По идее ещё 3d графика богата на алгоритмические задачи, можешь поковырять ogre3d.
Большое спасибо за советы! Поищу в этом направлении. Тем более уже активно использовал OpenCV на практике, правда через обертки.

Whoman-in-white

OpenCV
с точки зрения языка OenCV как раз не очень хороший пример.
С точки зрения языка самый лучший набор библиотек - это boost. Можно просто поковыряться в них, еще в каждой есть список задач, которые предполагается решить, можешь попробовать самостоятельно покопаться в этом направлении, может, и на изучение внутренностей буста это сподвигнет. Смотришь, какие есть библиотеки в бусте, выбираешь, какой теме лежит душа и копаешь.
Еще просто пару идей для реализации -
реализация менеджера памяти, препятствующего фрагментации,
реализация какой-нибудь хитрой структуры данных с стл-подобным интерфейсом
Обе задачи непростые и объемные, в с++ погрузишься по самое не хочу

PITACHOK

Можно просто поковыряться в них
Нельзя вот так просто взять и слегка поковыряться в boost.

nikola1956

С точки зрения языка самый лучший набор библиотек - это boost. Можно просто поковыряться в них, еще в каждой есть список задач, которые предполагается решить, можешь попробовать самостоятельно покопаться в этом направлении, может, и на изучение внутренностей буста это сподвигнет.
Спасибо за совет, попробую!
реализация менеджера памяти, препятствующего фрагментации

Звучит очень интересно, но, не зная истории вопроса, пока плохо себе представляю, почему самостоятельная реализация этого может быть полезна на практике.

PooH

Нельзя вот так просто взять и слегка поковыряться в boost
ага, особенно со средними знаниями с++
по теме: с++ скучный, сложный язык с многими тонкостями
ИМХО, самая интересная задача - взять какой-нибудь мармелад и сваять на нем yet-another-2048 под мобилку. Можно даже потом это в стор закинуть.
Все эти модельные задачи,типа реализовать сортировку или еще один менеджер памяти ничего не дадут в главном качестве разработчика - выполнять задачу. Советую просто выбрать себе маленький проект и довести его до конца. Именно до релизного состояния. Такой опыт будет стоить гораздо больше, чем знание тонкостей c++.

yroslavasako

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

Whoman-in-white

Все эти модельные задачи,типа реализовать сортировку или еще один менеджер памяти ничего не дадут в главном качестве разработчика - выполнять задачу.
с фига ли они не дадут? насколько я понял, это "главное качество разработчика" у ТС уже имеется, т.к. он программирует на других языках, и какие-то проекты до конца он уже доводил. Так что ему надо наоборот знание тонкостей С++. Потому что какой-нибудь маленький проектик ТС как будет делать - найдет в С++ какое-то подмножество, похожее на джаву, и запрогает свой проект в том же стиле, что он и прогал раньше, не получив никаких новых знаний, а просто тупо потратив время на "доведение проекта до конца"

Whoman-in-white

Так что самостоятельно ты скорее всего сделаешь более медленный и глючный менеджер памяти.
так цель-то не сделать что-то крутое, а разобраться в языке. Чтобы разобраться в языке имхо полезно свой велосипед реализовать. Вот это как раз и будет реализация велосипеда.
Можно просто взять описание алгоритма из книги Александреску, реализовать, а потом сравнить с реализацией автора.
Хотя реализовать контейнер с хитрой структурой данных внутри с стлеподобным интерфейсом более полезна наверно в плане погружения в с++

istran

по теме: с++ интересный, сложный язык с многими тонкостями
fixed

PooH

найдет в С++ какое-то подмножество
на с++ можно писать в любом стиле. в фнкциональном, правда, выглядит достаточно криво
не вижу никакого смысла в изучении тонкостей с++
если нравятся извращения, то стоит смотреть в сторону шаблонов, но, ИМХО, шаблоны в с++ вызывают необратимые изменения в мозгу

karkar

C++ без шаблонов - деньги на ветер и не С++ вовсе.

PITACHOK

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

nikola1956

Проектов много разных. Для тех, кто дополнительно знает и C++, бывают более продвинутые, "наукоемкие" проекты, что в целом интереснее и перспективнее. Бывают и такие проекты, в которых нужно создавать отдельные части на С++ с использованием имеющихся библиотек и наработок других людей. Но С++, не PHP — его сходу не изучишь на "живом" проекте с четкими сроками.

yroslavasako

а зачем человек, знающий джаву, может начать учить плюсы?
JNI

apl13

в фнкциональном, правда, выглядит достаточно криво
А точнее?
Оставить комментарий
Имя или ник:
Комментарий: