API nedir

API nedir

W API kısaltmaları, yazılımla ilgili makaleleri okuduğunuzda bunları bir defadan fazla görmüş olacaksınız.. Ancak herkes API'nin gerçekte ne olduğunu bilmiyor. Bu nedenle bu yazıda bunu açıklığa kavuşturuyoruz. İlk söylenecek şey, Uygulama Programlama Arayüzünün, yani İspanyolca'da Uygulama Programlama Arayüzünün kısaltmaları olduklarıdır. Ve çoğu zaman biraz programlamayı bilenler arasında bile kafa karışıklığı yaratır.

Örneğin, Arduino'nun kendi programlama API'si vardır ve projelerinizi oluşturmanıza izin vermek için mikrodenetleyiciyi programlamak için Arduino IDE'de veya diğer ortamlarda kullanabileceğiniz bir dizi işlev sunar. Ama ... bana söyleyebilir misin bir programlama kitaplığı ile bir API arasındaki fark? Bir çerçeve ile bir API arasında farklılıklar var mı? Bir API, bir ABI ile aynı mıdır? Belki kafa karışıklığı yaratmaya devam eden ve şimdi açıklığa kavuşturacağımız birçok şüphe var.

Bunu biliyor musun bilmiyorum düşük seviyeli dillermontajcı veya ASM gibi, doğrudan donanım mimarisine bağlıyken, yüksek seviyeli olanlar programcının görevini kolaylaştırmak için donanımdan soyutlanır, ancak işletim sistemine (sistem çağrıları) veya belirli API'lere vb. bağlıdır. Öyleyse tüm bunlar size Çince gibi gelmiyor, bakalım neyle ilgili ...

API nedir?

bir API, geliştiricilere sağlanan bir araçtır böylece mevcut kütüphaneler aracılığıyla kullanılabilen OOP için bir dizi işlev, alt yordam ve prosedür veya yönteme sahip olurlar. Bir API'nin sunduğu özellikler arasında basit uygulamalar oluşturma, AI ile ilgili işlevler, grafik oluşturma, donanım kaynaklarının yönetimi vb.

Örneğin, Linux tarafından glibc kitaplığı aracılığıyla sunulanlar gibi API'leri veya OpenGL ve Vulkan veya OpenCL gibi diğerleri heterojen bilgi işlem için, sanal ve artırılmış gerçeklik için OpenXR vb. Diğer işletim sistemleri ve yazılımlar da kendi API'lerini içerir, böylece diğer programcılar bu sistem için eklentiler, eklentiler veya modüller vb. Oluşturabilir.

Arduino ile Örnek

Rozetin varsa Arduino ve siz sık sık Arduino IDE kullanıyorsunuz veya Arduino için başka herhangi bir geliştirme ortamında, bir kod oluşturduğunuzda, mikrodenetleyicinizin bir dizi eylemi yapması için birden fazla seçeneği kullandığınızı bileceksiniz. Örneğin pinMode (), bir Arduino pinini yapılandırmak için tipik bir işlevdir, değil mi?

Ne zaman yazıyorsun pinMode (9, GİRİŞ)Örneğin, Arduino kartının 9 nolu pininin bir giriş olarak çalışması gerektiğini belirtiyorsunuz, yani mikrodenetleyicinin bilgiyi okumak ve bir eylem gerçekleştirmek için o pin üzerinden girmesini bekleyeceğini söylüyorsunuz. Ama bu emri nasıl anlayabildiğini hiç merak ettiniz mi?

Arduino'nun bir Bize sunulan geliştirme API'si. Bu blogdaki birçok örnekte gördüğümüz gibi, bu API'ye üçüncü taraf kitaplıkları eklenebilir. SparkFun'un belirli sensörler vb. İçin olduğu gibi. Tüm bunlarla birlikte, fonksiyonlar Arduino IDE'ye girilebilir ve kodu doğru şekilde çevirerek onu işleyebilmesi için mikrodenetleyicinin hafızasına yükleyecektir.

Bu API'ye sahip değilseniz, Arduino için bu programları bu kadar basit bir şekilde oluşturamazsınız, çünkü bunları ATMega328P mikrodenetleyici için montaj kodunda yapmaya çalışmalıyız, yani AVR mimarisi için ASM. Ve bu ISA tarafından sağlanan talimatları doğrudan kullanmanız gerekeceğinden, bu çok daha karmaşık olacaktır. Öyleyse, yalnızca bu ISA'nın repertuarını yeterince bilmekle kalmaz, aynı zamanda kayıt sayısı gibi diğer hususları da bilmeniz gerekir. Yani, üzerinde çalıştığınız donanım hakkında düşük düzeyde bilgiye sahip olmalısınız.

tarafından örnek, ASM kodu Bir döngüde LED'in yanıp sönmesi için oluşturmanız gereken şey şöyle olacaktır:

<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

Süre API sayesinde tesisler toplam, yüksek seviyede aşağıdaki eşdeğer kodu yazmak (çok daha kısa ve daha sezgisel):

<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 ile farklılıklar

API ve Linux ABI

ABI daha az bilinen bir terimdir, Uygulama İkili Arayüzü veya İngilizce Uygulama İkili Arayüzü. Bu durumda, bir programın modülleri arasında, genellikle içinde bulunduğunuz mimari için bir kütüphane veya bir makine dili işletim sistemi arasında bir arayüzdür: SPARC, AMD64, ARM, PPC, RISC-V, vb.

ABI sayesinde fonksiyonları çağırmanın yolu belirlenir, ikili biçim derlediğiniz makineyi veya sistem çağrılarını, istisnaların nasıl ele alındığını, verilerin nasıl iletildiğini vb. anlayabilen

Çerçeve ile Farklar

Un çerçeve veya çerçeve daha çok bir araç setidir belirli bir projenin geliştirilmesine yardımcı olmak için hizmetinizdedir. Ana çalışma genellikle bazı kodlama standartlarını belirler, yararlı bileşenler sağlar vb. Örneğin, JUnit, Java için bir çerçevedir veya PHP için Symfony / Cake, vb.

SDK ve NDK ile farklılıklar

SDK bir Yazılım Geliştirme Kitidiryani bir yazılım geliştirme kiti. Çerçeve veya API'nin ötesine geçer. Bir örnek, Android Studio veya iOS xCode vb. Olabilir. Örneğin, birincisi, Android API'nin kendisine ek olarak, programlama ve derleme, kitaplıklar, araçlar vb. İçin bir IDE veya entegre geliştirme ortamı da içerir.

Ayrıca, NDK (Yerel Geliştirme Kiti) bir tamamlayıcıdır. Örneğin, Android NDK, geliştiricilerin C / C ++ kodunu JNI (Java Native Interface) aracılığıyla uygulamalara tanıtarak yeniden kullanmalarına olanak tanır ...

Bir kitaplıkla farklılıklar

Glibc diyagramı Wikipedia

Son olarak, kütüphane, yeniden kullanılabilir kaynak kodlarının bir koleksiyonudur bu, programcılar için hayatı kolaylaştırır. Örneğin, stdio.h C kitaplığının içinde, ekrandaki metni yazdırmak için bir printf işlevi vardır. Bunun mümkün olması için, işletim sisteminin bu görevi yapmasını sağlayan bir kaynak koduna ihtiyaç vardır. Ancak bu çok sık kullanılan bir şey olduğu için, sadece o kütüphaneyi çağırarak tüm kodu sıfırdan yazmadan printf'den yararlanabilirsiniz. Diğer bir deyişle, prekast bloklar olarak görülebilirler.

Bir kitaplık ve bir API kolayca karıştırılabilir, aslında, Kitaplıklar bir API içinde sarılır. Misal glibc...

Umarım bundan sonra bir fikrin vardır API, ABI, çerçeve, SDK ve kitaplığın ne olduğu konusunda daha net ve bundan sonra aralarında ayrım yapabilmenin yanı sıra.


İlk yorumu siz

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.