Начинающим программистам: что такое фреймворки и библиотеки
Разбираемся в двух ключевых инструментах профессиональных разработчиков: нужны ли они вам и как ими пользоваться.
Когда человек начинает программировать, он узнаёт про фреймворки и библиотеки. Попробуем на доступных примерах объяснить, что это такое и чем они полезны. Будем использовать аналогию с постройкой дома. Это несколько упрощает реальное положение вещей, зато помогает понять разницу.
Фреймворки
Представьте: вам нужно построить дом. Можно выбрать готовый типовой проект и немного поиграть с планировкой, пока архитектор не против и вы не трогаете капитальные стены. А можно нарисовать план самому и получить именно тот дом, который хотите — даже если вы хотите цилиндрический дом со входом на втором этаже.
Разница в том, что в типовом проекте уже всё продумано: оптимальное расположение коммуникаций, теплоизоляция стен, способы заливки фундамента, и еще миллион вещей, которые со стороны не видны. Вы получаете тёплый и уютный дом, но в рамках готового проекта.
Так же работает фреймворк. Вы используете готовый шаблон и наполняете его своим кодом. Вы теряете в гибкости, зато программа работает стабильно: всё основное фреймворк берёт на себя. Под капотом фреймворка миллион нюансов: например, работа с файловой системой и базами данных, обработка ошибок, защита паролем.
Без фреймворка вам нужно будет обо всём думать самостоятельно. Это даёт больше свободы, но и больше ответственности. Если криво реализована авторизация в базу данных, через эту кривизну код смогут взломать. Если не написали обработку ошибок, программа может не работать. На языке строительства это эквивалент дома без канализации или когда в стенах не предусмотрели дырки под розетки.
Вывод: фреймворк даёт стабильность и удобство разработки, но ограничивает программиста своей архитектурой.
Библиотеки
Продолжаем строительную аналогию. Допустим, с домом вы определились, но в нём теперь нужно сделать ремонт и провести электрику. Это можно сделать с помощью молотка, отвёртки, ручной дрели и зубила, а можно взять специальные инструменты — болгарку, перфоратор и шуруповёрт. Специнструменты — это и есть библиотеки. С ними задача решается быстрее, но чтобы ими пользоваться, нужно умение. Если задача простая и с ней действительно можно справиться только с молотком и отвёрткой — отлично, тогда нам не нужны библиотеки и достаточно встроенных средств языка программирования.
Если расширить пример, то с помощью специнструмента можно даже построить дом: бетономешалка вместо ведра с лопатой, кран вместо ручной разгрузки и так далее. Получается, что написать программу можно с помощью фреймворка, а можно с помощью библиотеки. Библиотека тоже следит за тем, чтобы вы сделали как можно меньше ошибок, но нужно чётко знать все команды и правила. В итоге вы полностью контролируете процесс, но упрощаете себе жизнь, используя уже готовые библиотеки.
Получается, что фреймворк от библиотеки отличается тем, что фреймворк сам задаёт вам правила игры, которые нужно соблюдать, а библиотеками вы командуете сами и используете их возможности в нужный момент.
Мы сами решаем, как и когда вызывать библиотечные функции и что с ними делать. Библиотека — это просто набор заранее определённых функций, из которых, как из кирпичиков, можно складывать то, что нам нужно. Ещё одно интересное свойство: внутри фреймворка можно использовать другие библиотеки. Например, если вам нужен адаптивный сайт и удобная работа с формами — используйте Bootstrap для адаптива как фреймворк и подключите к нему библиотеку jQuery.
Что теперь
В одной из будущих статей потренируемся на библиотеках и фреймворках. Не переключайтесь и до скорого!
Библиотека (программирование)
В некоторых языках программирования [каких?] то же, что модуль, в некоторых — несколько модулей. С точки зрения операционной системы (ОС) и прикладного ПО библиотеки разделяются на динамические и статические.
Содержание
Динамические библиотеки
Часть основной программы, которая загружается в ОС по запросу работающей программы в ходе её выполнения (Run-time), то есть динамически (Dynamic Link Library, DLL в Windows, SO в Linux). Один и тот же набор функций (подпрограмм) может быть использован сразу в нескольких работающих программах, из-за чего они имеют ещё одно название — библиотеки общего пользования (Shared Library). Если динамическая библиотека загружена в адресное пространство самой ОС (System Library), то единственная копия может быть использована множеством работающих с нею программ, что положительно сказывается на степени использовании ресурса ОЗУ. Динамические библиотеки могут содержать в себе как критические для работы программы части, так и дополнительные функции. Дополнительным плюсом такого подхода является то, что динамическая библиотека может быть использована в качестве плагина (Plug-ins), расширяющего функциональность программы. Минусом является то, что в случае, если модуль, который содержит в себе критическую часть, отсутствует, программа не сможет продолжить работу.
При написании программы программисту достаточно указать транслятору (компилятору или интерпретатору) языка программирования, что следует подключить нужную библиотеку и использовать функцию из неё. Ни исходный текст, ни исполняемый код функции в состав программы на данном этапе не входит.
Статические библиотеки
Примечания
Литература
Николай Джосьютис C++ Стандартная библиотека. Для профессионалов = The C++ Standart Library. A Tutorial and Reference. — СПб. : Питер, 2004. — 730 с. — ISBN 5-94723-635-4
Что такое библиотека кода?
Рылся в интернете, но так и не понял, что такое библиотека кода ( в программировании ).
Прошу вас в доступной форме разъяснить мне это понятие.
Нужно мне это для того, чтобы понять определение framework
Оценить 1 комментарий
Ну фигачишь ты функцию, которая превращает строки в массив слов в этой строке. И нафигачил ты её настолько круто, что дали тебе премию на работе, а в отдельном тёмном уголке офиса поставили «Уголок Поклонению Делителю Строк». Даже включили в дайджест на хабре.
P.S. В ходе рассказа ни один котик не пострадал.
P.P.S. Но потом конечно же ты опубликовал её в npm и назвал фреймворком, но это уже другая история.
В случае с CSS и HTML, которые упомянуты в тегах этого вопроса, библиотекой можно назвать набор готовых решений, типа Bootstrap (хотя это framework, который состоит из библиотек), Bourbon.
При возникновении ошибок в коде библиотеки или добавлении улучшений, новых функций/возможностей, достаточно будет выпустить (или получить, смотря с какой стороны смотреть) новую версию. Это проще, чем держать однотипный код, одинаковые решения в разных проектах и потом из-за досадной опечатки сидеть и перелопачивать все 
Фреймворки и библиотеки: что нужно знать IT рекрутерам
Почему нужно знать о фреймворках и библиотеках? Как IT рекрутер, вам уже недостаточно знать только названия определенных языков программирования – вы также должны понимать основы того, как создается программное обеспечение.
В чем разница между фреймворком и библиотекой?
Основное различие заключается в вопросе о том, кто контролирует определенные ключевые действия в процессе создания программного обеспечения (и когда программное обеспечение фактически работает).
Например, когда разработчик использует функцию из библиотеки, он контролирует – другими словами, код разработчика полностью контролирует последовательность событий. Однако в случае фреймворка направление управления инвертируется (это называется инверсией управления), поскольку фреймворк управляет разработчиком – в данном случае фреймворк управляет кодом разработчика. В каком-то смысле фреймворк работает так же, как и так называемый голливудский принцип: «Не звони нам, мы тебе позвоним».
Итак, что же такое фреймворки и библиотеки? В частности, в чем разница между этими двумя понятиями?
Какова цель фреймворков и библиотек?
Как вы, вероятно, знаете, код приложения, написанный программистами, постоянно меняется по мере того, как приложение, над которым они работают, развивается. Однако фреймворки и библиотеки являются фундаментальными строительными блоками, которые не меняются и используются в качестве структуры конкретного приложения. Как библиотеки, так и фреймворки были разработаны программистами для сокращения необходимости выполнения повторяющихся задач снова и снова. Они также могут обеспечить некоторую функциональность без необходимости реализовывать ее с нуля.
Что такое фреймворк в программировании?
Фреймворк можно описать как архитектуру, которая облегчает реализацию программного обеспечения хорошо организованным образом. Такая структура воплощает некоторую заранее определенную абстрактную конструкцию, которая связана с более встроенным поведением, чем в случае с библиотекой. В фреймворке весь поток управления уже находится на месте, где разработчики могут разместить свой собственный код. В результате фреймворк определяет скелет, в котором разработчики конкретного приложения определяют свои собственные функции для заполнения этого самого скелета. Другими словами, фреймворк можно рассматривать как набор шаблонов и библиотек, которые помогают программистам создавать приложения. С другой стороны, фреймворк также диктует архитектуру приложения. Например, он будет определять общую структуру, разделение на классы, ключевые обязанности классов и способы взаимодействия объектов.
Когда лучше использовать фреймворк и библиотеки?
Как и в случае с любой реальной проблемой, это сложный вопрос, на который трудно дать четкий ответ в каждом конкретном случае. Например, команда с большим количеством младших разработчиков может быть лучше с фреймворком, который, следовательно, обеспечивает определенную структуру и определенные стандарты, диктуя команде, как она должна создавать продукт. С другой стороны, опытной команде, работающей над приложением, которое не является заурядным и имеет нишевую функциональность, может быть лучше использовать библиотеку (или библиотеки), а не фреймворк, потому что это дает им большую гибкость и контроль. В более экстремальных случаях, возможно, даже лучше для конкретной команды разработчиков создавать ПО полностью с нуля, не используя ни фреймворк, ни библиотеки.
На что обращать внимание при отборе кандидатов, которым необходимо знать определенные фреймворки и библиотеки?
Вот мини-FAQ о том, как языки программирования, фреймворки и программные библиотеки используются в реальном мире. Там, где это уместно, мы также добавили некоторые предложения о том, на что следует обращать внимание при отборе кандидатов.
Вопрос: Могут ли программисты кодировать приложение без библиотеки или фреймворка, но используя только свой собственный код, написанный с нуля?
Ответ: Да, они могут, но это всегда займет больше времени.
Вопрос: Могут ли программисты кодировать приложение, используя фреймворк плюс какой-то свой собственный код?
Ответ: Да, они могут.
Вопрос: Могут ли программисты программировать приложение, используя либо одну библиотеку (или несколько библиотек), либо часть своего собственного кода?
Ответ: Да, они могут.
Вопрос: Могут ли программисты написать свою собственную библиотеку?
Ответ: Да, и большинство программистов делают это в процессе своей собственной работы. Это один из лучших способов избежать любой формы дублирования, которая не нравится всем разработчикам. Они иногда решают выпустить в сообщество библиотеки, которые оказались особенно полезными. Как рекрутер, стоит спросить кандидатов, сделали ли они какие-либо такие вещи с открытым исходным кодом.
Вопрос: Могут ли программисты кодировать приложение, используя фреймворк плюс одну библиотеку (или несколько библиотек) плюс свой собственный код?
Ответ: Да, они могут. Если команда разработчиков уже знакома с фреймворком и соответствующими библиотеками, и конкретный фреймворк хорошо подходит для той области, в которой будет работать новое программное обеспечение, то такой подход, скорее всего, будет наиболее эффективным и действенным. Это означает, что при подборе персонала вы ищете разработчиков, которые уже знакомы с фреймворками и библиотеками, используемыми вашей командой в данный момент.
Вопрос: Возможно ли, чтобы библиотека устарела?
Ответ: Да, но это вряд ли произойдет с хорошо известной библиотекой, которая обеспечивает значительную функциональность.
Вопрос: Возможно ли, чтобы фреймворк устарел?
Ответ: Да, и это один из потенциальных недостатков использования фреймворка. Фреймворки приходят и уходят, и даже если фреймворк популярен в течение длительного времени, любой фреймворк может резко измениться от одной основной версии к другой основной версии. Конечно, создатели популярных фреймворков пытаются ограничить такие изменения, но это может произойти и происходит. Вы должны стараться быть в курсе, по крайней мере, основных изменений в рамках, используемых вашей командой.
Вопрос: Могут ли программисты создать свой собственный фреймворк?
Ответ: Да. После того, как команда программистов закончила создание нового типа программного обеспечения, довольно часто случается, что, основываясь на своем конкретном опыте, они позже создают структуру, которая предназначена для того, чтобы сделать возможным создание аналогичного типа ПО способом, который значительно более эффективен. Это хорошая идея, чтобы просмотреть резюме и увидеть был такой опыт у кандидата.
Вывод
Как IT рекрутер, очень важно, чтобы вы отбирали кандидатов не только с точки зрения языков программирования, но и с точки зрения фреймворков и библиотек.
Что такое библиотеки в программировании?
Классическая фраза в разговоре про библиотеки в программировании – «не изобретать велосипед». Сегодня уже не предполагается, что программисты пишут технологические продукты полностью сами. Они используют библиотеки. IT-ликбез на ALMAMAT Blog: не углубляясь в непонятные новичкам детали, объясняем базовые концепции, чтобы погружение в IT не отпугивало сложностью.
Что такое библиотеки?
Библиотека в программировании (Library) – это сборник подпрограмм или объектов, используемых для разработки программ. Можно сказать и так: это набор классов, компонентов или модулей для разных задач.
В программах много стандартных элементов, например, кнопки, проигрыватели видео, запросы и т. д. Нет необходимости каждый раз писать их с нуля, потому что все это уже существует – есть открытые бесплатные библиотеки.
Библиотеки представляют собой уже написанные кем-то переносимые наборы проверенного кода. Это готовые решения, которые программисты могут присоединять к своим программам, вставлять их в свой код по специальным алгоритмам, причем в разных проектах.
Библиотеки для программирования бывают встроенными и дополнительными. У каждого языка есть свои библиотеки. Примеры. Библиотеки для Ruby ищут на The Ruby Toolbox. У Java есть множество готовых классов в Java Standard Libraries, а также в JHipster и т. д. Для С++ существует Boost, а для Python – Simplejson или Requests (вторую используют такие гиганты, как Amazon и Spotify). Готовые классы для кода на Objective-C и Swift можно найти в UIKit Framework. И так далее.
Количеством библиотек во многом определяется развитость и популярность языков. Чем больше приверженцев, тем больше библиотек. А чем больше библиотек, тем больше приверженцев.
Библиотеки бывают для компилируемых языков и интерпретируемых языков (об этом расскажем чуть позже, подписывайтесь на ALMAMAT в соцсетях); динамические и статические; используемые одной программой или несколькими; с критическими функциями и с дополнительными. Отличие динамических в том, что исходный код библиотеки не вставляется, а только прописывается путь и имя функции. В случае со статическими, напротив, исходный код из объектных файлов библиотек вставляется в программу на этапе компоновки, когда создается исполняемый файл программы. Соответственно, везде есть преимущества, нюансы и логика работы.
Почему важен навык работы с библиотеками?
Они дают очевидную экономию времени на всех этапах. Использование библиотек – это составляющая функционального подхода к написанию программ. Программа состоит из подпрограмм. Современные программисты по мере необходимости используют готовые подпрограммы и целые модули, состоящие из подпрограмм, то есть библиотеки.
Сегодня конкурентоспособный софт по определению слишком сложный и мощный, чтобы программисты писали их полностью самостоятельно. Это нерентабельно, времязатратно и не реалистично, если говорить о темпах разработки. Многие алгоритмы, классы и функции, которые должны быть в коде, уже кем-то реализованы и обнародованы – это доступные всем библиотеки. Они не только облегчают разработку и ускоряют процесс, но и снижают количество ошибок в коде.
Чрезвычайно важно изучать библиотеки того языка, который вы выбрали, чтобы потом быстро ориентироваться в них: у развитых языков очень много библиотек. Навык обращения с библиотеками – один из обязательных для современного программиста. ALMAMAT. IT Faces



