Descomplicómetro: O que é uma API

Direct3D, OpenAL, Winsock. De certeza que já ouviu (ou leu) estes nomes destas API e também já usou programas que as utilizam.

Referimo-nos às API um dos recursos de programação mais usados em todo o mundo. Neste artigo explicamos o que é uma API e olhar para como e onde são usadas.

API?

API é uma sigla quew quer dizer Application Programming Interface, mas não serve apenas para criar aplicações. No universo da computação, uma interface é algo que funciona como uma ponte entre dois, ou mais, aspectos de um sistema.

Esta “ponte” pode ser na forma de hardware (por exemplo as ligações USB) ou de software, como no caso das API.

Na prática, esta interface permite que um elemento envie informação para outro. Por exemplo, no caso dos ratos, essa informação flui apenas para um dos lados, mas, na grande maioria dos casos, o fluxo de informação é bidireccional.

No caso de uma API, passa muito mais em segundo plano do que uma mera transferência de dados. Elas estipulam que pedidos de dados podem ser feitos, definem como é que esses pedidos podem ser feitos, definem a forma como os dados são pedidos e muito mais. Á primeira vista, tudo pode parecer algo restrito, mas as API facilitam muito o trabalho dos programadores.

Isto porque “escondem” a necessidade de um programador saber todos os pormenores acerca do funcionamento do computador e apenas lhe dá acesso às ferramentas de que precisa. Em resultado disto a quantidade de API disponíveis tem-se multiplicado quase exponencialmente. Existem API muito abrangentes e outras muito específicas.

As mais conhecidas

Se é jogador no PC, de certeza que conhece algumas das API usadas para criar gráficos tridimensionais, como OpenGL, Direct3D e a Vulkan. Estas API são o esqueleto do código usado na renderização dos gráficos e permitem a criação de imagens complexas com alguma facilidade.

As API gráficas definem as regras específicas acerca de como tudo deve ser formatado e estruturado e também oferece instruções simples para gerir algoritmos matemáticos mais ou menos complexos. Todas as API têm sido actualizadas significativamente ao longo dos anos e podem ser utilizadas para fazer mais do que imagens apelativas, graças aso shaders.

Outras plataformas de jogos, para além dos PC, também usam API (por exemplo a Microsoft usa uma versão alterada da Direct3D na Xbox e a Nintendo e a Sony usam API desenvolvidas inhouse na Switch e PlayStation, embora estas API sejam baseadas na OpenGL).

Se gosta de jogar no seu smartphone, eles também têm API, como por exemplo a Metal que é exclusiva dos dispositivos Apple.

No início da história das placas gráficas, nos anos 90 do século passado, alguns fabricantes tinham as suas próprias API. A 3dfx tinha a Glide e a S3 tinha a S3D. Isto era devido a outras API gráficas, como a OpenGL, na altura serem algo novas e por isso não tinham as funcionalidades e desempenho que os fabricantes procuravam.

Durante algum tempo a Glide foi a mais usada, porque era fácil de programar e fazia brilhar o hardware da 3dfx, como as saudosas Voodoo. As API Glide e S3D viveram durante pouco tempo, porque estavam intrinsecamente ligadas ao hardware para que foram feitas. Já a Direct3D, apesar de não ser Open Source e de estar limitada ao Windows, qualquer fabricante pode desenvolver drivers para os seus produtos que a suportem.

Apesar de tudo isto, hoje em dia ainda se usam bastantes API gráficas proprietárias. Um exemplo é a API CUDA da Nvidia que é exclusiva dos seus GPU, no entanto é destinada mais a tarefas de processamento mais geral em vez de gráficos 3D.

Em 2013, a AMD começou a trabalhar numa API de “baixo nível” em conjunto com os programadores da série de jogos Battlefield.

O termo “baixo nível” refere-se à funcionalidade de abstracção do hardware na API. Esta abstracção é composta por um conjunto de rotinas que escondem do programador os detalhes específicos da arquitectura base do chip, e que facilitam a escrita de um programa que funcione correctamente num grande número de plataformas. Quanto maior for oi trabalho que uma API tem de fazer neste campo, maior será a carga colocada em cima do CPU.

O objectivo da AMD com a Mantle era de ser menos dependente do processador que a Direct3D e a OpenGL, para além de ser mais programável. O desenvolvimento neste projecto foi suspenso em 2015 e abandonado permanentemente em 2019. A AMD ofereceu o trabalho que já tinha feito até à altura ao Khronos Group, a organização responsável pela API Vulkan.

Há mais nas API do que imagens bonitas

Os jogos são muito mais do que os gráficos, há que escrever software para o áudio, ligações de rede e para a gestão dos inputs dos utilizadores. A API Direct3D faz parte de um grande conjunto chamado DirectX, que contém API e bibliotecas de software que cobrem todos as tarefas relacionadas com jogos.

Por exemplo, a API DirectInput gere os comandos vindos de gamepads, joystick e volantes. Existem API equivalentes na OpenGL (como por exemplo a OpenAL que serve para gerir o áudio), apesar de algumas já estarem integradas no próprio sistema operativo.

API para outras aplicações

Existe um grande número de API que permitem aos programadores acederem e usarem todas as funcionalidades que estão presentes nos smartphones actuais. Por exemplo, qualquer smartphone tem um acelerómetro, um chip que detecta movimento em três dimensões.

Por isso, se uma app quiser que o utilizador saiba para que lado o telefone estiver a apontar, os programadores podem usar uma API para recolher essa informação a partir do hardware.

As apps que usam realidade aumentada são um bom exemplo de software que utiliza essas API. As apps que servem para identificar as constelações no céu nocturno usam quase todas as funcionalidades das API ligadas às câmaras, acelerómetros, GPS e do ecrã.

Se uma aplicação integrar com qualquer rede social, como o Twitter ou o Facebook, também existem API para o fazer.

Onde há computação, há API

Duas classes de API que são importantes e bastante específicas são a Remote e Web (a última faz parte da primeira). Estas API foram desenhadas para utilização em aplicações que estão a ser executadas num sistema, mas que necessitam de aceder e manipular informação noutro sistema. Por exemplo, o browser que está a usar é um exemplo de uma aplicação que usa estas duas API.

Algumas API nunca chegam a ser lançadas para o publico em geral (são API privadas) e apenas podem ser usadas pela organização que as criou nas suas próprias aplicações.

Outras API são semiprivadas e são conhecidas como Partner API, que são licenciadas para utilização por utilizadores aprovados. Isto permite ao dono da API controlar exactamente que dados são pedidos pela aplicação que usa a API. Um bom exemplo são as apps de ride share.

API nos sistemas operativos

A maioria das aplicações que são usadas em computadores são feitas com recurso a API públicas. Os programas para computadores Windows usam Windows API (também conhecida como WinAPI). O macOS, iOS, Linux e Android incluem um grande número de interfaces de programação.

Tal como acontece com o DirectX, estas são um conjunto de bibliotecas com rotinas que servem para programar de tudo, como o armazenamento de dados, serviços do sistema operativo, segurança, criação dos elementos gráficos da interface do sistema, ligações redes e gestão dos programas.

Aqui fica o essencial acerca da Application Programming Interfaces. Sem as API os jogos teriam de ser programados para cada tipo de placa gráfica e até para cada tipo de dispositivo de controlo, a estabilidade dos sistemas operativos era muito mais reduzida e os programadores teriam muito mais trabalho para criar as aplicações que usamos todos os dias.