API: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
отмена правки 90449779 участника 176.223.184.241 (обс.)
Метка: отмена
Перевод термина API на русский язык и пояснения к нему
Строка 1: Строка 1:
Примечание: в переводе термина API на русский есть распространенная ошибка! В данной статье первый перевод ('''программный интерфейс приложения''') - верен, а второй - нет. Программный Интерфейс Приложения или, немного коряво, но верно - Программный Интерфейс Программы.
{{о|интерфейсах программирования|организации, использующей аббревиатуру API,|Американский институт нефти}}

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

Второй-же перевод (Интерфейс Создания Приложений) подразумевает Методы Создания Программ или по-другому можно еще сказать - Средства Программирования Программ, что-то, что Создаёт Программы... но в данном случае это неверно.

С помощью API мы (на самом деле) не создаем программу как таковую, мы просто используем некую прокладку (интерфейс) между вашей программой/приложением и другой программой, к которой Вы обращаетесь за данными (или посылаете ей данные, с которыми она уже сама что-то делает). Если как-то это описать в наглядном виде, то, например, если взять ситуацию, когда Вы кладете в почтовый ящик газету (в обычный почтовый ящик в подъезде дома!), а человек её потом оттуда забирает - вот это пример первого перевода термина: издательство использовало прокладку/интерфейс (ящик) для передачи сообщения (газеты), так как не может это сделать напрямую. Так и программы, не знаю "что внутри у другой программы, как та устроена", не может "напрямую" к ней обратиться, чтобы передать/получить данные. Поэтому API - это некая "дверь/окно и т.п.", которые позволяют им общаться, не вникая в то, как эти программы устроены.{{о|интерфейсах программирования|организации, использующей аббревиатуру API,|Американский институт нефти}}
'''API''' ('''программный интерфейс приложения, интерфейс прикладного программирования''') ({{lang-en|'''a'''pplication '''p'''rogramming '''i'''nterface}}, {{lang-en2|API}} [эй-пи-ай]<ref>Часто неправильно или намеренно в качестве сленга произносят как [''апи́'']. Используются и укороченные варианты перевода — интерфейс приложения, программный интерфейс.</ref>) — набор готовых [[Класс (программирование)|классов]], [[Процедура (программирование)|процедур]], [[Функция (программирование)|функций]], [[Структура (программирование)|структур]] и [[Константа (программирование)|констант]], предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.
'''API''' ('''программный интерфейс приложения, интерфейс прикладного программирования''') ({{lang-en|'''a'''pplication '''p'''rogramming '''i'''nterface}}, {{lang-en2|API}} [эй-пи-ай]<ref>Часто неправильно или намеренно в качестве сленга произносят как [''апи́'']. Используются и укороченные варианты перевода — интерфейс приложения, программный интерфейс.</ref>) — набор готовых [[Класс (программирование)|классов]], [[Процедура (программирование)|процедур]], [[Функция (программирование)|функций]], [[Структура (программирование)|структур]] и [[Константа (программирование)|констант]], предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.



Версия от 10:47, 1 февраля 2018

Примечание: в переводе термина API на русский есть распространенная ошибка! В данной статье первый перевод (программный интерфейс приложения) - верен, а второй - нет. Программный Интерфейс Приложения или, немного коряво, но верно - Программный Интерфейс Программы.

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

Второй-же перевод (Интерфейс Создания Приложений) подразумевает Методы Создания Программ или по-другому можно еще сказать - Средства Программирования Программ, что-то, что Создаёт Программы... но в данном случае это неверно.

С помощью API мы (на самом деле) не создаем программу как таковую, мы просто используем некую прокладку (интерфейс) между вашей программой/приложением и другой программой, к которой Вы обращаетесь за данными (или посылаете ей данные, с которыми она уже сама что-то делает). Если как-то это описать в наглядном виде, то, например, если взять ситуацию, когда Вы кладете в почтовый ящик газету (в обычный почтовый ящик в подъезде дома!), а человек её потом оттуда забирает - вот это пример первого перевода термина: издательство использовало прокладку/интерфейс (ящик) для передачи сообщения (газеты), так как не может это сделать напрямую. Так и программы, не знаю "что внутри у другой программы, как та устроена", не может "напрямую" к ней обратиться, чтобы передать/получить данные. Поэтому API - это некая "дверь/окно и т.п.", которые позволяют им общаться, не вникая в то, как эти программы устроены.

API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.

API как средство интеграции приложений

API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

По такому принципу построены протоколы передачи данных по Интернет. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.

Важно заметить, что понятие протокола близко по смыслу к понятию API. И то, и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о взаимодействии приложений.

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Сигнатура функции

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

Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

В языке программирования Java сигнатуру метода составляет его имя и последовательность типов параметров; тип возвращаемого значения в сигнатуре не участвует.

Семантика функции

Семантика функции — это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит. Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того, результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к семантике функции. Полным описанием семантики функций является исполняемый код функции или математическое определение функции.

API операционных систем. Проблемы, связанные с многообразием API

Практически все операционные системы (UNIX, Windows, OS X и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.

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

С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов wxWidgets, GTK и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написание интерпретируемых языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java и т. д.).

Также необходимо отметить, что в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции.

Например: для того, чтобы увидеть в браузере строчку «Hello, world!», достаточно лишь создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку. Когда браузер откроет этот документ, программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать „Hello, world!“ выбранным шрифтом». Во время выполнения этих операций библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты.

При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML, а на LaTeX, для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть собрано с использованием различных библиотек примитивов и на различных операционных системах.

Основными сложностями существующих многоуровневых систем API, таким образом, являются:

  • Сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
  • Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.

Наиболее известные API

Операционных систем
Графических интерфейсов
Звуковых интерфейсов
Аутентификационных систем

Web API

Используется в веб-разработке, как правило, определённый набор HTTP-запросов, а также определение структуры HTTP-ответов, для выражения которых используют XML или JSON форматы.

Web API является практически синонимом для веб-службы, хотя в последнее время за счёт тенденции Web 2.0 осуществлён переход от SOAP к REST типу коммуникации. Веб-интерфейсы, обеспечивающие сочетание нескольких сервисов в новых приложениях, известны как гибридные.

Примеры: MediaWiki API

См. также

Примечания

  1. Часто неправильно или намеренно в качестве сленга произносят как [апи́]. Используются и укороченные варианты перевода — интерфейс приложения, программный интерфейс.
API
Логотип Викисклада Медиафайлы на Викискладе