изучение c ++ из исходного кода библиотеки повышения - PullRequest
5 голосов
/ 11 июня 2009

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

Ответы [ 6 ]

15 голосов
/ 11 июня 2009

Если вы начинаете в C ++, то, вероятно, не самый лучший исходный код для повышения. Это где волшебники тусуются, и они занимаются магией шаблонов. Я думаю, что лучшей отправной точкой являются книги Скотта Майерса и Херба Саттерса (в таком порядке).

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

14 голосов
/ 11 июня 2009

Я не могу дать совет о том, как читать буст-код, но могу предложить другой совет.

Прекратите чтение и начните запись :) Чтение ценно, но вы не научитесь чему-либо еще, если не начнете писать код самостоятельно. Начните с основ. Прочитайте книги для начинающих и напечатайте образцы (не копируйте и не вставляйте). Вы узнаете, исправив ошибки, которые являются результатом вашего опечатки. Поиграйте с некоторыми из ваших собственных идей для простых приложений и переходите оттуда.

Начинать с чтения исходного кода Boost - это верный способ отпугнуть себя от языка и / или окончательно запутаться в большом количестве вопросов.

Начните с малого, продолжайте свой путь.

13 голосов
/ 11 июня 2009

Поскольку вы упоминаете, что хотите изучать темное искусство метапрограммирования, я бы порекомендовал "Современный дизайн C ++" Андрея Александреску.

Мета-программирование является очень сложной областью и не требуется большую часть времени. Когда вы узнаете об этом, очень легко подумать, что это может решить все ваши проблемы. Это становится вашим новым любимым молотком.

Я бы также рекомендовал стать очень опытным пользователем библиотек, основанных на метапрограммировании, таких как boost и loki, прежде чем добавлять его в свой собственный код.

Два разных программиста использовали мета-программирование в тех частях кода, за которые я отвечаю. Хотя они были опытными программистами, коммерческий продукт не должен рассматриваться как игровая площадка. Это, вероятно, худшая область нашей кодовой базы сейчас, очень сложная и очень хрупкая, особенно когда вы добавляете поддержку новых компиляторов. Если бы я отвечал за код, когда они были написаны, их бы здесь не было, теперь их слишком дорого заменить.

Короче говоря, вам очень редко нужно мета-программирование, если вы не автор библиотеки. И вы не можете быть автором библиотеки, не будучи очень опытным пользователем библиотеки.

8 голосов
/ 11 июня 2009

Я предполагаю, что boost использует множество расширенных функций c ++, таких как создание шаблонов и т. Д. Библиотеки Boost, как правило, очень сложны, поскольку стараются следовать строгим стандартам и стилям программирования, чтобы они были совместимы с такими вещами, как STL.

Проще говоря, если вы этого не понимаете, вы, вероятно, находитесь над головой. и если вы понимаете это, вам все равно не обязательно читать это. Не прыгайте в воду, если вы не умеете плавать ... По сути, вы пытались переплыть водопад.

1 голос
/ 11 июня 2009

Да, есть некоторые действительно ужасные вещи в некоторых библиотеках буста. Если вы хотите прочитать очень хороший исходный код, попробуйте проверить WebKit или некоторые проекты с открытым исходным кодом Google (например, Chrome или Protobufs).

0 голосов
/ 11 июня 2009

Я бы посоветовал вам начать с чего-то вроде Премьеры Липмана (другие книги для начинающих по вашему вкусу). Затем, когда вы освоитесь с кодом, вы можете перейти к Хербу Саттеру, Александреску, чтобы расширить свой кругозор, приобрести более полный взгляд на мягкого разработчика. А также НАИБОЛЕЕ ВАЖНО - чтобы уметь хорошо уступать, нужно кодировать МНОГО, так как это умение любой другой, и это требует практики, чтобы освоить.

P.S.> Если вы уверены, что вы можете взять Страуструпа с самого начала вместе с другими Книга (ы). Я не думаю, что есть еще один источник C ++, такой же полный, как авторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...