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

Но что же это за штуки такие — фреймворки? На этот и другие вопросы я постараюсь ответить в этой статье.

Что такое фреймворк?

Фреймворк является своего рода дополнением к языку программирования. Это просто набор инструментов и практик, которые позволяют, например:

  • создавать код быстрее. Фреймворки обычно решают многие популярные проблемы. В них имеется много готовых функций, благодаря которым нам не приходится так часто «изобретать велосипед»,
  • лучшая групповая работа. Фреймворки очень часто вынуждают нас к определенным приемам, которые облегчают понимание кода другими программистами,
  • повышение безопасности. Многие фреймворки навязывают нам использование тех или иных решений безопасности, благодаря которым в случае менее продвинутых приложений нам не приходится об этом беспокоиться так сильно, как без фреймворка (что не означает, что мы должны полностью забыть о нем).

Примеры фреймворков

Laravel (PHP)

Наряду с Symfony это один из самых популярных фреймворков для языка PHP. Он характеризуется в первую очередь простотой и скоростью создания кода.

Вы найдете для него целую кучу готовых компонентов, а его последние версии позволяют установить Breeze — стартовый набор, который позволяет реализовать в вашем коде такие вещи, как логирование, регистрации или восстановление пароля всего за минуту. Laravel также предлагает вам использовать шаблоны Blade, которые еще больше упрощают создание шаблонов страниц.

Документация Laravel — https://laravel.com/docs/9.x

Spring (Java)

Один из самых популярных фреймворков в мире. Он позволяет еще быстрее, проще и безопаснее программировать на Java.

Документация Spring — https://docs.spring.io/spring-framework/docs/current/reference/html/

Django (Python)

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

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

Документация Django — https://django.fun/docs/django/ru/4.0/

Ruby on Rails (Ruby)

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

Случай с Ruby интересен тем, что когда мы говорим «Ruby», мы часто имеем в виду Ruby on Rails, который на самом деле является очень популярным фреймворком для этого языка. Ruby on Rails, как и описанный выше Django, позволяет очень быстро и легко создавать веб-приложения.

Документация по Ruby on Rails — https://guides.rubyonrails.org/

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

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

Когда изучать фреймворк?

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

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

Я также предлагаю сначала собрать один или даже несколько проектов на чистом языке программирования. Даже если код «так себе», вы поймете основы архитектуры, что значительно облегчит вам понимание того, как работает фреймворк, что происходит, когда и почему. Фреймворки не всегда являются единственно правильным решением, поэтому стоит начать с основ самого языка.

Стоит ли использовать фреймворк?

Все зависит от приложения. Если вы планируете создать небольшое приложение с несколькими функциями, вероятно, не имеет смысла перегружать его неуклюжей структурой. Это все равно, что взять целый самосвал для перевозки одного мешка с песком. Да, можно, но зачем?.. Интересно, как это ни парадоксально, но фреймворки могут плохо работать не только для самых маленьких, но и для самых больших проектов.

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

Обычно это не имеет смысла, но в крупнейших компаниях даже 1% или 2% увеличение производительности может привести к огромному снижению затрат. В таких крайних случаях готовые универсальные фреймворки могут оказаться не лучшим решением.

Каковы недостатки фреймворков?

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

  • скорость действия. Обычно приложения, созданные во фреймворках, работают немного медленнее, чем созданные с нуля, то есть «сделанные на заказ» (при условии, что они были разработаны эффективным образом),
  • публичный код. Это имеет много преимуществ, но нельзя отрицать, что какие-либо бреши могут быть обнаружены людьми со злым умыслом. Это, в свою очередь, может привести к нежелательным действиям с приложениями, использующими данную платформу (например, к взлому или умышленному взиманию платы). Это довольно редкое явление для лучших фреймворков, но иногда такие сценарии случались,
  • избыточные функции. Фреймворки обычно полны ресурсов, которые вы никогда не будете использовать. Если вы не избавитесь от них, они могут дополнительно замедлить работу вашего приложения или, в лучшем случае, занять немного больше места на диске.