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
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
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.