Как нужно сейчас программировать на C++ ?
От: Аноним  
Дата: 14.04.06 19:42
Оценка:
Попались мне давеча книжки Александреску. Прочитав немного, понял, что плохо понимаю о чем идет речь: "шаблоны", "стратегии", "паттерны" и пр.
Но интуиция подсказывает, что это то, чего не хватает мне, чтобы перейти с традиционного С/С++ программирования на новый более высокий уровень .
Если более опытные товарищи, подкинут ссылки или книжку толковую посоветуют, буду очень признателен. А то чувствую себя пещерным человеком ))
Re: Как нужно сейчас программировать на C++ ?
От: Chipsеt Россия http://merlinko.com
Дата: 14.04.06 19:55
Оценка:
Здравствуйте, Аноним, Вы писали:

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

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

Говорят что хорошая вещь: Large Scale C++ Software но я сам не читал, усиленно ищу
А вообще, смотри в чём проблемы, если в синтаксисе то почитай сначала Страуструпов всяких, Майерсов, Саттеров... Если в самой парадигме то тут тебе может помочь Буч, GoF.
"Всё что не убивает нас, делает нас сильнее..."
Re: Как нужно сейчас программировать на C++ ?
От: alexeiz  
Дата: 14.04.06 21:37
Оценка:
Здравствуйте, Аноним, Вы писали:

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

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

Эта книга помимо всего прочего обсуждает реализацию design patterns на C++. Поэтому для начала тебе неплохо было бы ознакомиться с самими паттернами. Возьми книгу "Design Patterns".

А>Если более опытные товарищи, подкинут ссылки или книжку толковую посоветуют, буду очень признателен. А то чувствую себя пещерным человеком ))


Книг много. Всё зависит, от того, что ты считаешь традиционным С/С++ программированием.
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
Re: Чем хороша книжка Александреску
От: Erop Россия  
Дата: 15.04.06 11:18
Оценка: 112 (23) +17 -2 :)
Здравствуйте, Аноним, Вы писали:

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

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


1) Мне нравится книжка Александреску (которая современное проектировнаие на C++). Но странною любовью нравится.
Собственно она позволяет понять насколько программист является грамотным инженером. Если книжка нравится и хочется немедленно всюду это дело применять -- то точно инженер плохой. Если уж с таким и сотрудничать, то очень внимательно контролировать чего он там напрограммировал. Точно ли не переусложнил?

2) Во-вторых, эта книжка мне нравится потому, что там очень хорошо и на примерах описано насколько плохо программировать таким образом

3) Ещё Александреску конечно очень хорошо показал, что шаблоны C++ можно использовать как очень плохую и неудобную и практически неолаживаемую версию языка Prolog. Но совсем не раскрыл тему "зачем так извращаться?" Может лучше пролог заботать да и писать макеты на нём, ну а в реализации это всё скорее всего не нужно будет

4) Ну и главное. В целом очень редко в программировании попадаются такие сложные задачи, что нужно то, что описано у Александреску скажем. Конечно теоретикам программирования на C++ реальные сложные практические случаи (скажем написаение графического редактора с каими-то хитрыми особенностями, или там системы распозанавания речи или ещё чего), а уж тем более какие-то простые и распространённые (скажем написание Web-интерфейса к какой-то БД) совсем уже не интересны. Потому что там уже трудно придумать что-то реально хорошее и нужное. А интересны либо какие-то извраты на почве синтаксиса, либо решение каких-то сверхсложных архитектурных задачь, в реальной жизни совсем не возникающих.
Но при этом не особо опытные инженеры этого всего не понимают и очень сильно переусложняют код.

Так что очень может быть, что стиот почитать вские умные книжки на эту тему, особенно про паттерны проектирования, но главная идея должна быть такая, что никогда не забывать точно ли это нужно для реально возникающих в твоей деятельности задач.
Ведь хорошая программа -- это не программа с boost, loki, паттернами, и ещё каким-то меганаворочеными архитектурными решениями. А ровно другая. Когда всё-всё-всё написанно максимально просто. Понятно, по возможности вообще без сложных каких-то методов средств и приёмов.
Просто такие программы писать труднее и требуется более высокая квалификация. Но, ИМХО, стремиться надо к этому, а не к созданию мегасупержутких наворотов.
Хотя для эрудиции эти все нароботки просмотреть конечно стоит
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Чем хороша книжка Александреску
От: igna Россия  
Дата: 15.04.06 11:28
Оценка: +2 -6 :)))
Здравствуйте, Erop, Вы писали:

E>Ведь хорошая программа -- это не программа с boost, loki, паттернами, и ещё каким-то меганаворочеными архитектурными решениями. А ровно другая. Когда всё-всё-всё написанно максимально просто. Понятно, по возможности вообще без сложных каких-то методов средств и приёмов.



И в большинстве случаев лучше на Java, а не на C++.
Re[3]: Чем хороша книжка Александреску
От: Erop Россия  
Дата: 15.04.06 11:34
Оценка:
Здравствуйте, igna, Вы писали:

E>>Ведь хорошая программа -- это не программа с boost, loki, паттернами, и ещё каким-то меганаворочеными архитектурными решениями. А ровно другая. Когда всё-всё-всё написанно максимально просто. Понятно, по возможности вообще без сложных каких-то методов средств и приёмов.



I>И в большинстве случаев лучше на Java, а не на C++.

Ну в целом я согласен, хотя не согласен, что именно на Java
Обычно в каждой области есть какой-то подходящий язык или языки, которым и стоит пользоваться.
Другое дело, что если контора пишет всё на C++ и C#, то не стоит ради какой-то небольшой задачи заводить ещё и культуру разработки на Java, или там на дельфи. Но в целом подход верный
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Чем хороша книжка Александреску
От: remark Россия http://www.1024cores.net/
Дата: 15.04.06 12:30
Оценка: 1 (1) +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Аноним, Вы писали:


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

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


E>1) Мне нравится книжка Александреску (которая современное проектировнаие на C++). Но странною любовью нравится.


E>...


Зачастую есть такая тема. Иногда себя на этом ловлю. Но.

1. Александреску, по-моему, этого не делает, но Саттер вначале каждой книги пишет, что голова должна быть превыше всего, что всё о чём он пишет не должно заменять здравого смысла. Человек-разумный должен это понимать.

2. У каждого языка/инструмента/технологии есть своя область применимости. Это касается и того, о чём пишет Александреску, и языка с++ как такового, и Java, и ООП и БД. Вообще всего.

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

Т.ч. я считаю, что такой "наезд" на Современное проектирование не обоснован. Эти же мысли можно применить ко всему, он тут ни при чём.


Например, недавно мне надо было реализовать около 50 различных поведений (классов). Причём, если подумать, то каждый класс тз этого множество достаточно чётко разделяется на несколько аспектов. И существует по несколько реализаций каждого аспекта. Когда все эти реализации каждого аспекта перемножаются друг на друга и получается более 50 вариантов поведения. Как предлагаешь это реализовывать? При этом каждый аспект достаточно часто меняется независимо от других.


Или например фабрики. Недавно видел пару сотен строк кода для реализации обычной абструктной фабрики.




1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: Чем хороша книжка Александреску
От: Erop Россия  
Дата: 15.04.06 12:56
Оценка:
Здравствуйте, remark, Вы писали:

R>Зачастую есть такая тема. Иногда себя на этом ловлю. Но.

R>1. Александреску, по-моему, этого не делает, но Саттер вначале каждой книги пишет, что голова должна быть превыше всего, что всё о чём он пишет не должно заменять здравого смысла. Человек-разумный должен это понимать.

R>Т.ч. я считаю, что такой "наезд" на Современное проектирование не обоснован. Эти же мысли можно применить ко всему, он тут ни при чём.


Ну тут форум инженеров-программистов. И стоит всех предостиречь от бездумного увлечения наворотами
Я собственно отвечал автору топика

А что касается примера с поведениями, то от чего бы поведение не задавать парой интерфейсов?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Чем хороша книжка Александреску
От: remark Россия http://www.1024cores.net/
Дата: 15.04.06 13:02
Оценка: 3 (1)
Здравствуйте, Erop, Вы писали:


E>А что касается примера с поведениями, то от чего бы поведение не задавать парой интерфейсов?



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


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[5]: Чем хороша книжка Александреску
От: Erop Россия  
Дата: 15.04.06 13:22
Оценка:
Здравствуйте, remark, Вы писали:

R>Вот это как раз и называется стратегиями (политиками, аспектами), о которых пишет Александреску.

R>Сторонники "старых и простых" технологий предпочитают создавать в этом случае 50 классов с помощью множественного наследования или более "продвинутые" используют макросы.

Не, Александреску обычно пишет о навёрнутых конструкциях их шаблонов. А я написал о структуре из нескольких указателей на интерфейсы.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Чем хороша книжка Александреску
От: remark Россия http://www.1024cores.net/
Дата: 15.04.06 13:52
Оценка: 1 (1)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, remark, Вы писали:


R>>Вот это как раз и называется стратегиями (политиками, аспектами), о которых пишет Александреску.

R>>Сторонники "старых и простых" технологий предпочитают создавать в этом случае 50 классов с помощью множественного наследования или более "продвинутые" используют макросы.

E>Не, Александреску обычно пишет о навёрнутых конструкциях их шаблонов. А я написал о структуре из нескольких указателей на интерфейсы.



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



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[7]: Чем хороша книжка Александреску
От: Erop Россия  
Дата: 15.04.06 14:02
Оценка:
Здравствуйте, remark, Вы писали:

R>"Навёрнутые" или не "навёрнутые" — это субъективное мнение. Мне сейчас это не кажется навёрнутым. Просто другая форма записи тем же самых вещей. Не вижу никакой принципиальной разницы между включением нескольких указателей на динамические интерфейсы или включением нескольких указателей на статические интерффейсы. Синтаксис немного другой. Да, у шаблонов синтаксис порядочно сложнее, с этим согласен. Вначале снепривычки было сложно, но сейчас практически одинаково.


У шаблонов есть много "преимуществ"
1) Намного хуже, чем в случае интерфейсов заданы правила использования. В результате грамотный шаблон написать труднее (больше надо всегопредусмотреть), и воспользоваться труднее (надо выбрать из большего числа мыслемыз альтернативных способов использования)
2) Намного более сложный синтаксис и семантика. Вот, например, что тут написано:
template<typename TLog>
class Base {
protected
    void exit( int );
};

template<typename TLog>
class MyExitProicessor : public Base<TLog> {
public:
    void OnExit( TLog& log, int code )
    {
        LogExit( log, code );  // это какой-то метод MyExitProicessor, описанный ниже
        exit( code );
    }
};


3) Очень неудобные сообщения об ошибках в пользовательском коде.

А вот реальные приимущества всех этих трюков Александреску они в чём?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Как нужно сейчас программировать на C++ ?
От: Vain Россия google.ru
Дата: 15.04.06 16:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Попались мне давеча книжки Александреску. Прочитав немного, понял,

Да, такие книжки прочищают мозги хорошо Ж)

Если сам вздумаешь писать тип трэйты, то ты не думай что если даже они будут работать, то всё будет пучком... Такие чтуки реально тормозят компиляцию, у меня к примеру каждый толстый cpp компилируется по 10 сек под P4-2400 на 2003 студии, вот так то. Поэтому написать действительно хорошие тип трейты стоит не малых усилий..
А что касается библиотеки Loki, то там не всё работает..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Чем хороша книжка Александреску
От: qqqqq  
Дата: 15.04.06 18:10
Оценка: +2
Книжка Александреску хороша, нет слов, да только не всегда все это все в пользу. Если програмируешь в основном один и очень хорошо в этом сам разобрался то конечно, да... А если работаешь в большой разнородной команде с текучкой где не все С++ программисты про итераторы слышали, то применение изощренных приемов из этой книги может заметно мешать. Только "избранные" смогут этот код понимать даже в приципе а поддерживать все "это" придется самому. Если поручат исправить простую ошибку менее квалифицированному кадру то он запросто там таких дров наломает, что все равно потом к тебе прибегут за помощью, когда гром грянет. Но если тайная цель все под себя подмять в такой разнородной команаде то да, надо напихать в программу побольше патернов, темплейтов из этой и других подобных книг, замешать с STL, Loki, boost и АСЕ, и еще написать описание соответствено — цены тебе не будет. Видел я и проекты написанные на "обычном" C++ и исключительно advanced код, так вот те простые чаще были более удачные.
Другие отностительно новые книжки по "продвинутому" C++ — Exceptional C+, More Exceptional C+, Effective STL, C++ Templates: The Complete Guide, и еще может пара книжек то ACE
Re[3]: Коглда пора уволить программиста? :)
От: Erop Россия  
Дата: 15.04.06 18:15
Оценка:
Здравствуйте, qqqqq, Вы писали:

Q><...>Но если тайная цель все под себя подмять в такой разнородной команаде то да, надо напихать в программу побольше патернов, темплейтов из этой и других подобных книг, замешать с STL, Loki, boost и АСЕ, и еще написать описание соответствено — цены тебе не будет...


Если программист стал незамениным, его пора увольнять (с) не помню кто
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Коглда пора уволить программиста? :)
От: pavel_turbin  
Дата: 15.04.06 18:21
Оценка: 1 (1)
Здравствуйте, Erop, Вы писали:

E>Если программист стал незамениным, его пора увольнять (с) не помню кто


глупо. Увольнять, или лучше реструктуризовать, нужно менеджмент.
Re[4]: Коглда пора уволить программиста? :)
От: qqqqq  
Дата: 15.04.06 18:21
Оценка: :)
Здравствуйте, Erop, Вы писали:
Q>><...>Но если тайная цель все под себя подмять в такой разнородной команаде то да, надо напихать в программу побольше патернов, темплейтов из этой и других подобных книг, замешать с STL, Loki, boost и АСЕ, и еще написать описание соответствено — цены тебе не будет...

E>Если программист стал незамениным, его пора увольнять (с) не помню кто

Это теоретики... Ни разу не видел ничего подобного. Задача тимлида проследить за необходимостью "навороченности" кода и дизайна.
Re[4]: Коглда пора уволить программиста? :)
От: Alexey Chen Чили  
Дата: 15.04.06 19:07
Оценка:
Erop пишет:
> Q><...>Но если тайная цель все под себя подмять в такой разнородной команаде то да, надо напихать в программу побольше патернов, темплейтов из этой и других подобных книг, замешать с STL, Loki, boost и АСЕ, и еще написать описание соответствено — цены тебе не будет...
> Если программист стал незамениным, его пора увольнять (с) не помню кто
Глупо.
Если ..., то пора увольнять ПМ'а , такое вот ИМХО.
Posted via RSDN NNTP Server 2.0
Re[2]: Чем хороша книжка Александреску
От: alexeiz  
Дата: 15.04.06 19:16
Оценка: 3 (1) +2
Здравствуйте, Erop, Вы писали:

E>3) Ещё Александреску конечно очень хорошо показал, что шаблоны C++ можно использовать как очень плохую и неудобную и практически неолаживаемую версию языка Prolog.


Это не Prolog. Это Lisp.

> Но совсем не раскрыл тему "зачем так извращаться?"


Ты не читал предисловие.

Imagine the following scenario. You come from a design meeting with a couple of printed diagrams, scribbled with your annotations. Okay, the event type passed between these objects is not char anymore; it's int. You change one line of code. The smart pointers to Widget are too slow; they should go unchecked. You change one line of code. The object factory needs to support the new Gadget class just added by another department. You change one line of code.

You have changed the design. Compile. Link. Done.

Well, there is something wrong with this scenario, isn't there? A much more likely scenario is this: You come from the meeting in a hurry because you have a pile of work to do. You fire a global search. You perform surgery on code. You add code. You introduce bugs. You remove the bugs . . . that's the way a programmer's job is, right? Although this book cannot possibly promise you the first scenario, it is nonetheless a resolute step in that direction. It tries to present C++ as a newly discovered language for software architects.


А вообще, книга описывает основные паттерны проектирования, которые нужно уже давно знать и использовать самому. Нельзя изучать паттерны по книге Александреску. Нужно прочитать Gang of Four и попробовать делать так как там написано. А потом, когда надоест писать горы однотипного кода и появиться желание как-то автоматизировать этот процесс, то тут приходят на помощь идеи Александреску.

Если ты не используешь паттерны. Александреску тебе ничего не даёт, а просто сотрясает воздух в пустую.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.