Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как бы вы кратко объяснили разницу между библиотекой и фреймворком?

ОбразованиеПрограммирование+3
Анонимный вопрос
Data Science
  · 12,4 K
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 12 янв 2022
Самое важное различие, и фактически определяющее различие между библиотекой и фреймворком, — это IoC (инверсия управления). Цитируя Мартина Фолвера в его статье об инверсии управления:
Инверсия управления — ключевая часть того, что отличает фреймворк от библиотеки. Библиотека — это, по сути, набор функций, которые вы можете вызывать, в наши дни обычно организованных в классы. Каждый вызов выполняет некоторую работу и возвращает управление клиенту. Фреймворк воплощает в себе некий абстрактный дизайн с большим количеством встроенного поведения. Чтобы использовать его, вам нужно вставить свое поведение в различные места в фреймворке либо путем создания подклассов, либо путем подключения ваших собственных классов. Код фреймворка затем вызывает ваш код в этих точках.
====================
Что это значит? Что ж, это означает, что когда вы вызываете библиотеку, вы контролируете ситуацию.
Но с фреймворком управление перевернуто: фреймворк зовет вас. (Голливудский принцип: не звоните нам, мы позвоним вам.) Это в значительной степени определение фреймворка. Если у него нет Inversion of Control, это не фреймворк.
===================
По сути, весь поток управления уже находится во фреймворке, и есть только куча предопределенных белых пятен, которые вы можете заполнить своим кодом. С другой стороны, библиотека — это набор функций, которые вы можете вызывать.
Еще одно хорошее объяснение можно найти в книге Gang of Four «Шаблоны проектирования, элементы многоразового объектно-ориентированного программного обеспечения», библии для каждого хорошего разработчика программного обеспечения. Вот определения Toolkit и Framework:
====================
Часто приложение включает классы из одной или нескольких библиотек предопределенных классов, называемых наборами инструментов. Инструментарий — это набор связанных и повторно используемых классов, предназначенных для обеспечения полезных функциональных возможностей общего назначения. Наборы инструментов не навязывают вашему приложению определенный дизайн; они просто предоставляют функциональные возможности, которые могут помочь вашему приложению выполнять свою работу. Они позволяют вам как разработчику избежать перекодирования общей функциональности. Наборы инструментов подчеркивают повторное использование кода.
====================
Фреймворк — это набор взаимодействующих классов, которые составляют повторно используемый дизайн для определенного класса программного обеспечения. Фреймворк определяет архитектуру вашего приложения. Он будет определять общую структуру, ее разбиение на классы и объекты, их ключевые обязанности, взаимодействие классов и объектов и поток управления.
=====================
Платформа предопределяет эти параметры проекта, чтобы вы, разработчик/разработчик приложения, могли сосредоточиться на специфике своего приложения. Платформа фиксирует проектные решения, которые являются общими для ее предметной области. Таким образом, фреймворки делают упор на повторное использование дизайна, а не на повторное использование кода, хотя фреймворк обычно включает конкретные подклассы, которые вы можете сразу же запустить в работу.
======================
Повторное использование на этом уровне приводит к инверсии контроля между приложением и программным обеспечением, на котором оно основано. Когда вы используете инструментарий (или, если уж на то пошло, обычную библиотеку подпрограмм), вы пишете основную часть приложения и вызываете код, который хотите использовать повторно. Когда вы используете фреймворк, вы повторно используете основное тело и пишете код, который он вызывает. Вам придется писать операции с определенными именами и соглашениями о вызовах, но это уменьшает количество проектных решений, которые вам придется принимать.
В результате вы не только можете быстрее создавать приложения, но и сами приложения имеют схожую структуру. Их легче поддерживать, и они кажутся пользователям более последовательными. С другой стороны, вы теряете некоторую творческую свободу, так как многие дизайнерские решения были приняты за вас.
2 эксперта согласны
Вот если бы ещё это не пересказ чужой статьи был, а объяснение своими словами, было бы вообще супер.
старший разработчик в pseven.io  · 12 янв 2022
Между библиотекой и фреймворком есть сходство, и то и другое — это ранее написанный код, который программист использует в своей разработке. Академическое отличие же состоит в инверсии управления. Когда программист использует библиотеку, он пишет код, из которого в свою очередь вызывается код библиотеки. Когда же программист использует фреймворк, ситуация обратная — код... Читать далее
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
5 экспертов согласныи1 эксперт не согласен
Ответ корректный и достаточно подробный
Погромист на C#  · 12 янв 2022
Библиотека - набор из модулей (или даже одного) для решения какой-то одной или нескольких определённых задач.
Фреймворк - в целом каркас для приложения.
Очень часто фреймворк диктует то, как в итоге приложение будет устроено, или как будет устроена какая-то его часть, которая этот фреймворк использует. (не просто же так слово frame-рама в названии)
1 эксперт согласен
Разработчик программного обеспечения 5G ML/AI @Nokia  · 25 янв 2022
Я бы попробовал взял для аналогии биологию ) Фреймворк - это скелет (например, животного). Библиотеки - органы (например, лёгкие или печень). То есть, фреймворк, как правило, это нечто, что позволяет сцепить воедино различную функциональность для решения определённой задачи. Библиотеки позволяют взять готовый логически связанный функционал как одно целое. К этому всему... Читать далее
Знаю программирование php, в основном php develstudio.  · 22 янв 2022
Фреймворк или библиотека? А в чем, собственно, разница? Разработчики часто используют термины "библиотека" и "фреймворк" как синонимы, так что кажется, что это одно и то же. Но разница все-таки есть. Как фреймворки, так и библиотеки, – это некоторый код. Он может быть большим или маленьким по объему, его автором могут быть сторонние программисты или вы сами. Суть в том... Читать далее
1 эксперт не согласен
Ответ ещё больше запутывает и не дает ответа на вопрос, что же такле фреймворк в таком случае.
По образованию физик, работаю программистом  · 12 янв 2022
Библиотека -- это когда ваш код вызывает библиотечный код. А фреймворк -- это когда наоборот, фреймворк вызывает ваш код.
Плюс-минус.
1 эксперт согласен
Это в каком языке такое???
Фреймворк рулит вашей программой, ваша программа рулит библиотекой. Фреймворк обычно содержит много библиотек. Вы подбираете фреймворк для выполнения задачи, пишете программу под эти задачи, фреймворк в нужные моменты вызывает её. Аналогия с анатомией: берём фреймворк слона, пишем программу переноса брёвен - и все, наш слон наряду с другой жизнедеятельностью будет... Читать далее
1 эксперт согласен
Многое во фреймворке проходит без вашего участия. Например функция роутинга по умолчанию в котроллере веб-фреймворк... Читать дальше
Веб-разработчик Php, Bitrix. Исследователь аномальных явлений, автор книги о тайнах и...  · 23 янв 2022
Кратко так: это совершенно разные понятия.
1. Библиотека это набор методов и решений для использования в определённых ситуациях без возможности модификации и вмешательства во внутренний код библиотеки.
2. Фреймворк это вспомогательная структура для ускорения написания и систематизации комплексных программ и архитектур, в которых, в свою, очередь, уже можно использовать бибилотеки.