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