Re: Как нужно сейчас программировать на C++ ?
От: remark Россия http://www.1024cores.net/
Дата: 15.04.06 09:50
Оценка: 32 (9) :)
Здравствуйте, Аноним, Вы писали:

А>Попались мне давеча книжки Александреску. Прочитав немного, понял, что плохо понимаю о чем идет речь: "шаблоны", "стратегии", "паттерны" и пр.

А>Но интуиция подсказывает, что это то, чего не хватает мне, чтобы перейти с традиционного С/С++ программирования на новый более высокий уровень .
А>Если более опытные товарищи, подкинут ссылки или книжку толковую посоветуют, буду очень признателен. А то чувствую себя пещерным человеком ))


Вначале так сказать микро-уровень — это сам язык и "правильное" его использование. Тут я считаю вот это классикой:

Язык программирования C++ (специальное издание)
Автор(ы): Бьерн Страуструп
Книга написана Бьёрном Страуструпом — автором языка программирования С++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре С++, так и современный объектно-ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по С++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе С++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Ссылка на книгу называется "cpp_bible.xml" Это правда справочник — читать скучно, но можно пробежать, что бы знать, что вообще есть.

Далее Саттер и Александреску — чуваки грамотные:
Решение сложных задач на С++
Автор(ы): Герб Саттер

В данном издании объединены две широко известные профессионалам в области
программирования на C++ книги Герба Саттера Exceptional C++
и More Exceptional C++, входящие в серию книг C++ In-Depth,
редактором которой является Бьерн Страуструп, создатель языка C++.
Материал этой книги составляют переработанные задачи серии Guru of the Week,
рассчитанные на читателя с достаточно глубоким знанием C++.
Однако книга будет полезна каждому, кто хочет углубить свои знания в этой
области.

Новые сложные задачи на C++
Автор(ы): Герб Саттер

Данная книга представляет собой продолжение вышедшей ранее книги
Решение сложных задач на
C++. В форме задач и их решений рассматриваются
современные методы проектирования и программирования
на C++. В книге сконцентрирован богатый многолетний опыт
программирования на C++ не только самого автора, но и всего
сообщества программистов на C++, так что некоторые
рекомендации автора могут показаться неожиданными даже опытным
программистам-профессионалам. Автор рассматривает и конкретные
методики, приемы и идиомы программирования, однако основная тема
книги — это стиль программирования, причем в самом широком
понимании этого слова. Особое внимание во всех задачах книги
уделено вопросу проектирования, которое должно обеспечить максимальную
надежность, безопасность, производительность и сопровождаемость
создаваемого программного обеспечения.

Стандарты программирования на C++
Автор(ы): Герб Саттер, Андрей Александреску

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


Ещё вот эту серию часто упоминают (сам правда не читал):
Эффективное использование STL. Библиотека программиста
Автор(ы): Скотт Мейерс
В этой книге известный автор Скотт Мейерс
раскрывает секреты настоящих мастеров, позволяющие добиться максимальной
эффективности при работе с библиотекой STL. Во многих книгах описываются
возможности STL, но только в этой рассказано о том, как работать с этой
библиотекой. Каждый из 50 советов книги подкреплен анализом и убедительными
примерами, поэтому читатель не только узнает, как решать ту или иную задачу, но
и когда следует выбирать то или иное решение — и почему именно такое.

Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов
Автор(ы): Скотт Мейерс
В книге приводятся практические рекомендации по
проектированию и программированию на языке C++. Изложены правила, позволяющие
программисту сделать выбор между различными методами реализации программы —
наследованием и шаблонами, шаблонами и указателями на базовые классы, открытым и
закрытым наследованием, закрытым наследованием и вложенными классами,
виртуальными и невиртуальными функциями и т.п. Для иллюстрации всех принципов
используются новейшие языковые средства из стандарта ISO/ANSI C++ —
внутриклассовая инициализация констант, пространства имен и шаблоны-члены
класса. Рассматривается стандартная библиотека шаблонов и классы, подобные
string и vector.

Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов
Автор(ы): Скотт Мейерс
В новой книге Скотта Мейерса, которая является
продолжением популярного издания
"Эффективное использование C++",
приводятся рекомендации по
наиболее эффективному использованию конструкций языка C++. Рассматриваются
правила перегрузки операторов, способы приведения типов, реализация механизма
RTTI и многое другое. Даны практические советы по применению буферизованного
оператора new, виртуальных конструкторов, интеллектуальных указателей,
proxy-классов и двойной диспетчеризации. Особое внимание уделяется работе с
исключениями и возможностям использования кода С в программах, написанных на
C++. Подробно описаны новейшие средства языка и показано, как с их помощью
повысить производительность программ. Приложения содержат код шаблона auto_ptr и
аннотированный список литературы и Internet-ресурсов, посвященных C++.


Вот ещё думаю хорошая книга, тоже не читал, но авторы грамотные — регулярно публикуются в c++ user's journal:
Эффективное программирование на С++. Серия C++ In-Depth
Автор(ы): Эндрю Кёниг, Барбара Му

Эта книга, в первую очередь, предназначена для тех кому хотелось бы
быстро научиться писать настоящие программы на языке C++. Зачастую новички
в C++ пытаются освоить язык чисто механически, даже не попытавшись узнать,
как можно эффективно применить его к решению каждодневных проблем.
Цель данной книги — научить программированию на C++, а не просто изложить
средства языка, поэтому она полезна не только для новичков, но и для тех,
кто уже знаком с C++ и хочет использовать этот язык в более натуральном,
естественном стиле.



Далее обязательно:
Boost Libraries — полезно проглядеть оглавление и в целом ознакомиться с содержимым, что бы в следующий раз не изобретать велосипед

С++ User's Journal (ныне Dr.Dobb's Portal)

Guru of the Week

Далее — со всеми



Потом так сказать макро-уровень — это дизайн, паттерны и т.д.

Конечно же Приемы объектно-ориентированного проектирования. Паттерны проектирования.
Автор(ы): Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
В предлагаемой книге описываются простые и изящные решения типичных задач,
возникающих в объектно-ориентированном проектировании. Паттерны появились
потому, что многие разработчики искали пути повышения гибкости и степени
повторного использования своих программ. Найденные решения воплощены в краткой и
легко применимой на практике форме. Авторы излагают принципы использования
паттернов проектирования и приводят их каталог. Таким образом, книга
одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов
в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в
справочнике паттерны, проектировщик сможет с легкостью разрабатывать собственные
приложения. Издание предназначено как для профессиональных разработчиков, так и
для программистов осваивающих объектно-ориентированное проектирование.


Архитектура корпоративных программных приложений
Автор(ы): Мартин Фаулер

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


Сюда же можно Рефакторинг
Автор(ы): Мартин Фаулер, Кент Бек, Джон Брант, Дон Робертс, Уильям Апдайк

К тому времени как объектная технология — в частности язык Java — стала обычным
делом, появилось большое количество плохо спроектированных, неэффективных и
малопригодных к сопровождению и расширению приложений. Профессиональные
разработчики программных систем все яснее видят, насколько трудно иметь дело с
таким "неоптимальным" наследием. Уже несколько лет эксперты в области объектного
программирования применяют расширяющийся набор приемов, призванных улучшить
структурную целостность и производительность таких программ. Этот подход,
называемый рефакторингом, до сего момента оставался территорией экспертов,
поскольку не предпринималось попыток перевести профессиональные знания в форму,
доступную всем разработчикам.В данной книге Мартин Фаулер показывает,
как разработчики программного обеспечения могут реализовать существенные выгоды
этой новой технологии, где обычно лежат возможности изменения структуры и как
приступить к переделке плохого проекта в хороший. Каждый шаг рефакторинга прост
— на первый взгляд слишком прост, чтобы сделать его. Это может быть перемещение
поля из одного класса в другой, вынесение какого-то кода из метода и превращение
его в самостоятельный метод или даже перемещение кода по иерархии классов.
Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких
малых изменений в состоянии радикально улучшить проект. Рефакторинг является
верным способом предотвращения распада программы. Помимо описания различных
приемов автор предоставляет подробный каталог, включающий более семидесяти
рефакторингов, а также полезные указания по их применению, пошаговые инструкции
и практические примеры. Примеры написаны на Java, но идеи применимы к любому
объектно-ориентированному языку программирования.


Dr.Dobb's Architecture and Design

Вот здесь очень много полезного: Microsoft patterns & practices. Они правда сейчас пишут в основном про C#, но это к делу отношения не имеет

Далее — опять же со всеми




1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.