Здравствуйте, rm822, Вы писали:
R>Вы озвучьте для начала свой опыт, область в которой специализируетесь и область в которую хотите перейти
Опыт: системное программирование, для архитектуры MIPS, т.е. это читсый Си и Ассемблер. Более-менее знаю как работать в *nix с файлами, сокетами, сигналами, памятью, потоками. Также есть совсем маленький опыт в ООП, т.е. немного работал с классами в одном проекте, где получил начальное представление что такое классы и наследование. Пару тройку простеньких приложений учебных студентам делал с классами. В KDevelop сделал как-то простенький проект с GUI на Qt, тест с вопросами для студентов, правда GUI сделал с помощью Qt Designer'а, т.е. руками почти ничего не разрабатывал. С STL пока дела не имел.
В плане системного программирования хотелось-бы работать на более высоком уровне, чем биты, байты, драйвера, т.е. работать с ОС: потоки, разделение памяти, сигналы, сокеты и т.п. В плане прикладного программирования, хотелось-бы заниматься всем, что не является чистым Web, т.е. все кроме HTML, PHP и т.д., но не исключая использование БД, mysql например. Т.е. в основном планы работать над прикладным и системным(но не на уровне драйверов) ПО. Кроме того по-возможности хотелось-бы в первую очередь выучить платформенно независимые вещи, типа Qt, т.е. чтоб можно было применять независимо от ОС, ну или хотябы с уклоном в *nix сначала, ну а потом уже специфику и инструментарий.
Сейчас пытаюсь в одном opensource проекте поучавствовать: www.lumiera.org, но пока не очень получается, довольно непросто разобраться как что работает, но разработчики отзывчивые, подсказывают.
В плане литературы, всем большое спасибо за советы, чтоб не напарываться на бесполезные книги и не тратить на них драгоценное время, и в плане последовательности изучения, чтоб не наоборот.
А вот с практикой пока куча сомнений: где? как? как лучше и эффективней?
тогда вам в основном нужна постановка мозгов на новые рельсы + избавление от изобретений велосипедов
1е — стандартные контейнеры. см документацию sgi.com/tech/stl, примеров более чем достаточно. пока не начнете применять их вместо сишных велосипедов нихрена из вас не выйдет.
2е — элджер С++ for real programmers, это даст базу по RAII + базу по замене свитчей на полиморфизм.
3е — быстрая разработка за авторством мартина — для постановки мозгов и упорядочения того что вы уже должны знать
Изучал Паскаль, С++ в институте, потом на работе много писал на Delphi, теперь снова приходится возвращаться на С++.
Выражу свое мнение. Нужно смотреть, чем конкретно предстоит заниматься. Я вот в оборонке тружусь, у меня задачи сугубо прикладные. 90% тех языковых изысков, которые описывет Страупструп и другие искушенные авторы реально для меня не востребованы. Востребовано понимание алгоритма, процесса обработки информации. Все остальное есть в MSDN, в RSDN, книжках и т.д. Это и есть основные источники. STL очень обширная библиотека, но нужно ли знать все ее особенности единовременно? Лично мне хватает наиболее распространенных строковых функций, да кое-чего еще, освежаемого в MSDN по мере необходимости. Когда работал с COM/DCOM/OPC — пришлось вникать в этонаправление, читать книжки, статьи, форумы, когда работал с графикой — усиленно налегал на GDI и т.д. Вот такое мнение...
Здравствуйте, savgur, Вы писали:
S>Всем добрый день.
S>Подскажите, в какой последовательности изучать С++ и все что с ним напрямую связано?
S>На C++ перехожу с С, раньше читал пару бесполезных книжек по С++, сейчас дочитываю Страуструпа, затем думаю учить STL и boost, т.к. это вроде первоочередные библиотеки для изучения. S>Может что-то еще посоветуете? Какую-то литературу с примерами и т.п.
Насчет практитки непонимаю: как сопровождать чтение практиткой, участие в open-source проекте, примеры из книг, задачники, помощь студентам на форумах?
Самому генерить задачи и идеи не вижу смысла: сложный проект не сделать, а простой будет Си-подобным. Нужна грамотная постановка задачи, желательно с постоянным контролем.
Как лучше, посоветуйте пожалуйста.
Забавно, т.е. вполне возможно сейчас появлюсь умный я из будующего и заменю сам себя, 10 баллов.
Но пока этого не произошло, хотелось бы поконкретней и словами а не картинками.
Так как быть с практикой, объясните пожалуйста, как на ваш взгляд правильно закреплять книжные знания, и жедательно поближе к реальным проектам.
Open-source лучший вариант?
Здравствуйте, savgur, Вы писали:
S>Так как быть с практикой, объясните пожалуйста, как на ваш взгляд правильно закреплять книжные знания, и жедательно поближе к реальным проектам. S>Open-source лучший вариант?
Скажем так — не лучший, а нормальный. Опять же качество Open-source очень разное. Попробовать стоит, многие с этого начинают.
Здравствуйте, Guard_h4s, Вы писали:
G_>Здравствуйте, savgur, Вы писали:
S>>Так как быть с практикой, объясните пожалуйста, как на ваш взгляд правильно закреплять книжные знания, и жедательно поближе к реальным проектам. S>>Open-source лучший вариант? G_>Скажем так — не лучший, а нормальный. Опять же качество Open-source очень разное. Попробовать стоит, многие с этого начинают.
А чтоже тогда лучший на ваш взгляд? Просто я вот взялся за проект www.lumiera.org, но довольно долго в него вьезжаю, чтоб хоть понять как работает.
Просто он в стадии разработки, вот я и плаваю в нем. Разработчики конечно помогают, но что-то тяжеловато дается пока. Может стоит с рабочими проектами поработать, скажем плагины сделать, баги пофиксить?
okman wrote:
> ...Ни один компилятор не удержит меня от написания класса с открытыми > данными, > кучей перегрузок, имеющего жесткие зависимости
Это уже не вопрос программирования на конкретном языке С++.
Это -- вопрос проектирования ПО вообще.
и виртуальные функции при > отсутствии виртуального деструктора...
А это вот ни разу не криминал. Виртуальный деструктор нужен, только
если предусматривается полиморфное удаление объекта.
Например, удаление объекта может производится из той же виртуальной
функции, определяемой в каждом классе.
Здравствуйте, MasterZiv.
Вы писали:
MZ>и виртуальные функции при >> отсутствии виртуального деструктора...
MZ>А это вот [виртуальные функции при отсутствии виртуального MS>деструктора] ни разу не криминал. Виртуальный деструктор нужен, только MZ>если предусматривается полиморфное удаление объекта. MZ>Например, удаление объекта может производится из той же виртуальной MZ>функции, определяемой в каждом классе.
Согласен, хотя у каждого свои понятия криминала.
Но мы удалились от темы, Вы не считаете ?
Здравствуйте, savgur, Вы писали:
S>А чтоже тогда лучший на ваш взгляд? Просто я вот взялся за проект www.lumiera.org, но довольно долго в него вьезжаю, чтоб хоть понять как работает.
Сложно сказать что лучше. Опять же разные проекты совершенно разной сложности. Надо пробовать — если не идет, браться за что нибудь полегче.
S>Просто он в стадии разработки, вот я и плаваю в нем. Разработчики конечно помогают, но что-то тяжеловато дается пока. Может стоит с рабочими проектами поработать, скажем плагины сделать, баги пофиксить?
Как раз с этого обычно и начинают — чтобы написать что-то свое, надо посмотреть и попользоваться другими аналогами. Чтобы знать предметную область. С этим опытом проще будет.
Хочется уточнить насчет проблем, возникающих у автора при "втягивании" в open-source проект. А какого рода трудности испытываете? Не понятно что как работает и что для чего нужно? Или непонятны языковые конструкции? Опять же, какого рода конструкции не понятны.
Довольно сомнительно, что человек, достаточно программировавший в других областях, не справляется с синтаксисом языка. Хотелось бы примеры тогда, что конкретно не понятно, может, все так хитро наверчено, что и знатоки С++ не разбирутся?
С другой стороны, если трудности вызывает само построение проекта, то что в этом странного? Новая большая система, да еще на этапе строительства, да еще,поди, коллективное творчество. Я с трудом представляю гения, который сразу же втянется и сможет запросто включиться в разработку. В любом деле нужно время, чтобы вникнуть. А на сложных проектах, это месяцы, а то и годы. Так есть ли повод для сомнений?
Страуструп — великолепно.
На начальном этапе изучения програмирования так же советую макконнела "совершенный код". Там не С++ а общие рекомендации. После этого можно сатера и маерса и дальше boost