Ваши мысли о "разработке программного обеспечения большого масштаба С++"

Чтение отзывов на Amazon и ACCU предполагает, что книга Джона Лакоса, крупномасштабная разработка программного обеспечения на C++ может быть Rosetta Stone для модуляции.

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

Итак, что вы думаете?

[Поскольку это номер 3 в поиск в Google названия книги, оставил мой голос за повторное открытие, было бы очень жаль, что вы потеряете все полезное обсуждение здесь (которое я всегда считал подходящим для него местом).]

Ответ 1

Я прочитал его и считаю его очень полезной книгой по некоторым практическим вопросам с большими проектами на С++. Если вы уже много читали о С++ и немного знаете о физическом дизайне и его последствиях, вы, возможно, не найдете столько, что ужасно "ново" в этой книге.

С другой стороны, если ваша сборка занимает 4 часа, и вы не знаете, как ее уничтожить, получите копию, прочитайте ее и возьмите все.

Вы начнете писать физически лучший код довольно быстро.

[Изменить] Если вы хотите что-то начать и не можете сразу схватить книгу, я нашел "Игры изнутри" по физической структуре полезный даже после прочтения крупномасштабной версии С++.

Ответ 2

Интересно, что "Больше С++ Gems" содержит сокращенную (до 88 (!) страниц) версию книги Лакоса, которая также может быть (полностью, я полагаю, поскольку он относится к первой половине книги) онлайн в книгах Google.

Итак, наслаждайтесь всеми заинтересованными:)

Ответ 3

Lakos работал на Mentor Graphics, который делает EDA-программное обеспечение. Он участвовал в создании программного обеспечения EDA на С++, где они хотели эффективно использовать С++ ( "не более 5% накладных расходов по C-коду" ) и выяснили, как создавать программное обеспечение на ранних рабочих станциях, что действительно потребовало бы много времени для компиляции большое приложение на С++.

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

Я думаю, что у Lakos есть много проницательности, и я бы рекомендовал вам прочитать его. Тем не менее, это "trad" С++ с момента, когда функции, такие как шаблоны, были широко доступны. Моя копия не продается; ^)

Ответ 4

Я думал, что книга была хорошо прочитана в конце 1990-х. Он был устаревшим тогда, теперь примерно так же, как телефонная книга с 1950-х годов.

Я работал с Лакосом в течение нескольких лет, когда он пытался реализовать эти идеи. У меня также был мой современный проект на С++, который я построил из 2000 исходных файлов - достаточно большой, и с тех пор я создал еще несколько. Время сборки легко сокращается благодаря параллельным распределенным сборкам, используя такие программы, как icecream. Каждый собеседник будет кэшировать открытые заголовки - только делая что-то действительно возмутительное, любой современный инструмент построения, такой как scons, будет масштабироваться до тысяч единиц перевода, не делая ничего особенного, со временем сборки, включая тесты, занимает пару минут от чистого.

Ограничение интерфейса ваших библиотек несколькими "типами словарей" (не такое же, как концепция OO, он означает просто использование Int, float, string, char и еще пару других, о которых я не помню) крайне плохой совет по масштабированию чего-либо. Ваша сборка будет искать несоответствие типа, вы не хотите, чтобы это во время выполнения, чтобы упростить запись файла make.

И в основном суть книги - как написать С++, чтобы она работала с инструментами с 1993 года? Кроме того, проект Mentor Graphic, описанный в книге, был катастрофой из всех учетных записей. Даже сама книга ссылается на это.

Large Scale С++ поставляется в виде исходного кода - это "физические зависимости", а не библиотеки ссылок (и в книге никогда не упоминаются другие более важные зависимости, такие как базы данных, сокеты, архитектура процессора и т.д.).

В книге много идей, которые звучат хорошо, но есть намного лучшие способы расширения на практике. Если вы хотите изучать большие библиотеки С++, посмотрите Boost или Xerces и посмотреть, что они сделали. Они действительно реализуют крупные проекты, а не пишут о них.

Ответ 5

Он немного устарел (на самом деле он устарел, когда он был написан).
IIRC, многое из этого было связано с уменьшением зависимостей, которые вы, вероятно, теперь сделали бы с шаблонами.

Хотя это, вероятно, один из уроков для изучения крупномасштабных проектов, вы обычно не используете передовые функции и инструменты.

Ответ 6

Является ли "крупномасштабный дизайн программного обеспечения на C++" Джоном Лакосом вызывающим разум (но обычно упускаемым) драгоценным камнем?

Да.

Ответ 7

Да, в некотором роде, книга немного устарела, и некоторые из них являются специфическими для С++. Тем не менее, он предлагает множество полезных советов по работе со сложностью и связью в больших программах, и большинство его рекомендаций относится к любому объектно-ориентированному языку. Я также нашел его очень читаемым.

Если вы можете отследить копию, я уверен, что вам стоит ее прочитать. Это в моей первой десятке книг по программированию.

Ответ 8

Это отличная книга и важная с исторической точки зрения.

Обратите внимание, что для реализации практики, описанной в книге, вам нужна значительная дисциплина и согласие внутри команды. Вот несколько замечаний:

  • У Lakos есть точные определения того, что он называет "компонентами" и "пакетами". Они являются ключевыми для крупномасштабного проектирования. Тем не менее, они требуют соблюдения соглашений о том, как имена файлов источника и заголовка и последовательность, в которую они включены. Жаль, что большинство людей (включая тех, кто цитирует Lakos) редко следуют этим соглашениям.

  • В книге все о С++, но концепции более широко применимы. Однако, поскольку С++ - такой сложный язык, большая часть книги учит вас, как эффективно использовать С++. Если вы можете пройти мимо этого, вы можете найти его полезным, даже если вы используете другие языки.

  • Некоторые из рецептов, например, при использовании "пространств имен", могут быть теперь рассмотрены спорными. Многие считают, что пространства имен должны использоваться ограниченным образом в С++.

Ответ 9

Я читал это давным-давно, но я помню, что я получил от него много чего; хотя, как указывает MadKeithV, это может быть только то, что я знал меньше;)

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

И нет, вы не можете получить мою копию:)

Ответ 10

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

Если вы спросите меня, стоит ли покупать, я отвечаю: "Только если вы новичок в разработке C/С++. Нынешние проблемы сегодняшнего мира С++ (шаблоны и шаблоны, и я уже упоминал шаблоны) не встречаются.

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