Apa keuntungan menggunakan pustaka C ++ Boost? [Tutup]


123

Jadi, saya telah membaca dan tampaknya perpustakaan Boost banyak digunakan dalam praktiknya (meskipun tidak di toko saya). Kenapa ini? dan apa yang membuatnya begitu indah?


10
Nitpick: Ini bukan akronim, jadi Boost (atau boost), bukan BOOST. Kecuali Anda berteriak tentu saja;)
Niklas

10
@Niklas Ini juga MENINGKATKAN saat Anda menggunakan salah satu makro preprocessor = P
KitsuneYMG

@KitsuneYMG Saya melihat pertanyaannya sudah diedit, tapi saya cukup yakin OP tidak menggunakan bidang pertanyaan untuk mengedit kode preprocessor;)
Niklas

3
@Nikias Saya hanya menjadi sok pintar = P. Seorang pria pasti punya hobi.
KitsuneYMG

C ++ adalah omong kosong tanpa Boost :)
TriCore

Jawaban:


135

Boost digunakan secara luas karena:

  • Ini adalah open-source dan peer-review.
  • Ini menyediakan berbagai fungsionalitas platform agnostik yang terlewatkan oleh STL.
  • Ini adalah pelengkap STL daripada pengganti.
  • Banyak pengembang Boost berada di komite standar C ++. Faktanya, banyak bagian Boost dianggap disertakan dalam pustaka standar C ++ berikutnya.
  • Itu didokumentasikan dengan baik.
  • Its lisensi memungkinkan dimasukkan dalam open-source dan closed-source proyek.
  • Fitur-fiturnya biasanya tidak bergantung satu sama lain sehingga Anda hanya dapat menghubungkan bagian-bagian yang Anda butuhkan. [ Komentar Luc Hermitte ]

5
Selain itu, kami juga dapat mengatakan bahwa sub-library boost dapat digunakan secara independen satu sama lain (kecuali beberapa library inti). Ini bukan karena kita menggunakan boost.shared_ptr sehingga kita harus menggunakan boost.ublas, misalnya.
Luc Hermitte

Saya senang melihat jawaban yang terlihat seperti entri ensiklopedia. Sangat mudah untuk mendapatkan material dalam jumlah besar. +1
Tyler Smith

Melalui tampaknya setiap perpustakaan bergantung pada MPL ...
Viktor Sehr

Boost memungkinkan untuk menulis sekali, pengembangan dan penggunaan lintas platform, benar?
FilBot3

Apakah ini gratis untuk penggunaan komersial?
Mayur

39

Dari halaman beranda:

"... salah satu proyek perpustakaan C ++ yang sangat dihormati dan dirancang dengan ahli di dunia." - Herb Sutter dan Andrei Alexandrescu, Standar Pengkodean C ++

"Item 55: Biasakan diri Anda dengan Boost." - Scott Meyers, C ++ Efektif, Edisi ke-3.

"Solusi yang jelas bagi sebagian besar pemrogram adalah menggunakan pustaka yang menyediakan platform elegan dan efisien yang independen terhadap layanan yang dibutuhkan. Contohnya adalah PENINGKATAN ..." - Bjarne Stroustrup, Abstraksi, pustaka, dan efisiensi dalam C ++

Jadi, ini adalah rangkaian pustaka yang banyak digunakan dan diterima, tetapi mengapa Anda membutuhkannya?

Jika Anda membutuhkan:

  • regex
  • fungsi mengikat
  • fungsi lambda
  • tes unit
  • petunjuk cerdas
  • tidak dapat disalin, opsional
  • serialisasi
  • tanggal umum
  • sistem file portabel
  • buffer melingkar
  • utilitas konfigurasi
  • perpustakaan gambar umum
  • TR1
  • benang
  • uBLAS

dan lebih banyak lagi saat Anda membuat kode dalam C ++, lihat Boost .


23

Karena mereka menambahkan banyak hal yang hilang ke pustaka standar, sehingga beberapa di antaranya termasuk dalam standar.

Mendorong orang tidak berbohong:

Mengapa organisasi harus menggunakan Boost?

Singkatnya, Produktivitas. Penggunaan pustaka berkualitas tinggi seperti Boost mempercepat pengembangan awal, menghasilkan lebih sedikit bug, mengurangi reinvention-of-the-wheel, dan memangkas biaya pemeliharaan jangka panjang. Dan karena pustaka Boost cenderung menjadi standar de facto atau de jure, banyak programmer yang sudah terbiasa dengannya.

Sepuluh pustaka Boost disertakan dalam TR1 Pustaka Standar C ++, dan juga dijadwalkan untuk standardisasi penuh nanti. Lebih banyak library Boost sedang disiapkan untuk TR2. Menggunakan pustaka Boost memberi organisasi permulaan dalam mengadopsi teknologi baru.

Banyak organisasi sudah menggunakan program yang diimplementasikan dengan Boost, seperti Adobe Acrobat Reader 7.0.


16

Beberapa kelas Boost sangat berguna (shared_ptr), tetapi menurut saya kelas tersebut agak gila dengan ciri dan konsep di Boost. Waktu kompilasi dan ukuran biner yang besar benar-benar gila dengan Boost, seperti halnya dengan kode template-heavy. Harus ada keseimbangan. Saya tidak yakin apakah Boost telah menemukannya.


10
Anda lupa bahwa Boost bukanlah satu perpustakaan tetapi banyak. Selain itu, Anda harus mengimbangi ukuran besar dan waktu kompilasi terhadap fungsionalitas tersebut. Ciri dan konsep sangat membantu dalam pengembangan. Waktu kompilasi memang harga kecil untuk membayarnya.
Konrad Rudolph

8

Ia menambahkan pustaka yang memungkinkan pendekatan yang lebih modern untuk pemrograman C ++.

Dalam pengalaman saya, banyak programmer C ++ sebenarnya adalah programmer C ++ awal tahun 1990-an, cukup banyak menulis kelas C ++, tidak banyak yang menggunakan obat generik. Pendekatan yang lebih modern menggunakan generik untuk menyusun perangkat lunak bersama-sama dengan cara yang lebih mirip bahasa dinamis, namun pada akhirnya Anda masih mendapatkan pemeriksaan / kinerja jenis. Agak jelek untuk dilihat. Tapi begitu Anda mengatasi masalah sintaks itu benar-benar bagus. Boost memberi Anda banyak alat yang Anda butuhkan untuk menulis sesuatu dengan mudah. pointer pintar, fungsi, lambda, bindings, dll. Kemudian ada pustaka pendorong yang memanfaatkan cara baru penulisan C ++ ini untuk menyediakan hal-hal seperti jaringan, regex, dll ...

jika Anda menulis banyak for loop, atau objek fungsi hand rolling, atau melakukan manajemen memori, maka Anda harus memeriksa boost out.


8

BOOST adalah koleksi perpustakaan yang memenuhi kebutuhan umum untuk banyak proyek C ++. Umumnya, mereka memprioritaskan ketepatan, usabilitas, portabilitas, kinerja run-time, dan efisiensi ruang di atas keterbacaan kode implementasi BOOST, atau terkadang waktu kompilasi. Mereka cenderung tidak mencakup persyaratan fungsional tingkat tinggi yang lengkap (misalnya kerangka aplikasi), dan sebaliknya (untungnya) menawarkan blok penyusun yang dapat lebih bebas digabungkan tanpa mendikte atau mendominasi desain aplikasi.

Alasan penting untuk mempertimbangkan penggunaan BOOST meliputi:

  • sebagian besar perpustakaan telah diuji dan dirancang dengan cukup baik: mereka umumnya mendapatkan tinjauan yang cukup baik oleh beberapa pemrogram yang sangat baik, dibandingkan dengan orang-orang dengan solusi buatan rumah di ruang masalah yang sama, dan cukup banyak digunakan untuk mengumpulkan umpan balik dunia nyata yang luas
  • itu sudah ditulis dan solusi Anda mungkin belum
  • itu cukup portabel (tetapi itu bervariasi per perpustakaan)
  • lebih banyak orang di komunitas C ++ yang akan membantu Anda dengan kode Anda
  • BOOST sering kali merupakan tempat pembuktian untuk pengenalan ke Standar C ++, jadi Anda akan memiliki lebih sedikit pekerjaan yang harus dilakukan dalam menulis ulang kode Anda agar kompatibel dengan Standar masa depan tanpa BOOST
  • karena permintaan komunitas, vendor kompilator lebih cenderung untuk menguji dan bereaksi terhadap masalah kebenaran dengan penggunaan BOOST
  • keakraban dengan pustaka penguat akan membantu Anda melakukan pekerjaan serupa pada proyek lain, mungkin di perusahaan lain, di mana kode apa pun yang mungkin Anda tulis sekarang mungkin tidak tersedia untuk digunakan kembali

Perpustakaan dijelaskan dalam satu atau dua baris di sini: http://www.boost.org/doc/libs/ .




3

Tingkatkan pada dasarnya sinopsis dari Standar nantinya, selain itu dengan semua tinjauan sejawat dan penggunaan yang didapat Boost, Anda dapat yakin bahwa Anda mendapatkan kesepakatan yang cukup bagus untuk dependensi Anda.

Namun kebanyakan toko tidak menggunakan Boost, karena ini merupakan Ketergantungan Eksternal. Dan dalam kenyataannya, mengurangi ketergantungan eksternal juga sangat penting.


3

Boost adalah untuk C ++ seperti .NETFramework untuk C #, tapi mungkin dalam skala yang lebih kecil.


2

Saya menggunakan perpustakaan filesystem keluar sedikit, dan boost :: shared_ptr cukup bagus. Saya mendengarnya melakukan hal-hal lain juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.