Τι είναι το API

τι είναι ένα API

ο Ακρωνύμια API θα τα έχετε δει περισσότερες από μία φορές και δύο φορές όταν διαβάζετε άρθρα σχετικά με το λογισμικό. Αλλά δεν γνωρίζουν όλοι τι είναι πραγματικά ένα API. Γι 'αυτό το αποσαφηνίζουμε σε αυτό το άρθρο. Το πρώτο πράγμα που πρέπει να πούμε είναι ότι είναι το ακρωνύμιο της διεπαφής προγραμματισμού εφαρμογών, δηλαδή στα ισπανικά, της διεπαφής προγραμματισμού εφαρμογών. Και πολλές φορές δημιουργεί σύγχυση ακόμη και σε όσους γνωρίζουν κάποιο προγραμματισμό.

Για παράδειγμα, το Arduino έχει το δικό του API προγραμματισμού, προσφέροντας μια σειρά από λειτουργίες που μπορείτε να χρησιμοποιήσετε στο Arduino IDE ή σε άλλα περιβάλλοντα για να προγραμματίσετε τον μικροελεγκτή για να σας επιτρέψει να δημιουργήσετε τα έργα σας. Αλλά ... θα μπορούσατε να μου πείτε τη διαφορά μεταξύ βιβλιοθήκης προγραμματισμού και API; Υπάρχουν διαφορές μεταξύ ενός πλαισίου και ενός API; Είναι ένα API ίδιο με το ABI; Υπάρχουν πολλές αμφιβολίες που ίσως συνεχίσουν να δημιουργούν σύγχυση και ότι πρόκειται να διευκρινίσουμε τώρα.

Δεν ξέρω αν το ξέρεις αυτό γλώσσες χαμηλού επιπέδου, όπως το assembler ή το ASM, εξαρτώνται άμεσα από την αρχιτεκτονική του υλικού, ενώ οι υψηλού επιπέδου αφαιρούν από το υλικό για να διευκολύνουν την εργασία του προγραμματιστή, αλλά εξαρτώνται από το λειτουργικό σύστημα (syscalls) ή από συγκεκριμένα API κ.λπ. Για να μην ακούγονται όλα αυτά σαν κινεζικά, ας δούμε τι σημαίνει ...

Τι είναι το API;

ένα Το API είναι ένα εργαλείο με το οποίο παρέχονται προγραμματιστές ώστε να έχουν στη διάθεσή τους μια σειρά από λειτουργίες, υπορουτίνες και διαδικασίες ή μεθόδους για το OOP που μπορούν να χρησιμοποιηθούν μέσω των υφιστάμενων βιβλιοθηκών. Μεταξύ αυτών που προσφέρει ένα API είναι οι λειτουργίες για τη δημιουργία απλών εφαρμογών, λειτουργιών που σχετίζονται με το AI, με τη δημιουργία γραφικών, τη διαχείριση πόρων υλικού κ.λπ.

Για παράδειγμα, είμαι βέβαιος ότι είστε εξοικειωμένοι με API όπως αυτό που προσφέρει το Linux μέσω της βιβλιοθήκης glibc ή γραφικά όπως OpenGL και Vulkan, ή και άλλοι όπως το OpenCL για ετερογενή πληροφορική, OpenXR για εικονική και επαυξημένη πραγματικότητα κ.λπ. Άλλα λειτουργικά συστήματα και λογισμικό περιλαμβάνουν επίσης τα δικά τους API, έτσι ώστε άλλοι προγραμματιστές να μπορούν να δημιουργήσουν πρόσθετα, πρόσθετα ή λειτουργικές μονάδες για αυτό το σύστημα κ.λπ.

Παράδειγμα με τον Arduino

Εάν έχετε σήμα Το Arduino και χρησιμοποιείτε συχνά το Arduino IDE, ή οποιοδήποτε άλλο περιβάλλον ανάπτυξης για το Arduino, θα γνωρίζετε ότι όταν δημιουργείτε έναν κώδικα χρησιμοποιείτε πολλές επιλογές για να παραγγείλετε τον μικροελεγκτή σας να κάνει μια σειρά ενεργειών. Για παράδειγμα, το pinMode () είναι μια τυπική λειτουργία για τη διαμόρφωση ενός pin Arduino, σωστά;

Όταν γράφετε pinMode (9, ΕΙΣΟΔΟΣ)Για παράδειγμα, υποδεικνύετε ότι ο ακροδέκτης 9 της πλακέτας Arduino πρέπει να λειτουργεί ως είσοδος, δηλαδή ο μικροελεγκτής θα περιμένει τις πληροφορίες να εισέλθουν μέσω αυτού του πείρου για να τις διαβάσει και να εκτελέσει μια ενέργεια. Αλλά αναρωτηθήκατε ποτέ πώς μπορεί να καταλάβει αυτή την εντολή;

Λοιπόν, ο Arduino έχει API ανάπτυξης που διατίθεται σε εμάς. Βιβλιοθήκες τρίτων μπορούν να προστεθούν σε αυτό το API, όπως έχουμε δει σε πολλά παραδείγματα σε αυτό το ιστολόγιο. Όπως το SparkFun για ορισμένους αισθητήρες κ.λπ. Με όλα αυτά, οι λειτουργίες μπορούν να εισαχθούν στο Arduino IDE και θα μεταφράσει σωστά τον κώδικα για να τον φορτώσει στη μνήμη του μικροελεγκτή, ώστε να μπορεί να τον επεξεργαστεί.

Εάν δεν είχατε αυτό το API, δεν θα μπορούσατε να δημιουργήσετε αυτά τα προγράμματα για το Arduino με έναν τόσο απλό τρόπο, αφού πρέπει να προσπαθήσουμε να τα δημιουργήσουμε σε κώδικα συναρμολόγησης για τον μικροελεγκτή ATMega328P, δηλαδή σε ASM για αρχιτεκτονική AVR. Και αυτό θα ήταν πολύ πιο περίπλοκο, καθώς θα πρέπει να χρησιμοποιήσετε απευθείας τις οδηγίες που διατίθενται από αυτό το 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 είναι ένας λιγότερο γνωστός όρος, είναι ένας Εφαρμογή Binary Interface ή στα Αγγλικά Binary Application Interface. Σε αυτήν την περίπτωση, είναι μια διεπαφή μεταξύ των ενοτήτων ενός προγράμματος, γενικά μεταξύ μιας βιβλιοθήκης ή ενός λειτουργικού συστήματος γλώσσας μηχανής για την αρχιτεκτονική στην οποία βρίσκεστε: SPARC, AMD64, ARM, PPC, RISC-V κ.λπ.

Χάρη στο ABI, καθορίζεται ο τρόπος κλήσης των λειτουργιών, δυαδική μορφή το οποίο μπορεί να κατανοήσει το μηχάνημα για το οποίο συντάσσετε ή τις κλήσεις συστήματος, τον τρόπο χειρισμού των εξαιρέσεων, τον τρόπο διαβίβασης δεδομένων κ.λπ.

Διαφορές με ένα πλαίσιο

Un Το πλαίσιο ή το πλαίσιο είναι περισσότερο ένα σύνολο εργαλείων στη διάθεσή σας για να βοηθήσετε στην ανάπτυξη ενός συγκεκριμένου έργου. Η οικογενειακή εργασία συνήθως ορίζει κάποια πρότυπα κωδικοποίησης, παρέχει χρήσιμα στοιχεία κ.λπ. Για παράδειγμα, το JUnit είναι ένα πλαίσιο για Java ή Symfony / Cake για PHP κ.λπ.

Διαφορές με SDK και NDK

Το SDK είναι ένα κιτ ανάπτυξης λογισμικού, δηλαδή, ένα κιτ ανάπτυξης λογισμικού. Προχωρά πέρα ​​από το πλαίσιο ή το API. Ένα παράδειγμα θα μπορούσε να είναι το Android Studio ή το iOS xCode κ.λπ. Για παράδειγμα, το πρώτο, εκτός από το ίδιο το Android API, περιλαμβάνει επίσης ένα IDE ή ένα ολοκληρωμένο περιβάλλον ανάπτυξης για προγραμματισμό και μεταγλώττιση, βιβλιοθήκες, εργαλεία κ.λπ.

Επιπλέον, NDK (Κιτ εγγενούς ανάπτυξης) είναι ένα συμπλήρωμα. Για παράδειγμα, το Android NDK επιτρέπει στους προγραμματιστές να επαναχρησιμοποιήσουν τον κωδικό C / C ++ εισάγοντάς τον σε εφαρμογές μέσω JNI (Java Native Interface) ...

Διαφορές με βιβλιοθήκη

Glibc διάγραμμα Wikipedia

Τέλος, Η βιβλιοθήκη είναι μια συλλογή επαναχρησιμοποιήσιμου πηγαίου κώδικα που διευκολύνει τη ζωή των προγραμματιστών. Για παράδειγμα, μέσα στη βιβλιοθήκη C stdio.h υπάρχει μια λειτουργία printf για εκτύπωση κειμένου στην οθόνη. Για να είναι δυνατό αυτό, απαιτείται ένας πηγαίος κώδικας που κάνει το λειτουργικό σύστημα να κάνει αυτήν την εργασία. Αλλά επειδή είναι κάτι πολύ επαναλαμβανόμενο που χρησιμοποιείται συχνά, απλά κάνοντας χρήση αυτής της βιβλιοθήκης, μπορείτε να χρησιμοποιήσετε το printf χωρίς να γράψετε όλο τον κώδικα από το μηδέν. Με άλλα λόγια, με άλλα λόγια, μπορούν να θεωρηθούν ως προκατασκευασμένα μπλοκ.

Μια βιβλιοθήκη και ένα API μπορούν εύκολα να συγχέονται, στην πραγματικότητα, οι βιβλιοθήκες τυλίγονται μέσα σε ένα API. Παράδειγμα glibc...

Ελπίζω ότι μετά από αυτό θα έχετε μια ιδέα σαφέστερο για το τι είναι ένα API, ABI, ένα πλαίσιο, ένα SDK και μια βιβλιοθήκη, εκτός από το ότι μπορούν να κάνουν διάκριση μεταξύ τους από τώρα και στο εξής.


Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.