понедельник, сентября 29, 2008

Boost на русском


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


  • Boost Smart pointers. Умные указатели, Boost::Shared_ptr, Boost::Weak_ptr, Boost::Intrusive_ptr.
  • Boost::Multi_index - улучшенный вариант контейнеров STL.
  • Boost::Spirit - библиотека для создания парсеров. Пример использования Spirit 2.
  • Boost::Regex - использование регулярных выражений в С++. Ещё одно введение в библиотеку - Boost это просто. Часть 1. Boost.Regex на хабре.
  • Boost::Xpressive - альтернатива Boost::Regex. Также работа с регулярными выражениями. Это описание и 4 предыдущих найдены на блоге Alno’s Blog: C++, Java и Rails
  • Boost::any - обобщенный контейнер, позволяющий хранить разнородные данные в одном и том же объекте.
  • Boost::Asio - для создания кроссплатформенного кода для работы с сетью. Это из блога Alex Ott’а. Еще нашёл перевод туториала по boost::asio
  • Boost::threads - библиотека для работы с потоками. Это перевод статьи первого автора этой библиотеки Уильяма Кемпфа в виде PDF. Статья старая, 2002 г, с тех пор библиотека была почти полностью переписана, хотя внешние интерфейсы изменились не сильно, так что общее представление из статьи получить всё ещё можно. 
  • Boost.DateTime - Библиотека по работе со временем.
  • На сайте sources.ru выложена кое-какая документация по библиотекам: smart_ptr, bind (работа с функторами и предикатами в алгоритмах), function (работа с указателями на функции), signal (для реализации паттернов «Команда» или «Действие» из книги банды четырёх), lexical_cast(преобразование любых типов в строки и из строк в любой тип).
  • Ещё несколько достаточно кривых введений в библиотеки boost есть на сайте solarix.ru. В частности кое-что про lexical_cast, format (форматирование строк, замена printf), regex(регулярные выражения), tokenizer (разбор строк на лексемы), и еще несколько. Но перевод ужасный. Правда есть примеры, из которых кое-что можно понять.
  • В википедии есть примеры по библиотекам uBLAS (линейная алгебра для матриц и векоров),random (генерация псевдослучайных чисел), Spirit (про него выше уже есть ссылка, в которой всё расписано более подробно), Regex, Graph (алгоритмы на графах).
  • И наконец мой собственный перевод документации Boost::test для юнит тестирования .
Вот пока всё, что я нашёл. Найду ещё что-то, добавлю.

7 комментариев:

Анонимно комментирует...

Интересно написано....но многое остается непонятнымb

Unknown комментирует...

не работает ссылка про потоки. Не могли бы вы скинуть мне на почту тот документ. Очень надо

Unknown комментирует...

Да, ссылка в самом деле не работала, я загрузил этот pdf в google docs, теперь все должно работать.

Davidok комментирует...

Я как понял в бусте при работе с потоками их сначала надо создать, а потом запустить
boost::thread_group thrds;
thrds.create_thread(&func1);
thrds.create_thread(&func2);
thrds.join_all();
После, чего выполнение программы останавливается на функции join_all().
Можно, как то создавать потоки динамически? например в одном из созданных потоков или как-то еще, после того как они были запущены.

Unknown комментирует...

Алексей, спасибо за подбор ссылок.
отличный блог! *-)

NullFlow комментирует...

Спасибо за подборку! Пригодится.

Капрал комментирует...

спасибо.
есть книга на русском для работы с графами.

С++. Boost Graph Library. Библиотека программиста. Джереми Сик, Лай-Кван Ли, Эндрю Ламсдэйн

https://docs.google.com/file/d/0ByMektMWF5dVTFhCNzJqTGdBaEE/edit?usp=sharing