Boost C++ Kütüphanesi Nedir? - Damra KOÇ
Merhaba arkadaşlar. Bu yazıda, sizlere “Boost C++” kütüphanesi hakkında genel bilgiler vermeye çalışacağım. İleriki zamanlarda sizlere, soket , multi-thread , thread pool, memory pool kullanımı, nesne yönelimli programlama, generic template kütüphane oluşturma, distributed computing gibi, sizlerinde işine yarayacağını düşündüğüm konularda, kendi bildiğim kadarıyla yardımcı olmaya çalışacağım. Ama bu konuların içine iyice dalmadan önce, sizlere, bana bütün programlarımda işime yarayan, bulduktan sonra vazgeçemediğim, olmazsa olmazım Boost hakkında genel bilgiler vermeye çalışacağım.
Boost, en son sürümünü buradan indirebileceğiniz, C++ dilinde sizlere çok ama çok yardımcı olabilecek, yazılım yaparken kodlamanızı azaltan, yazdıklarınızın anlaşılmasını kolaylaştıran, çalışmasından şüphe etmediğiniz, geniş ve zengin yardımcı araçlarıyla her isteğinize, ihtiyacınıza yarayan, bugüne kadarki en büyük ve içerik anlamında en zengin, C++ için geliştirilen kütüphaneler topluluğudur. Tamamen ücretsizdir. Bu organizasyon altında geliştirilen 10 tane kütüphane, şu anda C++ için yayınlanan TR1(Technical Report) ve C++11 standartında yer almaktadır. Boost kütüphaneleri, MS Windows ve Unix (Linux, Mac OS, Solaris) ve hemen hemen bütün modern işletim sistemler altında çalışabilmektedir.
Bu kütüphanelerden, başlıklar halinde, kısaca bahsetmek gerekirse, sizlere şöyle sıralayabilirim:
Any : Herhangi bir tipte data kullanımını list, vector, v.b. container sınıflarında karışık olarak tutmayı sağlayan güzel bir kütüphanedir.
Asio : Network ve soket yazılımlarını çok kolaylaştıran ve kod yazımını üst seviyede azaltan bir kütüphanedir.
Bimap : Data gruplarınızı (Varsayalım ki iki tane map<X,Y> ve map <Y,X> türünden, birbirine bağlı iki tane koleksiyona ihtiyacınız var.) ikiyönlü (Bidirectional) olarak saklayabileceğiniz, kullanımı kolay yardımcı bir kütüphanedir.
Bind : İleride size bir çok kere bahsedeceğim, benim için “Generic Programming” yapmam için vazgeçilmez, Boost’ unda her yerinde göreceğiniz, “std::bind1st ve std::bind2nd” işlevlerinin özelleştirilmiş halidir.
Chrono : Kullanışlı, zaman ile alakalı yardımcı araçlar topululuğu.
Config : Boost’ un bazı özelliklerini açıp, kapayabileceğiniz, ayar yapabileceğiniz sistemdir.
Container : STL kütüphanesindeki container sınıfları ve standartda olmayan, ama kullanışlı (flat_map, flat_set, stable_vector gibi) yardımcı bir kütüphanedir.
Date Time : Gregorian tarihlerini kullanabildiğiniz ve tarihleri itere edebildiğiniz yardımcı, güzel bir kütüphane.
Filesystem : Dosya ve klasörler arasında iterator’ler ve yardımcı araçlar ile dolaşabildiğiniz, yeni klasör yaratma, dosya silme, adını değştirme, gibi bütün işlevleri kolayca gerçekleştirebilmenize yarayan kütüphanedir.
Foreach : .Net bilenlerin isminden aşikâr olduğu gibi, container’ larda gezinirken, bizi sıkıcı ve bazen anlamayı zorlaştıran “for” döngülerinden kurtaran bir macro kütüphanedir.
Geometry : İçinde bir çok geometri formüllerinin yer aldığı, kod optimizasyonlu güzel ve kullanışlı bir kütüphanedir.
Interprocess : Shared memory, memory mapped files, prosesler arası mutex’ ler gibi ihtiyaca yönelik, bazı programlarda can kurtaran işleve sahip bir kütüphane.
Lambda : Yeni C++ standardında yer alan “Lambda” operatörüne benzer, daha fazla yeteneğe sahip bir kütüphanedir.
Math : İsminden de anlaşıldığı üzere matematik işlemleri ve formüllerini barındıran, özellikle matriks işlemlerinizde, kodun optimizasyonu ve anlaşılabilirliği açısından çok fayda sağlayan bir kütüphanedir.
MPI : ” distributed-memory parallel ” tarzı programlarınızda mesaj paylaşımlı arayüz kütüphanesidir.
Pool : Memory Pool kullanmanız gereken yazılımlarınızda size yardımcı olabilecek, kullanışlı bir kütüphanedir.
Signals / Signals2 : C++ dilinde, .Net’ de sıklıkla kullanılan ve çoğu işi kolaylaştıran “delegate” ve “Event Handler” benzeri bir arayüz sunan kütüphanedir.
Smart Ptr : Pointer türünden dinamik bir nesne yarattınız, bütün diğer nesneleriniz onu kullanıyor ve siz, nesnenizi ne zaman sileceğinizi veya kaç kere kopyalandığını bilemiyor veya bilmek istemiyorsanız, tam size göre ve bir çok zaman programınızın çalışması sırasında sizi, “segmentation fault” hatasından kurtaracak (ki bu hata benim en nefret ettiğim hatadır.), kullanımı son derece kolay bir kütüphanedir.
Thread : Multi-thread yazılımlarınızda hayatınızı kolaylaştıracak, ve Boost Asio gibi Boost’ un benim için vazgeçilmezlerinden olan bir kütüphanedir.
Yukarıda kısaca bahsettim ama, inanın burada yazdıklarım Boost’ un sahip olduğu kütüphanelerin yarısı kadar diyebilirim. Yazımın başındada bahsettiğim gibi, Boost, artık benim için C++’ da kod geliştirmede bir vazgeçilmezdir. Benim sağ kolum ve en büyük yardımcımdır diyebilir. Umarım burada yazdıklarım size yardımcı olabilecek araçlar hakkında ufakta olsa bilgi verebilmiştir. İngilizce dilinde Boost’ un kendisayfasından kütüphanelerin kendi yazılarına ulaşabilir, oradan da bilgi sahibi olabilirsiniz.