API 란?

API 란?

라스 API 약어는 소프트웨어에 대한 기사를 읽을 때 두 번 이상 보셨을 것입니다.. 그러나 모든 사람이 API가 실제로 무엇인지 아는 것은 아닙니다. 이것이 우리가이 기사에서 명확히하는 이유입니다. 가장 먼저 말할 것은 Application Programming Interface의 약자, 즉 스페인어로 된 Application Programming Interface라는 것입니다. 그리고 많은 경우 프로그래밍을 아는 사람들 사이에서도 혼란을 야기합니다.

예를 들어 Arduino에는 자체 프로그래밍 API가있어 Arduino IDE 또는 기타 환경에서 사용할 수있는 여러 기능을 제공하여 프로젝트를 생성 할 수 있도록 마이크로 컨트롤러를 프로그래밍 할 수 있습니다. 하지만 ... 말해 줄래 프로그래밍 라이브러리와 API의 차이점? 프레임 워크와 API간에 차이점이 있습니까? API는 ABI와 동일합니까? 아마도 계속해서 혼란을 야기하고 우리가 지금 당장 명확히 할 것이라는 많은 의구심이 있습니다.

당신이 그것을 알고 있는지 모르겠어요 저수준 언어는 어셈블러 또는 ASM과 같이 하드웨어 아키텍처에 직접 의존하는 반면, 상위 레벨은 프로그래머의 작업을 용이하게하기 위해 하드웨어에서 추상화하지만 운영 체제 (syscall) 또는 특정 API 등에 의존합니다. 이 모든 것이 중국어처럼 들리지 않도록 그것이 무엇인지 봅시다 ...

API 란 무엇입니까?

우나 API는 개발자에게 제공되는 도구입니다. 따라서 기존 라이브러리를 통해 사용할 수있는 OOP를위한 일련의 함수, 서브 루틴 및 프로 시저 또는 메소드를 자유롭게 사용할 수 있습니다. API가 제공하는 기능 중에는 간단한 앱을 만드는 기능, AI 관련 기능, 그래픽 생성, 하드웨어 리소스 관리 등이 있습니다.

예를 들어, glibc 라이브러리를 통해 Linux에서 제공하는 API 또는 다음과 같은 그래픽에 익숙 할 것입니다. OpenGL 및 Vulkan 또는 OpenCL과 같은 기타 이기종 컴퓨팅 용, 가상 및 증강 현실 용 OpenXR 등 다른 운영 체제 및 소프트웨어에는 자체 API도 포함되어 있으므로 다른 프로그래머가 해당 시스템에 대한 애드온, 플러그인 또는 모듈 등을 만들 수 있습니다.

Arduino를 사용한 예

배지가있는 경우 Arduino와 당신은 Arduino IDE를 자주 사용합니다. 또는 Arduino 용 다른 개발 환경에서는 코드를 만들 때 여러 옵션을 사용하여 일련의 작업을 수행하도록 마이크로 컨트롤러를 주문한다는 것을 알 수 있습니다. 예를 들어 pinMode ()는 Arduino 핀을 구성하는 일반적인 기능입니다.

당신이 쓸 때 pinMode (9, INPUT)예를 들어, Arduino 보드의 핀 9가 입력으로 작동해야 함을 나타냅니다. 그러나 그가 어떻게 그 명령을 이해할 수 있는지 궁금한 적이 있습니까?

음, Arduino에는 우리에게 제공되는 개발 API. 이 블로그의 많은 예제에서 본 것처럼이 API에 타사 라이브러리를 추가 할 수 있습니다. 특정 센서 등에 대한 SparkFun과 같습니다. 이 모든 기능을 아두 이노 IDE에 입력 할 수 있으며 코드를 올바르게 변환하여 마이크로 컨트롤러의 메모리에로드하여 처리 할 수 ​​있습니다.

이 API가 없다면 ATMega328P 마이크로 컨트롤러를위한 어셈블리 코드로 만들어야하기 때문에 Arduino 용 프로그램을 그렇게 간단한 방법으로 만들 수 없습니다. AVR 아키텍처 용 ASM. 이 ISA에서 제공하는 지침을 직접 사용해야하므로 훨씬 더 복잡합니다. 그렇다면 해당 ISA의 레퍼토리뿐만 아니라 등록 수 등과 같은 다른 측면도 적절하게 알아야합니다. 즉, 작업중인 하드웨어에 대한 낮은 수준의 지식이 있어야합니다.

예, ASM 코드 LED가 루프에서 깜박이도록 생성해야하는 것은 다음과 같습니다.

<br data-mce-bogus="1">

.ORG 0x0000
; the next instruction has to be written to
; address 0x0000
rjmp START
; the reset vector: jump to "main"
START:
ldi r16, low(RAMEND) ; set up the stack
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0xFF
; load register 16 with 0xFF (all bits 1)
out DDRB, r16
; write the value in r16 (0xFF) to Data
; Direction Register B
LOOP:
sbi PortB, 5
; switch off the LED
rcall delay_05
cbi PortB, 5
; wait for half a second
; switch it on
rcall delay_05 ; wait for half a secon
rjmp LOOP ; jump to loop
DELAY_05:
; the subroutine:
ldi r16, 31
; load r16 with 31
OUTER_LOOP:
; outer loop label
ldi r24, low(1021) ; load registers r24:r25 with 1021, our new
; init value
ldi r25, high(1021) ; the loop label
DELAY_LOOP:
; "add immediate to word": r24:r25 are
; incremented
adiw r24, 1
; if no overflow ("branch if not equal"), go
; back to "delay_loop"
brne DELAY_LOOP
dec r16
; decrement r16
brne OUTER_LOOP
ret
; and loop if outer loop not finished
; return from subroutine

동안 API 덕분에 시설 전체가 다음과 같은 동등한 코드를 높은 수준에서 작성합니다 (훨씬 짧고 직관적 임).

<br data-mce-bogus="1">

int ledPin = 13; 		// LED que se encuentra en el pin 13
   void setup(){ 
   pinMode(ledPin, OUTPUT);	// El p1n 13 será una salida digital 
} 
void loop(){ 
   digitalWrite(ledPin, HIGH);	// Enciende el LED
   delay(1000); 				// Pausa de 1 segundo 
   digitalWrite(ledPin, LOW); 	// Apaga el LED 
   delay(1000);				// Pausa de 1 segundo 

ABI와의 차이점

API 대 Linux ABI

ABI는 덜 알려진 용어입니다. 응용 프로그램 이진 인터페이스 또는 영어 응용 프로그램 이진 인터페이스. 이 경우 일반적으로 SPARC, AMD64, ARM, PPC, RISC-V 등의 아키텍처에 대한 라이브러리 또는 기계어 운영 체제 간의 프로그램 모듈 간 인터페이스입니다.

ABI 덕분에 함수 호출 방법이 결정되고 바이너리 형식 컴파일하는 머신이나 시스템 호출, 예외 처리 방법, 데이터 전달 방법 등을 이해할 수 있습니다.

프레임 워크와의 차이점

Un 프레임 워크 또는 프레임 워크는 도구 세트에 가깝습니다. 주어진 프로젝트를 개발하는 데 도움이됩니다. 명성은 일반적으로 일부 코딩 표준을 설정하고 유용한 구성 요소 등을 제공합니다. 예를 들어 JUnit은 Java 용 프레임 워크 또는 PHP 용 Symfony / Cake 등입니다.

SDK 및 NDK와의 차이점

SDK는 소프트웨어 개발 키트입니다., 즉 소프트웨어 개발 키트입니다. 그것은 프레임 워크 나 API를 뛰어 넘습니다. 예를 들어 Android Studio 또는 iOS xCode 등이 있습니다. 예를 들어, 첫 번째는 Android API 자체 외에도 프로그래밍 및 컴파일을위한 IDE 또는 통합 개발 환경, 라이브러리, 도구 등을 포함합니다.

또한, NDK (기본 개발 키트) 그것은 보완입니다. 예를 들어 Android NDK를 사용하면 개발자가 JNI (Java Native Interface)를 통해 애플리케이션에 도입하여 C / C ++ 코드를 재사용 할 수 있습니다.

도서관과의 차이점

Glibc 다이어그램 Wikipedia

마지막으로, 라이브러리는 재사용 가능한 소스 코드 모음입니다. 프로그래머의 삶을 더 쉽게 만듭니다. 예를 들어, C 라이브러리 stdio.h 안에는 화면에 텍스트를 인쇄하는 printf 함수가 있습니다. 이를 가능하게하려면 운영 체제가이 작업을 수행하도록하는 소스 코드가 필요합니다. 그러나 자주 사용되는 매우 반복적 인 것이므로 해당 라이브러리를 호출하여 처음부터 모든 코드를 작성하지 않고도 printf를 사용할 수 있습니다. 즉, 프리 캐스트 블록으로 볼 수 있습니다.

사실 라이브러리와 API는 쉽게 혼동 될 수 있습니다. 라이브러리는 API 내부에 래핑됩니다.. 예 glibc에...

이 후에 당신이 아이디어가 있기를 바랍니다. API, ABI, 프레임 워크, SDK 및 라이브러리가 무엇인지 더 명확하게 파악할 수있을뿐만 아니라 지금부터 구분할 수 있습니다.


코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.