Начинающим программистам: что такое фреймворки и библиотеки
Когда человек начинает программировать, он узнаёт про фреймворки и библиотеки. Попробуем на доступных примерах объяснить, что это такое и чем они полезны. Будем использовать аналогию с постройкой дома. Это несколько упрощает реальное положение вещей, зато помогает понять разницу.
Фреймворки
Представьте: вам нужно построить дом. Можно выбрать готовый типовой проект и немного поиграть с планировкой, пока архитектор не против и вы не трогаете капитальные стены. А можно нарисовать план самому и получить именно тот дом, который хотите — даже если вы хотите цилиндрический дом со входом на втором этаже.
Разница в том, что в типовом проекте уже всё продумано: оптимальное расположение коммуникаций, теплоизоляция стен, способы заливки фундамента, и еще миллион вещей, которые со стороны не видны. Вы получаете тёплый и уютный дом, но в рамках готового проекта.
Так же работает фреймворк. Вы используете готовый шаблон и наполняете его своим кодом. Вы теряете в гибкости, зато программа работает стабильно: всё основное фреймворк берёт на себя. Под капотом фреймворка миллион нюансов: например, работа с файловой системой и базами данных, обработка ошибок, защита паролем.
Без фреймворка вам нужно будет обо всём думать самостоятельно. Это даёт больше свободы, но и больше ответственности. Если криво реализована авторизация в базу данных, через эту кривизну код смогут взломать. Если не написали обработку ошибок, программа может не работать. На языке строительства это эквивалент дома без канализации или когда в стенах не предусмотрели дырки под розетки.
Вывод: фреймворк даёт стабильность и удобство разработки, но ограничивает программиста своей архитектурой.
Библиотеки
Продолжаем строительную аналогию. Допустим, с домом вы определились, но в нём теперь нужно сделать ремонт и провести электрику. Это можно сделать с помощью молотка, отвёртки, ручной дрели и зубила, а можно взять специальные инструменты — болгарку, перфоратор и шуруповёрт. Специнструменты — это и есть библиотеки. С ними задача решается быстрее, но чтобы ими пользоваться, нужно умение. Если задача простая и с ней действительно можно справиться только с молотком и отвёрткой — отлично, тогда нам не нужны библиотеки и достаточно встроенных средств языка программирования.
Если расширить пример, то с помощью специнструмента можно даже построить дом: бетономешалка вместо ведра с лопатой, кран вместо ручной разгрузки и так далее. Получается, что написать программу можно с помощью фреймворка, а можно с помощью библиотеки. Библиотека тоже следит за тем, чтобы вы сделали как можно меньше ошибок, но нужно чётко знать все команды и правила. В итоге вы полностью контролируете процесс, но упрощаете себе жизнь, используя уже готовые библиотеки.
Получается, что фреймворк от библиотеки отличается тем, что фреймворк сам задаёт вам правила игры, которые нужно соблюдать, а библиотеками вы командуете сами и используете их возможности в нужный момент.
Мы сами решаем, как и когда вызывать библиотечные функции и что с ними делать. Библиотека — это просто набор заранее определённых функций, из которых, как из кирпичиков, можно складывать то, что нам нужно. Ещё одно интересное свойство: внутри фреймворка можно использовать другие библиотеки. Например, если вам нужен адаптивный сайт и удобная работа с формами — используйте Bootstrap для адаптива как фреймворк и подключите к нему библиотеку jQuery.
Что теперь
В одной из будущих статей потренируемся на библиотеках и фреймворках. Не переключайтесь и до скорого!
Начинающим программистам: что такое фреймворки и библиотеки
Разбираемся в двух ключевых инструментах профессиональных разработчиков: нужны ли они вам и как ими пользоваться
Когда человек начинает программировать, он узнаёт про фреймворки и библиотеки. Попробуем на доступных примерах объяснить, что это такое и чем они полезны. Будем использовать аналогию с постройкой дома. Это несколько упрощает реальное положение вещей, зато помогает понять разницу.
Фреймворки
Представьте: вам нужно построить дом. Можно выбрать готовый типовой проект и немного поиграть с планировкой, пока архитектор не против и вы не трогаете капитальные стены. А можно нарисовать план самому и получить именно тот дом, который хотите — даже если вы хотите цилиндрический дом со входом на втором этаже.
Разница в том, что в типовом проекте уже всё продумано: оптимальное расположение коммуникаций, теплоизоляция стен, способы заливки фундамента, и еще миллион вещей, которые со стороны не видны. Вы получаете тёплый и уютный дом, но в рамках готового проекта.
Так же работает фреймворк. Вы используете готовый шаблон и наполняете его своим кодом. Вы теряете в гибкости, зато программа работает стабильно: всё основное фреймворк берёт на себя. Под капотом фреймворка миллион нюансов: например, работа с файловой системой и базами данных, обработка ошибок, защита паролем.
Без фреймворка вам нужно будет обо всём думать самостоятельно. Это даёт больше свободы, но и больше ответственности. Если криво реализована авторизация в базу данных, через эту кривизну код смогут взломать. Если не написали обработку ошибок, программа может не работать. На языке строительства это эквивалент дома без канализации или когда в стенах не предусмотрели дырки под розетки.
Вывод: фреймворк даёт стабильность и удобство разработки, но ограничивает программиста своей архитектурой.
Библиотеки
Продолжаем строительную аналогию. Допустим, с домом вы определились, но в нём теперь нужно сделать ремонт и провести электрику. Это можно сделать с помощью молотка, отвёртки, ручной дрели и зубила, а можно взять специальные инструменты — болгарку, перфоратор и шуруповёрт. Специнструменты — это и есть библиотеки. С ними задача решается быстрее, но чтобы ими пользоваться, нужно умение. Если задача простая и с ней действительно можно справиться только с молотком и отвёрткой — отлично, тогда нам не нужны библиотеки и достаточно встроенных средств языка программирования.
Если расширить пример, то с помощью специнструмента можно даже построить дом: бетономешалка вместо ведра с лопатой, кран вместо ручной разгрузки и так далее. Получается, что написать программу можно с помощью фреймворка, а можно с помощью библиотеки. Библиотека тоже следит за тем, чтобы вы сделали как можно меньше ошибок, но нужно чётко знать все команды и правила. В итоге вы полностью контролируете процесс, но упрощаете себе жизнь, используя уже готовые библиотеки.
Получается, что фреймворк от библиотеки отличается тем, что фреймворк сам задаёт вам правила игры, которые нужно соблюдать, а библиотеками вы командуете сами и используете их возможности в нужный момент.
Мы сами решаем, как и когда вызывать библиотечные функции и что с ними делать. Библиотека — это просто набор заранее определённых функций, из которых, как из кирпичиков, можно складывать то, что нам нужно. Ещё одно интересное свойство: внутри фреймворка можно использовать другие библиотеки. Например, если вам нужен адаптивный сайт и удобная работа с формами — используйте Bootstrap для адаптива как фреймворк и подключите к нему библиотеку jQuery.
Что теперь
В одной из будущих статей потренируемся на библиотеках и фреймворках. Не переключайтесь и до скорого!
Знаете другие удачные аналогии? Делитесь в комментариях!
Чем язык программирования отличается от фреймворка?
Получается, что дело исключительно в том, что фреймворк более высокоуровневая сущнсть и все?
Хм, если мыслить глобально, то можно сказать, что фреймворк в сравнении с языком программирования это просто сущность более высокого уровня.
Например взять к примеру Машинный язык, по сути почти все языки программирования в конечном итоге работают с ним. То есть все языки программирования можно назвать фреймворками если мыслить глобально.
JS например является своего рода машинным кодом для браузеров, а jq фреймворком, который строится на базе JS. Но по сути jq полностью может заменить js. Также как и C может заменить Assebler теряя в производительность.
Отсюда можно заключить, что разницей между фреймворком и языком программирования является отсутствием у первого процессов транслирвоания (ну и других процессов, зависит от языка программирования). Как я это понимаю, хотя может понимаю и неверно 🙂
Фреймворк ( англ. «строительные леса», «каркас») относится к языку программирования как архитектура высотного здания относится к железобетону.
Написать фреймворк значит решить задачу следующего характера:
Она (структура) должна быть достаточно абстрактной чтобы быть гибкой но и достаточно конкретной, чтобы быть практически полезной. Написав фреймворк можно легко решать множество однотипных задач.
Вообще хорошая программная архитектура в приложении имеет свойства фреймворка.
У меня преподавательница в университете слово употребляла правильное: «ортогонально».
Представьте себе многомерную ортогональную структуру..
Если строить ПО ортогонально оно станет фреймворком.
Разница между приложением написаным под конкретную задачу и фреймворком, в том что фреймворк позволит путем изменения параметров и данных, получить на основе абстрактных шаблонов новое приложение уже для другой задачи. К основным задачам фреймворка можно отнести максимальное повторное использование кода и отделение данных от их обработки.
Библиотека же по сути не является фреймворком. Библиотека – это реализация. А фреймворк — это шаблон, набор интерфейсов, тонкая прослойка, организующих подход к разработке (который может в свою очередь использовать библиотеки)
Но принципиальная идея фреймворка содержится (на мой взгляд) даже в элементарной функции: Не нужно знать как она работает, передал параметры такие – получил результат такой, передал другие парамаетры, и результат поменялся.
Фреимворк пишут тогда, когда нужно клепать по схеме много чего-то. Потратил три дня на фреймворк, с потом пользуешься. И любые изменения требований решаются небольшими изменениями вводных данных.


