Введение

Когда у меня возникла идея написать эту статью, я столкнулся с важным вопросом, который, как мне кажется, волнует большинство людей, непосредственно связанных с разработкой систем.

В чем разница между фреймворком и библиотекой?

Чтобы помочь ответить на этот вопрос, я попытался понять основную концепцию каждого из этих слов, и результат можно прочитать ниже.

⚠️ Если я написал что-то, что не соответствует действительности, пожалуйста, прокомментируйте, чтобы я мог внести необходимые исправления.



Рамки

Описание изображения

Фреймворк — это набор классов, которые будут служить основой для разработки приложения, определяя язык программирования и путь, по которому нужно идти для решения задач проекта.

Каркас также можно сравнить с фундаментом здания.

Пример фреймворка: это NextJS.



Библиотека

Описание изображения

Библиотека, с другой стороны, предназначена для решения конкретных проблем в приложении. Он не является частью жизненного цикла вашего проекта, и его не нужно писать на том же языке, что и ваше приложение.

Пример библиотеки: есть ReactJS.



Кривая обучения

Описание изображения

Так же важно, как и сама структура, кривая обучения будет определять скорость реализации проекта.

Большие команды могут значительно сократить время обучения фреймворков, потому что они могут специализироваться на разных аспектах, увеличивая скорость разработки.

В небольших командах обычно (но не правило) выбирается язык, наиболее известный среди членов команды. В этих случаях выбор ограничивается языковой версией.

Кончик: Ищите соответствие между опытом вашей команды и кривой обучения, требуемой выбранной структурой. Это действие гарантирует скорость разработки проекта.



Проект

Описание изображения

Представьте на минуту, что вам нужно разработать приложение для контроля семейного бюджета. Приложение будет очень простым, с полями для ввода значений (реальных чисел), дат и описаний.

Для разработки рассматриваемого проекта вы быстро изучаете два PHP-фреймворка, хорошо известных в сообществе разработчиков: Ларавель а также CodeIgniter.

Эти два фреймворка очень похожи и очень хорошо обслуживают архитектуру MVC. Существует отличная возможность для подключения к нескольким базам данных, и «подключение» Rest API можно считать очень простой задачей в обеих средах.

Для сравнения: новый проект, созданный с помощью CodeIgniter, занимает около 22 МБ дискового пространства, а Laravel — немногим более 60 МБ.

Хотя CodeIgniter меньше, со стороны команды будет больше усилий, потому что многие решения нужно будет создавать с нуля, в отличие от Laravel.

Кончик: Попробуйте оценить, насколько далеко может вырасти проект, избегая замены фреймворка в середине процесса разработки..



Язык

Описание изображения

Используя тот же пример знакомого приложения для контроля бюджета, я упомянул две PHP-фреймворки, но ни разу не упомянул, будет ли это веб-проект, настольный компьютер или мобильный проект.

Выбор языка будет основываться на потребности, представленной клиентом.

Если приложение для контроля бюджета предназначено для индивидуального использования, например, установлено на рабочем столе, одним из наиболее подходящих языков будет C#.

Кончик: Выберите знакомый язык с долгосрочной поддержкой (LTS), что снижает риск отказа от технологии в середине проекта..



ажиотаж

Описание изображения

Хайп означает моду, а быть «модным» означает идти в ногу со временем и идти в ногу со всем новым.

Постоянно появляются новые технологии с разными предложениями и ломающими парадигмы. Но для развития им потребуются адепты и энтузиасты, готовые тратить время на сообщения об ошибках и предложение новых функций.

Кончик: Даже если новые технологии многообещающие, будьте осторожны. Помните Сильверлайт?



Вывод

Эта статья задумывалась как точка размышления при выборе фреймворка или библиотеки.

Окончательное решение должны принять люди, непосредственно вовлеченные в проект, и заказчик.

До скорого. 😎