![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
(устаревшая до рождения микро-статья памяти языка C++, черновые наброски)
Выучили его всего, попрактиковались. Знаете, какова структура объекта в памяти при виртуальном множественном наследовании, как бросается out_of_memory, зачем и когда нужен виртуальный деструктор, как итерировать iostream и инстанцировать binder_2nd, и используете auto_ptr всегда, кроме случаев, когда знаете, что это повредит программе и почему.
Что дальше?
В смысле C++.
Помимо платформенно-зависисмых библиотек (это с большой вероятностью будут MSVC/WinAPI, библиотека POSIX, or whatever), остались вещи, которые нужно знать, осталось нечто, что следует знать всем программистам на цэ-с-двумя-плюсами.
Jeff Alger,C++ for Real Programmers.
Искал хорошие ссылки на помянутые книги, нарыл ссылку, смотреть в конец топика.
Критика ожидается и приветствуется.
Выучили его всего, попрактиковались. Знаете, какова структура объекта в памяти при виртуальном множественном наследовании, как бросается out_of_memory, зачем и когда нужен виртуальный деструктор, как итерировать iostream и инстанцировать binder_2nd, и используете auto_ptr всегда, кроме случаев, когда знаете, что это повредит программе и почему.
Что дальше?
В смысле C++.
Помимо платформенно-зависисмых библиотек (это с большой вероятностью будут MSVC/WinAPI, библиотека POSIX, or whatever), остались вещи, которые нужно знать, осталось нечто, что следует знать всем программистам на цэ-с-двумя-плюсами.
- Boost - уникальная попытка сделать из стандартной библиотеки языка нечто целостное, и вообще сделать C++ лучше. An absolute must know. Содержит мощную кроссплатформенную библиотеку всего, что должно бы быть в стандартной, и много чего ещё, чего, может, там быть и не должно. Сам намерен его внимательно изучать и дополнять этот пост по мере изучения.
- Профайлинг использования CPU, coverage profiling, профайлинг использования (и утекания) прочих ресурсов. Популярные инструменты для этого - BoundsChecker и ко под Windows, ещё?
- Автоматическое управление памятью по методу Hans-а Boehm-а.
- Юнит тестирование, в частности, наиболее популярные инструменты - CppUnit и Boost-овский boost_test.
Jeff Alger,C++ for Real Programmers.
Искал хорошие ссылки на помянутые книги, нарыл ссылку, смотреть в конец топика.
Критика ожидается и приветствуется.
Tags:
(no subject)
19/10/05 02:10 (UTC)И давай забудем про лямбдизну - это только одна часть буста. Уверен, что использование boost_lambda составляет менее 1% использования всего фреймворка.
(no subject)
20/10/05 10:13 (UTC)Вот, например, для проекта, который представляет собой кучу математики, работающей с топологией микросхем (преобразование, моделирование процесса фотолитографии) и с изображениями с электронного микроскопа, важны люди, которые могут писать нетривиальные вещи, и совершенно не важен boost.
Если же в проекте надо кодить много бизнес-логики, то, наверное, да, boost мог бы облегчить жизнь. Но в таких проектах должны быть серьёзные требования к производительности, чтобы их стали писать на С++.
Lambda library была призвана олицетворять все библиотеки из boost, которые наровят расползтись по всему проекту.
(no subject)
21/10/05 05:07 (UTC)Я бы сказал, что она в таких условиях не расползется. А если расползётся, то пусть тот, кто выделывается и её всюду суёт, соберёт ещё обратно :) Потому что это организационная проблема.
Кстати, то, что ты помянул - тоже бизнес-логика. Видимо, имелись в виду информсистемы, работающие в основном с int, string и double/Money.
Но с моей точки зрения его полезность ортогональна работе с микросхемами: они могут сочетаться, а могут и не.
Почему C++... видимо, legacy :)
(no subject)
21/10/05 06:58 (UTC)Если кто-то пытается использовать modern C++ в коллективе, где не все хорошо знают, что это такое, то он создаёт не только технический риск, связанные с переносимостью кода, но и риск, возникающий от того, что коллеги не вполне понимают, как такой код работает.
Если уж мы используем что-то такое в проекте, то возникает желание локализовать это в одном месте. Например, мы можем счастливо использовать Boost.Program_options, и при возникновении необходимости достаточно легко отказаться от неё. Есть другой тип библиотек, которые решают повсеместно возникающие задачи, типа смартпойнтеров или lambda library. Использовав такого рода библиотеку в одном маленьком модуле, ты получишь маленькую выгоду, по сути, они расширяют язык и предполагают повсеместное единообразное использование. Решение повсеместно в коде использовать такой "расширенный" С++ труднообратимо.
Кстати, то, что ты помянул - тоже бизнес-логика. Видимо, имелись в виду информсистемы, работающие в основном с int, string и double/Money. Не понял, что — "тоже бизнес-логика"?
Наукоёмкость проекта обостряет риски, связанные с boost — меньше специалистов и больше шансов, что придётся собирать проект, скажем, сановским компилятором.