Was ist eine API?

Was ist eine API?

Die API-Akronyme haben Sie mehr als ein- und zweimal gesehen, wenn Sie Artikel über Software gelesen haben. Aber nicht jeder weiß, was eine API wirklich ist. Deshalb klären wir es in diesem Artikel. Das erste, was zu sagen ist, ist, dass sie das Akronym für Application Programming Interface sind, dh auf Spanisch Application Programming Interface. Und oft sorgt es selbst bei denen, die sich mit Programmierung auskennen, für Verwirrung.

Beispielsweise verfügt Arduino über eine eigene Programmier-API, die eine Reihe von Funktionen bietet, die Sie in der Arduino IDE oder anderen Umgebungen verwenden können, um den Mikrocontroller so zu programmieren, dass Sie Ihre Projekte erstellen können. Aber ... kannst du es mir sagen? der Unterschied zwischen einer Programmierbibliothek und einer API? Gibt es Unterschiede zwischen einem Framework und einer API? Ist eine API dieselbe wie eine ABI? Es gibt viele Zweifel, die vielleicht weiterhin Verwirrung stiften und die wir jetzt klären werden.

Ich weiß nicht, ob du das weißt einfache Sprachenwie der Assembler oder ASM hängen sie direkt von der Hardwarearchitektur ab, während die übergeordneten von der Hardware abstrahieren, um die Aufgabe des Programmierers zu erleichtern, aber vom Betriebssystem (Syscalls) oder von bestimmten APIs usw. abhängen. Damit das alles für Sie nicht wie Chinesisch klingt, lassen Sie uns sehen, worum es geht ...

Was ist eine API?

Eine API ist ein Tool, mit dem Entwickler bereitgestellt werden Damit stehen ihnen eine Reihe von Funktionen, Unterprogrammen und Prozeduren oder Methoden für OOP zur Verfügung, die über die vorhandenen Bibliotheken verwendet werden können. Eine API bietet unter anderem Funktionen zum Erstellen einfacher Apps, Funktionen im Zusammenhang mit KI, zum Generieren von Grafiken, zum Verwalten von Hardwareressourcen usw.

Ich bin mir zum Beispiel sicher, dass Sie mit APIs wie der von Linux über die glibc-Bibliothek angebotenen oder mit Grafiken wie z OpenGL und Vulkan oder auch andere wie OpenCL für heterogenes Computing, OpenXR für virtuelle und erweiterte Realität usw. Andere Betriebssysteme und Software enthalten auch eigene APIs, sodass andere Programmierer Addons, Plugins oder Module für dieses System usw. erstellen können.

Beispiel mit Arduino

Wenn Sie ein Abzeichen haben Arduino und Sie verwenden häufig Arduino IDE, In jeder anderen Entwicklungsumgebung für Arduino wissen Sie, dass Sie beim Erstellen eines Codes mehrere Optionen verwenden, um Ihrem Mikrocontroller eine Reihe von Aktionen zu erteilen. Zum Beispiel ist pinMode () eine typische Funktion zum Konfigurieren eines Arduino-Pins, oder?

Wenn du schreibst PinMode (9, INPUT)Sie geben beispielsweise an, dass Pin 9 der Arduino-Karte als Eingang fungieren soll, dh der Mikrocontroller wartet darauf, dass die Informationen über diesen Pin eingegeben werden, um sie zu lesen und eine Aktion auszuführen. Aber haben Sie sich jemals gefragt, wie er diesen Befehl verstehen kann?

Nun, Arduino hat eine Entwicklungs-API, die uns zur Verfügung gestellt wird. Bibliotheken von Drittanbietern können zu dieser API hinzugefügt werden, wie wir in vielen Beispielen in diesem Blog gesehen haben. Wie SparkFuns für bestimmte Sensoren usw. Mit all dem können die Funktionen in die Arduino IDE eingegeben werden und der Code wird ordnungsgemäß übersetzt, um ihn in den Speicher des Mikrocontrollers zu laden, damit er ihn verarbeiten kann.

Wenn Sie diese API nicht hätten, könnten Sie diese Programme nicht auf so einfache Weise für Arduino erstellen, da wir versuchen sollten, sie im Assembler-Code für den ATMega328P-Mikrocontroller zu erstellen, d. H. ASM für AVR-Architektur. Und das wäre viel komplizierter, da Sie die Anweisungen dieser ISA direkt verwenden müssten. In diesem Fall müssten Sie nicht nur das Repertoire dieser ISA angemessen kennen, sondern auch andere Aspekte wie die Anzahl der Registrierungen usw. Das heißt, Sie sollten über geringe Kenntnisse der Hardware verfügen, für die Sie arbeiten.

von Beispiel: ASM-Code Was Sie generieren sollten, damit eine LED in einer Schleife blinkt, ist:

<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

Während sich Dank der API sind die Einrichtungen insgesamt, Schreiben Sie auf hoher Ebene den folgenden äquivalenten Code (viel kürzer und intuitiver):

<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 

Unterschiede zu einem ABI

API gegen Linux ABI

ABI ist ein weniger bekannter Begriff, es ist ein Application Binary Interface oder auf Englisch Application Binary Interface. In diesem Fall handelt es sich um eine Schnittstelle zwischen Modulen eines Programms, im Allgemeinen zwischen einer Bibliothek oder einem Betriebssystem in Maschinensprache für die Architektur, in der Sie sich befinden: SPARC, AMD64, ARM, PPC, RISC-V usw.

Dank des ABI wird festgelegt, wie die Funktionen aufgerufen werden sollen. Binärformat Dies kann den Computer verstehen, für den Sie kompilieren, oder die Systemaufrufe, wie Ausnahmen behandelt werden, wie Daten übergeben werden usw.

Unterschiede zu einem Framework

Un Framework oder Framework ist eher eine Reihe von Werkzeugen zu Ihrer Verfügung, um die Entwicklung eines bestimmten Projekts zu unterstützen. Das Famework setzt normalerweise einige Codierungsstandards, bietet nützliche Komponenten usw. Zum Beispiel ist JUnit ein Framework für Java oder Symfony / Cake für PHP usw.

Unterschiede zu SDK und NDK

SDK ist ein Software Development KitDas heißt, ein Software Development Kit. Es geht über ein Framework oder eine API hinaus. Ein Beispiel könnte Android Studio oder iOS xCode usw. sein. Zum Beispiel enthält die erste neben der Android-API selbst auch eine IDE oder eine integrierte Entwicklungsumgebung zum Programmieren und Kompilieren, Bibliotheken, Tools usw.

Ferner NDK (Natives Entwicklungskit) es ist eine Ergänzung. Mit Android NDK können Entwickler beispielsweise C / C ++ - Code wiederverwenden, indem sie ihn über JNI (Java Native Interface) in Anwendungen einführen ...

Unterschiede zu einer Bibliothek

Glibc Diagramm Wikipedia

Schließlich Die Bibliothek ist eine Sammlung von wiederverwendbarem Quellcode das macht Programmierern das Leben leichter. In der C-Bibliothek stdio.h gibt es beispielsweise eine printf-Funktion zum Drucken von Text auf dem Bildschirm. Damit dies möglich ist, wird ein Quellcode benötigt, mit dem das Betriebssystem diese Aufgabe ausführen kann. Da es sich jedoch um etwas sehr wiederkehrendes handelt, das häufig verwendet wird, können Sie einfach durch Aufrufen dieser Bibliothek printf verwenden, ohne den gesamten Code von Grund auf neu zu schreiben. Mit anderen Worten, mit anderen Worten, sie können als vorgefertigte Blöcke angesehen werden.

Eine Bibliothek und eine API können in der Tat leicht verwechselt werden. Bibliotheken werden in eine API eingeschlossen. Beispiel glibc...

Ich hoffe, dass Sie danach eine Idee haben klarer darüber, was eine API, ein ABI, ein Framework, ein SDK und eine Bibliothek sind, und von nun an in der Lage zu sein, zwischen ihnen zu unterscheiden.


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.