Как языки получают новые возможности из библиотек?
====================================================

 Изучаю C++ примерно полгода, но немогу понять как библиотеки могут расширять возможности языка? Например в C++ нет встроенных возможностей для работы с GUI, но WinAPI это позволяет сделать, как?  

Библиотека написана на другом языке? 

 Грубо говоря в компьютере взаимодействие с любыми устройствами заключается в том, что нужно записать некоторый набор байт по определенному адресу в памяти (порт). Адресные диапазоны устройств (порты) и протокол обмена заранее известны. Каждый тип устройства имеет свой собственный протокол обмена с ПК (т.е. набор и количество данных и размер адресного пространства устройства).  

Современные ОС запрещают напрямую работать с устройствами, т.к. защита и все такое. Но ОС предоставляют собственные функции, позволяющие управлять устройствами, только более высокоуровневые. Ну т.е. вы не думаете куда и что именно надо записать, чтоб на экране нарисовалась точка. Вы просто вызывавете функцию ОС с заданными координатами точки.  

Когда все работали под MS-DOS, то ОС не препятствовала низкоуровневому доступу к оборудованию и любая программа могла непосредственно взаимодействовать с устройством без посредничества ОС. Сейчас погрузиться в это можно программируя микроконтроллеры.  

  

Обычно ОС пишут на Си. Поэтому разработчику ОС достаточно легко предоставить библиотеку API функций для Си. С++ как потомок Си так же умеет работать с Си библиотеками. В других ЯПах приходится реализовывать механизмы, чтоб из них можно было бы вызывать библиотечные Си функции. 

 Как то так.   

```
#include <windows.h>

MessageBox(hwndDlg,"Die!","I'm dead!",MB_YESNO|MB_ICONINFORMATION);
```
  

  

Впрочем есть еще ATL, WTL, MFC они за вас сделают черную работу.   

  

Под линуксом все то же самое, с некоторыми отличиями  

  

<https://habr.com/ru/post/352096/> 

> Изучаю C++ примерно полгода, но немогу понять как библиотеки могут расширять возможности языка?

  

Примерно так же как обычные библиотеки расширяют возможности человека.   

  

> Например в C++ нет встроенных возможностей для работы с GUI, но WinAPI это позволяет сделать, как?

  

"Do you speak English? Не? Ну вот тебе словарь и учебник".   

  

> Библиотека написана на другом языке?

  

Может и на другом, может и на том же. Разницы нет если вызовы согласованы.  

  

Намек: GUI под linux и GUI под windows совершенно разные, а язык C++ - такой же.