Frameworks vs Libraries

За каждым коммерческим проектом стоит большое количество работы: кода, анализа, менеджмента, кофе..

 Мобильное/веб/десктоп/.. приложение, (как правило) несет под собой некоторый framework(s) под капотом (как говорят девелоперы), а также значительное количество библиотек.

В первую очередь выбирается язык на которой будет написана та или иная часть проекта. Это может быть один язык для Front End части (Web Application),предположим, Javascript, и совершенно другой для Back End части (Server) - Java, Python и т.д.

Данный выбор языка и фреймворка в дальнейшем может быть основан на:

Пожеланию заказчика

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

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

Но не всегда требования заказчика можно удовлетворить с помощью возможностей определенного языка :(

В этот момент начинается продажа людей, которые есть на данный момент и готовы справиться с поставленной задачей

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

Возможность интеграции с облачными сервисами, иметь возможность работы оффлайн, способность обрабатывать большие данные, ... многое-многое другое

Иногда требования бывают стандартными, как для интернет магазина...

Порой нужно больше ресерча на построение ракеты для полета на марс, тем более не факт, что это будет именно марс)

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

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

Пострадает ли качество без использования фреймворков и библиотек?

Не факт.

НО 100% пострадает скорость поставок функциональности конечного продукта!

ПОЧЕМУ?!

ЧТО же такое есть в этих библиотеках и фреймворках!?

Начнем с библиотек

JAVASCRIPT 
function summ (a,b) {
    return a + b;
}

summ(5,6); RESULT - 11

PYTHON

def sum_two_numbers(a, b):
    return a + b

sum_two_numbers(1,2) - RESULT 3

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

 

Но программы в большинстве состоят из намного более трудного для понимания кода. И этого кода с каждым днем все больше (как и функциональности).

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

К примеру предидущая функция поиска суммы 2 чисел.

Возможно также понадобиться поиск факториала, либо нахождение максимально длинного имени среди списка всех клиентов.. т.е. нахождение клиента в базе данных по какому-либо признаку...

Такой функциональности оочень много.

Разработчики со временем поняли, что ходить с флешками друг к другу за КОДОМ не очень удобно. И придумали оформлять общую часть КОДА в библиотеки (наборы функциональности)

Допустим, часто употребляемая библиотека для работы с математическими операциями Math для Javascript. Либо библиотека Google Analytics.

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

Итого:

import Math;

Math.summ(5,6) RESULT - 11

Даже при такой простой функциональности кода намного меньше

Прирост производительности гарантирован. Главное знать нужные библиотеки.

Некоторые из библиотек имеют схожее поведение. Иногда одинаковое. 

Решение на стороне разработчиков.

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

Популярные типы библиотек:

  • Содержат готовую функциональность для обработки данных, формирования данных определенного формата, преобразования картинок в картинки с фильтрами (как в Intagram). В целом, библиотеки которые содержат реализованный кодовый функционал и разработчики предпочитают использовать его повсеместно. Определенные библиотеки считаются обязательными для владения. Т.е. если человек знает Java, то они должны знать Guava библиотеку.
  • Часть библиотек представляет собой набор инструментов для работы с графикой, построения графиков, цветовых тем на сайтах, либо мобильных приложениях. К примеру, D3
  • Другие библиотеки содержат визуальное представление компонент страницы с готовыми стилистическими решениями. ЭТОТ тип наиболее близок к пользователю. Например Material UI

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

Но что же такое framework?

Framework также представляет готовую функциональность для написания приложения, которая очень сильно упрощает реализацию проекта.

Тогда в чем разница библиотек и фреймворков?

  • Фреймворк задает архитектуру приложения - стиль организации кода, написания логики
  • Содержит реализованный функционал для поведения приложения - где будут обрабатываться данные, где они будут храниться, как реализовать переходи между страницами приложения, как строить код для программиста
  • Фреймворк диктует многие подходы написания кода.
  • Некоторые фреймворки хороши для web приложений, другие для мобильных.

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

Так как каждая библиотека и фреймворк это тоже продукты со своими разработчиками.

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

Text

Framework

By sergey_kovalchuk

Framework

  • 253