Apa itu API

apa itu API

itu Akronim API Anda akan melihatnya lebih dari sekali dan dua kali ketika Anda membaca artikel tentang perangkat lunak. Tetapi tidak semua orang tahu apa sebenarnya API itu. Itulah mengapa kami memperjelasnya di artikel ini. Hal pertama yang harus dikatakan adalah bahwa mereka adalah singkatan dari Application Programming Interface, yaitu, dalam bahasa Spanyol, Application Programming Interface. Dan sering kali hal itu menimbulkan kebingungan bahkan di antara mereka yang mengetahui beberapa pemrograman.

Misalnya, Arduino memiliki API pemrogramannya sendiri, menawarkan sejumlah fungsi yang dapat Anda gunakan di Arduino IDE atau lingkungan lain untuk memprogram mikrokontroler untuk memungkinkan Anda membuat proyek. Tapi ... bisakah kamu memberitahuku perbedaan antara pustaka pemrograman dan API? Apakah ada perbedaan antara kerangka kerja dan API? Apakah API sama dengan ABI? Ada banyak keraguan yang mungkin terus menimbulkan kebingungan dan kami akan menjelaskannya sekarang.

Saya tidak tahu apakah Anda tahu itu bahasa tingkat rendah, seperti assembler atau ASM, bergantung langsung pada arsitektur perangkat keras, sedangkan yang tingkat tinggi abstrak dari perangkat keras untuk memfasilitasi tugas pemrogram, tetapi bergantung pada sistem operasi (syscall) atau pada API tertentu, dll. Agar semua ini tidak terdengar seperti bahasa Mandarin, mari kita lihat tentang apa ...

Apa itu API?

sebuah API adalah alat yang disediakan pengembang sehingga mereka memiliki serangkaian fungsi, subrutin dan prosedur atau metode untuk OOP yang dapat digunakan melalui perpustakaan yang ada. Di antara apa yang ditawarkan API adalah dari fungsi untuk membuat aplikasi sederhana, fungsi yang terkait dengan AI, dengan pembuatan grafik, pengelolaan sumber daya perangkat keras, dll.

Misalnya, saya yakin Anda sudah familiar dengan API seperti yang ditawarkan oleh Linux melalui pustaka glibc, atau grafik seperti OpenGL dan Vulkan, atau juga yang lain seperti OpenCL untuk komputasi heterogen, OpenXR untuk virtual dan augmented reality, dll. Sistem operasi dan perangkat lunak lain juga menyertakan API mereka sendiri sehingga pemrogram lain dapat membuat addon, plugin, atau modul untuk sistem itu, dll.

Contoh dengan Arduino

Jika Anda memiliki lencana Arduino dan Anda sering menggunakan Arduino IDE, atau lingkungan pengembangan lainnya untuk Arduino, Anda akan tahu bahwa ketika Anda membuat kode, Anda menggunakan beberapa opsi untuk memerintahkan mikrokontroler Anda melakukan serangkaian tindakan. Misalnya, pinMode () adalah fungsi khas untuk mengkonfigurasi pin Arduino, bukan?

Saat Anda menulis pinMode (9, INPUT)Misalnya, Anda menunjukkan bahwa pin 9 papan Arduino harus berfungsi sebagai input, yaitu mikrokontroler akan menunggu informasi masuk melalui pin itu untuk membacanya dan melakukan tindakan. Tetapi pernahkah Anda bertanya-tanya bagaimana dia bisa memahami perintah itu?

Nah, Arduino memiliki file API Pengembangan yang tersedia untuk kami. Perpustakaan pihak ketiga dapat ditambahkan ke API ini seperti yang telah kita lihat di banyak contoh di blog ini. Seperti SparkFun untuk sensor tertentu, dll. Dengan semua ini, fungsi-fungsi tersebut dapat dimasukkan ke dalam Arduino IDE dan akan menerjemahkan kode dengan baik untuk memuatnya ke dalam memori mikrokontroler sehingga dapat memprosesnya.

Jika Anda tidak memiliki API ini, Anda tidak akan dapat membuat program ini untuk Arduino dengan cara yang sederhana, karena kita harus mencoba membuatnya dalam kode assembly untuk mikrokontroler ATMega328P, yaitu, di ASM untuk arsitektur AVR. Dan itu akan jauh lebih rumit, karena Anda harus langsung menggunakan petunjuk yang tersedia oleh ISA ini. Jika demikian, Anda tidak hanya perlu mengetahui repertoar ISA tersebut secara memadai, tetapi juga aspek lain seperti jumlah registrasi, dll. Artinya, Anda harus memiliki pengetahuan tingkat rendah tentang perangkat keras tempat Anda bekerja.

Por Misalnya, kode ASM Apa yang harus Anda hasilkan agar LED berkedip dalam satu lingkaran adalah:

<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

sementara berkat API fasilitasnya total, menulis pada tingkat tinggi kode setara berikut (jauh lebih pendek dan lebih intuitif):

<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 

Beda dengan ABI

API vs Linux ABI

ABI adalah istilah yang kurang dikenal, ini adalah a Application Binary Interface, atau dalam Bahasa Inggris Application Binary Interface. Dalam hal ini, ini adalah antarmuka antar modul program, umumnya antara perpustakaan atau sistem operasi bahasa mesin untuk arsitektur di mana Anda berada: SPARC, AMD64, ARM, PPC, RISC-V, dll.

Berkat ABI, cara memanggil fungsi ditentukan, format biner yang dapat memahami mesin yang Anda kompilasi atau panggilan sistem, bagaimana pengecualian ditangani, bagaimana data dilewatkan, dll.

Beda dengan Kerangka

Un kerangka kerja atau kerangka kerja lebih merupakan seperangkat alat siap membantu Anda untuk membantu pengembangan proyek tertentu. Federasi biasanya menetapkan beberapa standar pengkodean, menyediakan komponen yang berguna, dll. Misalnya, JUnit adalah framework untuk Java, atau Symfony / Cake untuk PHP, dll.

Beda dengan SDK dan NDK

SDK adalah Kit Pengembangan Perangkat Lunak, yaitu kit pengembangan perangkat lunak. Ini melampaui apa itu kerangka kerja atau API. Contohnya bisa Android Studio atau iOS xCode, dll. Misalnya, yang pertama, selain Android API itu sendiri, juga menyertakan IDE atau lingkungan pengembangan terintegrasi untuk pemrograman dan kompilasi, pustaka, alat, dll.

Selain itu, NDK (Perangkat Pengembangan Asli) itu adalah pelengkap. Misalnya, Android NDK memungkinkan developer untuk menggunakan kembali kode C / C ++ dengan memperkenalkannya ke aplikasi melalui JNI (Java Native Interface) ...

Beda dengan perpustakaan

Diagram Glibc Wikipedia

Akhirnya, perpustakaan adalah kumpulan kode sumber yang dapat digunakan kembali yang membuat hidup lebih mudah bagi pemrogram. Misalnya di dalam library C stdio.h terdapat fungsi printf untuk mencetak teks di layar. Untuk mewujudkannya, diperlukan kode sumber yang membuat sistem operasi melakukan tugas ini. Tetapi karena ini adalah sesuatu yang sangat berulang yang sering digunakan, cukup dengan memanggil pustaka itu Anda dapat menggunakan printf tanpa menulis semua kode dari awal. Dengan kata lain, dengan kata lain, dapat dilihat sebagai blok pracetak.

Perpustakaan dan API dapat dengan mudah dibingungkan, pada kenyataannya, perpustakaan dibungkus di dalam API. Contoh glibc...

Saya harap setelah ini Anda punya ide lebih jelas tentang apa itu API, ABI, kerangka kerja, SDK, dan pustaka, selain dapat membedakannya mulai sekarang.


Jadilah yang pertama mengomentari

tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.