Na początek – czym jest boost?
Boost jest zestawem bibliotek napisanych dla języka C++. Mają one stanowić kolejny krok w jego rozwoju, rozszerzają jego standardowe możliwości i ułatwiają pracę programiście. Szczególnie przydatne są w przypadku tworzenia większych projektów, lub gdy posiadamy jakieś specyficzne problemy to warto choćby zerknąć czy nie ma już narzędzi do tego przeznaczonych..
Co ważne dla nas-programistów to fakt, że biblioteka boost jest na bardzo liberalnej licencji. Możemy wykorzystywać i modyfikować ją zarówno do aplikacji komercyjnych jak i otwartych, czy prywatnych. Tak, zgadza się, możemy ją modyfikować! Większość bibliotek składowych to tak na prawdę szablony, co czyni je na prawdę efektywnymi i ogólnymi.
Więcej na oficjalnej stronie: www.boost.org
Czy warto poznać tą bibliotekę?
Tak! I to zdecydowanie. W momencie gdy to piszę już 10 bibliotek składowych z kolekcji Boost’a zostało zaakceptowanych do włączenia do kolejnej wersji biblioteki standardowej języka C++0x. Także na pewno jest to inwestycja przyszłościowa. Fakt, że tworzy ją bardzo wiele osób, z czego spora grupa należy do kolegium języka C++ także ma swoje znaczenie
Biblioteki składowe…
Na stronie http://www.boost.org/doc/libs można zapoznać się z listingiem wszystkich bibliotek. Poniżej przedstawiam także ogólny opis kilku wybranych z którymi miałem już do czynienia. I z których często korzystam (no poza jedną, ale o tym niżej;p)
smart_ptr
„Sprytne wskaźniki”. Nie sposób się obejść bez nich w większym projekcie. Przynajmniej teraz tak uważam. Wyobraźcie sobie, że macie wskaźnik na jakiś obiekt… Korzysta z niego wiele metod. Pytanie kiedy należy usunąć wskaźnik? Na pewno nie raz stanęliście przed takim dylematem… Pozwolenie na wyciek pamięci jest tragiczne w wypadku systemów mających dłużej działać, natomiast podwójna próba usunięcia też nie jest przyjemną sprawą… Jeszcze gorzej może się zdażyć, jeśli będziecie chcięli odwołać się do już usuniętego wskaźnika… Ci którzy korzystają z wzorca Visitor na pewno wiedzą o czym piszę. Problemów jest wiele.. A co by było gdyby wskaźnik sam ‘wiedział’ kiedy powinien się usunąć? było by super.. I coś takie umożliwia nam biblioteka smart_ptr.
Na ten temat w najbliższym czasie pojawi się obszerniejszy artykuł wraz z wszelkimi założeniami i ideami. Będzie traktował ogólnie o Smart Pointers.. także o tym jak samemu napisać takie cudo, choć nie zaprzeczę, że docelowo będzie nakierunkowane na boosta.
Utility
Zapewne każdy programista ma wiele małych pomocnych narzędzi, które skrzętnie trzyma zawsze pod ręką. Czymś takim jest biblioteka Utility. Jest to zbiór niewielkich narzędzi. Taki worek dla programisty gdzie znajduje się sporo bardzo fajnych algorytmów i szybkich rozwiązań.
Python
Obraził bym jednego z illusion3d-memberów gdybym nie napisał, że boost udostępnia swoisty interfejs do połączenia pythona z C++. Dobra wiadomość dla skryptowców. ;p Z niej właśnie nie korzystam.. bo nie znam pythona
Ale bardzo możliwe, że już niedługo…
Random
Jest to kompletny system do generowania liczb ciut bardziej losowych niż klasyczne i pospolite rand();p
Signals
Hmm.. Kojarzycie wzorzec Observer? No to jesteście w domu. I to w bardzo zaawansowany sposób. Koncepcja tworzenia sygnałów i slotów (które te sygnały odbierają) jest iście szatańską sztuką, którą należy opanować podczas programowania czegokolwiek większego.
Regex
Biblioteka wspomagająca obsługę… wyrażeń regularnych.. Jeśli znacie temat to wiecie jak bardzo jest on problematyczny (no zaraz ludzie od perla wyskoczą, że przecież to proste
– niestety nie tak bardzo w C++). Warto zerknąć jeśli potrzebujecie.
Słowo końcowe…
I takim bardzo pobieżnym przeglądem zakończę. Jeszcze raz polecam gorąco, aby przyjrzeć się pełnemu spisowi bibliotek i.. jeśli chcielibyście zobaczyć dokładniejszy opis którejkolwiek z nich na łamach blogu illusion3d to piszcie! Proście, a będzie Wam dane (zapewne;p). W następnym odcinku opiszę opis instalacji i konfiguracji Boost na Visual Studio. Oczywiście pojawią się artykuły opisujące konkretne biblioteki, a także wpisy traktujące o sztuczkach i kruczkach wykorzystania konkretnych elementów boost’a.
Literatura
Było by bardzo źle gdybym nie podał żadnej literatury na ten temat… Częstujcie się.:
[1] „Więcej niż C++. Wprowadzenie do bibliotek Boost”, Bjorn Karlsson- PL/ENG
[2] „Język C++. Metaprogramowanie za pomocą szablonów”, David Abrahams, Aleksey Gurtovoy – PL/ENG
[3] „The Boost Graph Library”, Jeremy G. Siek, Lie-Quan Lee – ENG
Niewiele pozycji, ale zapewniam, że jest olbrzymi support w internecie:D
Napisane w boost, c++, programowanie
Tagi: boost, c++, programowanie, szablony, wprowadzenie
Najnowsze komentarze