Edytuj wracając do tego pytania po kilku latach
Po dalszym korzystaniu z coraz większej liczby bibliotek doładowań, pomyślałem, że zaktualizuję to pytanie, aby dać solidne uzasadnienie, dlaczego powinieneś używać doładowania, gdy opis produktu odpowiada pożądanej funkcjonalności. Przekona to nawet nie-mówców. Pobierz openSSL, spróbuj utworzyć z nim aplikację kliencką i serwerową. Teraz spróbuj, aby działało to na każdej platformie. Następnie pobierz i użyj boost :: asio :: ssl, aby utworzyć tę samą aplikację. Jeśli nie jesteś przekonany, że ulepszenie jest właściwym miejscem do poszukiwania czystego, dobrze zoptymalizowanego, sprawdzonego przez wielu platform kodu, to proste ćwiczenie cię przekonwertuje.
Wersja Tl; dr:
Moim zdaniem nie widzisz mnóstwa niezależnych lub małych i średnich firm deweloperskich korzystających z boosta, ponieważ jest to potężna i potężna dzika bestia, która nie jest łatwa do oswojenia i jesteś w zasadzie sam, próbując dowiedzieć się, jak użyć tego. Dokumentacji brakuje na kilka sposobów (patrz długa wersja), a „społeczność” wokół projektu wydaje się być zaginiona, rozproszona lub nieaktywna (w porównaniu z innymi projektami).
Bardzo długa wersja:
zdaję sobie sprawę, że odpowiedź jest już zaakceptowana, ale jako ktoś, kto faktycznie wykorzystuje ulepszenia w prawie każdym projekcie, który robię, pomyślałem, że opublikuję odpowiedź.
Pamiętam, kiedy po raz pierwszy zacząłem grzebać w akcji i szczerze mówiąc, nie miałem cholernego pojęcia, co się dzieje. Zwiększenie wcale nie jest dobrze udokumentowane. Ludzie mogą się ze mną nie zgodzić, że jestem pewien, ponieważ istnieje mnóstwo fragmentów przykładowego kodu i komentarzy i tym podobnych, ale wszystko jest bardzo zimne i niejasne, a także trudne w nawigacji.
Trudno też znaleźć miejsce, w którym czujesz, że znalazłeś „społeczność” wokół projektu. W rzeczywistości społeczność wydaje się nieistniejąca lub koczownicza. Niestety, nawet ich lista mailingowa została przeszukana przez tak wiele stron z pijawkami, że możesz zejść do tej króliczej nory, zawsze zapętlając się z powrotem do miejsca, w którym zacząłeś.
Te dwa czynniki sprawiają, że nauka korzystania z bibliotek rozszerzeń jest dość trudnym zadaniem. Nawet jeśli techniczne korzystanie z boosta nie jest zbyt skomplikowane, jest to ogromny zestaw bibliotek i patrzenie w dół, gdy wszystko, co masz do dyspozycji, to kilka fragmentów kodu i rozrzuconych fragmentów listy mailingowej z najciemniejszych zakątków Internetu ... masz pomysł.
Zacząłem majstrować przy ulepszeniu wersji 1.45 i dopiero teraz w wersji 1.52 / 1.53 czuję się wystarczająco wygodnie, aby używać go w produkcji. Jest tak wiele rzeczy, do których należy się przyzwyczaić i pamiętać, nawet proste rzeczy, takie jak konfiguracja wzmocnienia i zapamiętywanie tej konfiguracji, ponieważ sposób budowania bibliotek i funkcji może się znacznie różnić w zależności od twoich preferencji w czasie kompilacji ze względu na to, jak można dostosowywać rzeczy są.
Jednakże , nie pomyłka , raz można dzierżyć impuls, masz zyskał potężną broń do szybkiego budowania stałych, programy cross-platform. Weźmy boost::asio
na przykład. Możesz napisać niezwykle potężny, skalowalny i solidny, wieloplatformowy asynchroniczny serwer WWW w zaledwie kilkuset wierszach. Przez lata napisałem wielu klientów, serwerów, serwerów proxy itp., Mając zaledwie kilkaset wierszy kodu, z których każdy jeszcze mnie nie zawiódł, i mogę przenieść je z platformy na platformę w kilka minut.
Jak zauważyli inni, większe firmy zwykle utknęły w posiadaniu starszych produktów lub lubią tworzyć własne, co całkowicie rozumiem. Jest też ta naprawdę głupia rzecz, o której słyszałem i zetknąłem się, gdy deweloperzy i / lub kierownicy projektów zabraniają używania ulepszeń, ponieważ są „za duże”. Domyślam się, że wierzą, że boost to 1 pojedyncza biblioteka lub nigdy nie słyszeli o BCP .
Co do DLACZEGO decyduję się na użycie boosta
Powiedziałbym, że go używam, ponieważ jak sugerujesz w swoim pytaniu, jest to „biblioteka” C ++. Boost jest postrzegany w świecie C ++ jako szwajcarski scyzoryk rzeczy, których w końcu będziesz musiał użyć. Pomysł polega więc na tym, że jeśli zajdzie taka potrzeba, powinna istnieć bardzo wydajna i przenośna wersja tego pakietu. Duże firmy przyczyniają się do rozwoju , bardzo wykształceni ludzie z imponującymi życiorysami przyczyniają się i utrzymują go , a gdy opracowywany jest nowy standard C ++, ludzie zwykle szukają ulepszenia, aby zobaczyć, które jego części powinny stać się standardem ISO C ++.
Więc jeśli muszę dodać funkcjonalność, dla której prawdopodobnie istnieje biblioteka, pierwsze miejsce, w którym będę szukał, to ulepszenie tylko dlatego, że jestem całkiem bezpieczny w zakładach, że jest dość dobrze zoptymalizowane, przenośne, będzie obsługiwane i utrzymywane przez bardzo długo, a błędy zostaną znalezione i usunięte. W świecie open source te cechy mogą być bardzo trudne do zdobycia.