Apa itu API

apa itu API

yang Akronim API anda akan melihatnya lebih dari sekali dan dua kali semasa anda membaca artikel mengenai perisian. Tetapi tidak semua orang tahu apa sebenarnya API. Itulah sebabnya kami menjelaskannya dalam artikel ini. Perkara pertama yang dinyatakan adalah bahawa mereka adalah singkatan dari Antaramuka Pengaturcaraan Aplikasi, iaitu, dalam Bahasa Sepanyol, Antaramuka Pengaturcaraan Aplikasi. Dan berkali-kali menimbulkan kekeliruan bahkan di kalangan mereka yang mengetahui beberapa pengaturcaraan.

Sebagai contoh, Arduino mempunyai API pengaturcaraannya sendiri, menawarkan sejumlah fungsi yang dapat anda gunakan di Arduino IDE atau persekitaran lain untuk memprogram mikrokontroler untuk memungkinkan anda membuat projek anda. Tetapi ... bolehkah anda memberitahu saya perbezaan antara perpustakaan pengaturcaraan dan API? Adakah terdapat perbezaan antara framework dan API? Adakah API sama dengan ABI? Terdapat banyak keraguan yang mungkin terus menimbulkan kekeliruan dan yang akan kita jelaskan sekarang.

Saya tidak tahu jika anda tahu itu bahasa tahap rendah, seperti assembler atau ASM, mereka bergantung secara langsung pada seni bina perkakasan, sementara yang tingkat tinggi abstrak dari perkakasan untuk memudahkan tugas pengaturcara, tetapi mereka bergantung pada sistem operasi (syscalls) atau pada API tertentu, dll. Agar semua ini tidak terdengar seperti bahasa Cina, mari kita lihat apa maksudnya ...

Apa itu API?

yang API adalah alat yang disediakan oleh pembangun sehingga mereka memiliki serangkaian fungsi, subrutin dan prosedur atau kaedah untuk OOP yang dapat digunakan melalui perpustakaan yang ada. Antara yang ditawarkan oleh API adalah fungsi untuk membuat aplikasi mudah, fungsi yang berkaitan dengan AI, dengan pembuatan grafik, pengurusan sumber perkakasan, dll

Sebagai contoh, saya pasti anda biasa dengan API seperti yang ditawarkan oleh Linux melalui perpustakaan glibc, atau grafik seperti OpenGL dan Vulkan, atau juga yang lain seperti OpenCL untuk pengkomputeran heterogen, OpenXR untuk realiti maya dan tambahan, dll. Sistem dan perisian operasi lain juga merangkumi API mereka sendiri sehingga pengaturcara lain dapat membuat tambahan, plugin atau modul untuk sistem itu, dll.

Contoh dengan Arduino

Sekiranya anda mempunyai lencana Arduino dan anda sering menggunakan Arduino IDE, atau persekitaran pembangunan lain untuk Arduino, anda akan mengetahui bahawa apabila anda membuat kod, anda menggunakan banyak pilihan untuk memerintahkan mikrokontroler anda melakukan serangkaian tindakan. Sebagai contoh, pinMode () adalah fungsi khas untuk mengkonfigurasi pin Arduino, bukan?

Semasa anda menulis pinMode (9, INPUT)Sebagai contoh, anda menunjukkan bahawa pin 9 dari papan Arduino harus berfungsi sebagai input, iaitu mikrokontroler akan menunggu maklumat masuk melalui pin itu untuk membacanya dan melakukan tindakan. Tetapi pernahkah anda terfikir bagaimana dia dapat memahami perintah itu?

Nah, Arduino mempunyai API Pembangunan yang disediakan untuk kami. Perpustakaan pihak ketiga dapat ditambahkan ke API ini seperti yang telah kita lihat dalam banyak contoh di blog ini. Seperti SparkFun untuk sensor tertentu, dll. Dengan semua ini, fungsi dapat dimasukkan ke dalam Arduino IDE dan ia akan menerjemahkan kod dengan betul untuk memasukkannya ke dalam memori mikrokontroler sehingga dapat memprosesnya.

Sekiranya anda tidak memiliki API ini, anda tidak dapat membuat program ini untuk Arduino dengan cara yang mudah, kerana kami harus mencuba membuatnya dalam kod pemasangan untuk mikrokontroler ATMega328P, iaitu, di ASM untuk seni bina AVR. Dan itu akan menjadi lebih rumit, kerana anda harus menggunakan arahan yang disediakan oleh ISA ini secara langsung. Sekiranya demikian, anda bukan sahaja harus mengetahui cukup banyak kumpulan ISA itu, tetapi juga aspek-aspek lain seperti jumlah pendaftaran, dll. Maksudnya, anda harus mempunyai pengetahuan tahap rendah mengenai perkakasan yang anda kerjakan.

Oleh contohnya, kod ASM Apa yang harus anda hasilkan agar LED berkelip dalam satu gelung ialah:

<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

manakala terima kasih kepada API, kemudahannya sangat banyak, menulis pada tahap tinggi kod setaraf 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 

Perbezaan dengan ABI

API vs Linux ABI

ABI adalah istilah yang kurang dikenali, ia adalah Antaramuka Binari Aplikasi, atau dalam Bahasa Inggeris Aplikasi Binary Interface. Dalam kes ini, ia adalah antara muka antara modul program, umumnya antara perpustakaan atau sistem operasi bahasa mesin untuk seni bina di mana anda berada: SPARC, AMD64, ARM, PPC, RISC-V, dll.

Terima kasih kepada ABI, cara untuk memanggil fungsi ditentukan, format binari yang dapat memahami mesin yang anda kumpulkan atau panggilan sistem, bagaimana pengecualian dikendalikan, bagaimana data dihantar, dll.

Perbezaan dengan Kerangka

Un kerangka atau kerangka lebih merupakan satu set alat sedia membantu anda untuk membangunkan projek tertentu. Kerja keluarga biasanya menetapkan beberapa piawaian pengekodan, menyediakan komponen berguna, dll. Sebagai contoh, JUnit adalah kerangka kerja untuk Java, atau Symfony / Cake untuk PHP, dll.

Perbezaan dengan SDK dan NDK

SDK adalah Kit Pembangunan Perisian, iaitu kit pengembangan perisian. Ini melampaui apa itu kerangka kerja atau API. Contohnya ialah Android Studio atau iOS xCode, dll. Sebagai contoh, yang pertama, selain Android API itu sendiri, juga merangkumi IDE atau persekitaran pembangunan bersepadu untuk pengaturcaraan dan penyusunan, perpustakaan, alat, dll.

Tambahan pula, NDK (Kit Pembangunan Asli) ia adalah pelengkap. Sebagai contoh, Android NDK membolehkan pemaju menggunakan semula kod C / C ++ dengan memperkenalkannya ke aplikasi melalui JNI (Java Native Interface) ...

Perbezaan dengan perpustakaan

Gambarajah glibc Wikipedia

Akhirnya, perpustakaan adalah kumpulan kod sumber yang boleh digunakan semula yang menjadikan hidup lebih mudah bagi pengaturcara. Sebagai contoh, di dalam perpustakaan C stdio.h terdapat fungsi printf untuk mencetak teks di skrin. Agar ini dapat dilakukan, kod sumber diperlukan yang menjadikan sistem operasi melakukan tugas ini. Tetapi kerana ia adalah sesuatu yang sangat berulang yang sering digunakan, hanya dengan menggunakan perpustakaan itu, anda boleh menggunakan printf tanpa menulis semua kod dari awal. Dengan kata lain, dengan kata lain, mereka dapat dilihat sebagai blok pracetak.

Perpustakaan dan API mudah dikelirukan, sebenarnya, perpustakaan dibungkus dalam API. Contohnya glibc...

Saya harap selepas ini anda mempunyai idea lebih jelas mengenai apa itu API, ABI, framework, SDK dan perpustakaan, selain dapat membezakan antara mereka mulai sekarang.


Menjadi yang pertama untuk komen

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.