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

 5 вопросов новичка о библиотеках и фреймворках  
  

Привет! Я много читаю и изучаю python (веб разработка - back-end), но тем не менее на казалось бы простые вопросы я не смог найти ответов, в связи с этим попрошу подтвердить/опровергнуть некоторые мои догадки, и ответить на некоторые вопросы. Заранее благодарен всем кто откликнулся и объяснил)   
  

1. Как я понял, библиотека - это просто набор функций (обычно решающий какой-то один спектр задач, например: библиотека HTTP собственно дает функции для работы с HTTP)  
  

2. Фреймворк - это библиотека библиотек, которая к тому же диктует правила архитектуры (то есть в фреймворке есть уже библиотека для работы с HTTP, для работы с базой данных, то есть все функции которые могут пригодиться для написания сервера, и к тому же есть четкая архитектура которая реализует тот или иной паттерн проектирования)  
  

3. Что такое стандартная библиотека языка? Это базовые функции, которые дали программистам создатели языка?   
  

4. **Правильно ли я понимаю что все библиотеки и фреймворки базируются на стандартных библиотеках?**  Вместо пяти функций из стандартной библиотеки легче написать одну из пользовательской? То есть, стандартные библиотеки - это, скажем так, основа на которой всё базируется? И если нет какого-то функционала в стандартных библиотеках, то его нереально реализовать?  
  

5. Правильно ли я понимаю, что сначала нужно ознакомиться (хотя бы просто прочитать и понять функции, которые есть в стандартной библиотеке) со стандартной библиотекой языка в той сфере где я хочу работать?(К примеру, бэкенд-программист должен уметь работать с HTTP, с базой данных и т.д.) потому что на этом базируются все библиотеки и фреймворки? Или можно сразу учить фреймворк?  
  

6. API - это внешний интерфейс. То есть, по сути тоже библиотека только для работы с каким-то сервисом или технологией? 

 в общем – все верно.  

кроме 
> 6. API это внешний интерфейс, то есть по сути тоже библиотека только для работы с каким то сервисом или технологией?

  

библиотека только для работы с каким то сервисом или технологией называется врапером/оберткой/etc. a api - это набор средств доступа к приложению со стороны, предоставленный разработчиком этого приложения. 

*1. Как я понял, библиотека - это просто набор функций*  

да  
 *2. Фреймворк - это библиотека библиотек,*   

Да, определение примерно такое. Фреймворк не просто набор функций.  

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

Можно было бы сказать что фреймворк платформа, но тут наоборот, он слишком узкоспециализирован, так как решает задачи в своей области, а не вообще.  
  
*3. Что такое стандартная библиотека языка?*  

Да, библиотеки, которые идут в поставке. Например в операционной системе полно стандартных библиотек, и если вы пишете свою десктоп программу с этими библиотеками, вы знаете что в дистрибутив вашей программы их включать не нужно - они уже есть у пользователя, в его Windows/Linux.  
  
*4. Правильно ли я понимаю что все библиотеки и фреймворки базируются на стандартных библиотеках? Вместо пяти функций из стандартной библиотеки легче написать одну из пользовательской? То есть, стандартные библиотеки - это, скажем так, основа на которой всё базируется? И если нет какого-то функционала в стандартных библиотеках, то его нереально реализовать?*  

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

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

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

Стандартные библиотеки нужно знать, чтобы не писать велосипед, если есть уже стандартные, написанные и вылизанный тысячами человекочасами.  
  
*6. API - это внешний интерфейс. То есть, по сути тоже библиотека только для работы с каким-то сервисом или технологией?*  
  

API это Advanced Programmer Interface.  

Если человек запускает браузер и заходит на сайт - он получает веб-страничку. Но он получает не HTML, а рендер, который генерит браузер.  

Если вы заходите на веб API, вы получаете какой-то набор данных, например в формате json/xml, да хоть просто текст, который обычно читает не человек, а другая программа.  
  

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

 Всё примерно так и есть.  

Чётких определений не существует.  

Важно это просто ощущать и понимать