Наша крупная корпорация получила крупный заказ на программу для перемножения 2 на 2, потому мы ищем библиотеку для этого.
Вася советует взять библиотеку XXX, мотивируя это тем, что это старая и известная либа, которую используют многие проекты. Петя считает, что XXX - это древнее говно мамонта, которое совершенно не поддерживается, монструозно и вообще не современно, особенно когда есть библиотека YYY - новая, быстрая, молодежная, с шаблонной магией C++. Да и не библиотека это, которая предназначена для перемножения двух чисел, а целый фреймверк, с поддержкой криптографии и квантовых вычислений. Коля же считает, что надо взять любую библиотеку, выдрать из нее те 15 строк, что требуются и запилить свою библиотеку ZZZ. Это не только позволит не раздувать проект, но даст полный контроль над библиотекой, что облегчит дальнейшее портирование проекта на BeOS, OS/2 и ZX-Spectrum (хотя это и не требуется на сегодняшний день).
Из спора выше можно выделить следующие особенности библиотек, которые можно использовать для выбора:
- зрелость библиотеки, в каких проектах она уже используется
- как давно был последний релиз библиотеки, не заброшена ли она
- размер библиотеки, скорость компиляции проекта, потребление памяти
- степень интегрированности в язык, насколько язык родной для библиотеки, или же она является портом с других языков и почти не использует особенности языка
- степерь интегрированности в платформу, не выглядит ли приложение инопланетно
- дополнительные фичи, которые вроде бы не нужны, но могут понадобится
- возможности портирования на другие платформы, которые вроде бы не нужны, но могут понадобится
А какие аргументы для выбора библиотек знаете вы? Помогите Васе, Пете и Коле не поубивать друг друга. Хотя я больше болею я Колю.