Executando verificação de segurança...
3

Dúvida entre as Terminologias de Biblioteca e API.

Segundo os conceitos dos quais tomei conhecimento entre "Biblioteca" e "API", é a de que uma biblioteca é um conjunto de códigos pré prontos de funcionalidades que podem ser integrados na criação de um software por um desenvolvedor. Já a API é o nome dado a todas as regras e normas que que possibilitam a comunicação entre dois sistemas, como métodos HTTP, funções, classes e outros.
Estes foram os resultados que cheguei ao pesquisar sobre os significados dos termos.

Sabemos que existem API's tanto de forma "online" (REST) quanto API's "locais" (API's do sistema operacional, por exemplo), além de Bibliotecas internas e externas.

Mais uma vez, o significado dos termos foi algo que eu encontrei pesquisando nos mais diversos cantos da Internet, mas pode estarem errados, podem haver alguns detalhes dos quais estou deixando passar e que acabe solucionando todas as minhas dúvidas.

Dada as definições que dei, imagine que exista um serviço como o OpenWeather, por exemplo, que disponibiliza seus dados.
Sabemos que para acessá-los precisamos usar métodos HTTP e, esta forma, (de forma bem rude) seria a API.

Agora vem minha pergunta, o serviço do OpenWeather, o software que processa todos os dados antes de enviá-los para API, ele não seria considerado uma biblioteca? Ele bate com a definição de biblioteca que achei: "conjunto de códigos pré prontos de funcionalidades que podem ser integrados na criação de um software por um desenvolvedor".

E pergunto mais: Sistemas Operacionais possuem API's que possibilitam os usuários interagirem com o mesmo, mas o código que processa tudo antes de entregar ao usuário pela API, ele não seria uma biblioteca? Já que bate com o significado?

Sei que no final eles nunca serão chamados de bibliotecas, mas sim sempre de API's. Minha dúvida é sobre tais softwares, se no fim das contas eles também se encaixam nas definições e pobem considerados bibliotecas, mesmo que no mundo real a terminologia API se destaque.

Carregando publicação patrocinada...
2

Eu já disse algo sobre isso aqui. E se fosse resumir o ponto mais importante que tem lá, seria:

API não é só WEB. Sei que hoje em dia "API" acabou virando quase que um sinônimo de "URL que retorna um JSON", mas o termo é bem mais amplo que isso (e a ideia geral, inclusive, antecede a web).

API é a sigla para "Application Programming Interface" (algo como "Interface de Programação de Aplicações"), que é basicamente "algo" que permite que dois programas/softwares/sistemas/aplicativos "conversem" entre si (a grosso modo, eles trocam informações de forma programática). O detalhe é que esses programas não precisam estar na web.

Enfim, sugiro que leia tudo lá para saber mais sobre o termo, e também para entender porque hoje em dia ficou tão difícil encontrar a definição correta (basicamente, porque "todo mundo" acha que é só Web, e 99% do material acaba focando só nisso).

Quanto à diferença entre API e lib/biblioteca, este link pode ajudar.

1

Obrigado pelos tópicos kht, li os dois.

Só para concluir, eu gostaria de saber sua opinião.
No seu tópico aqui no Tabnews você diz que "Uma lib/biblioteca/pacote/módulo/crate/etc nada mais é que uma API que permite que seu programa tenha acesso à funções prontas que fazem algo que vc precisa"

Na pergunta do stackoverflow diz mais ou menos a mesma coisa.

Então, na sua opinião, os exemplos que dei acima seriam considerados bibliotecas? Mesmo que ninguém vá as chamar assim.

2

Bom, existe muita intersecção entre os termos, mas no primeiro link que coloquei tem o seguinte: "API não é o serviço fornecido, é o método de acesso".

Esses serviços online que vc faz uma chamada HTTP pra pegar os dados, eu entendo que são API's cuja forma de acesso é a web.

Uma biblioteca é mais o conjunto de funções que vc pode usar para compor algum programa mais complexo. Claro que ela também disponibiliza uma API para que vc possa usá-la, por isso que uma forma de definir é considerar que a lib é a implementação das regras da API. Mas a lib pode ter partes internas que não são expostas publicamente (são detalhes de implementação que quem a usa não precisa saber), ou seja, essas partes não fazem parte da API que ela expõe a quem for chamá-la.

É o caso do sistema operacional, que tem a API (a interface que os programas usam para interagir com ele), e internamente tem uma ou mais bibliotecas que fazem o "serviço sujo".

Enfim, no final do link do Stack Overflow também tem a conclusão:

Na maior parte dos tempo os termos podem ser intercambiáveis sem causar grande problema. Todo mundo entende essas três coisas como um conjunto de códigos prontos para alcançar algum objetivo.

1

Sim, os seus três primeiros parágrafos foi o que entendi e tinha descrito em minha pergunta.
Minha dúvida é justamente sobre o código atrás da API "que faz o trabalho sujo", antes de entregar ao usuário por meio da mesma, como por exemplo, a API do Sistema Operacional. Seu código por trás da interface então poderia ser considerado uma biblioteca, que é acessada através de uma API (e que, na verdade, todas são), logo, o exemplo do OpenWeather também.

Agradeço por me responder kht.