एपीआई क्या है

एपीआई क्या है

लास जब आप सॉफ़्टवेयर के बारे में लेख पढ़ते हैं, तो एपीआई सिंक आपको एक से अधिक बार देखा होगा। लेकिन हर कोई नहीं जानता कि एपीआई वास्तव में क्या है। इसलिए हम इस लेख में इसे स्पष्ट करते हैं। पहली बात यह है कि वे एप्लीकेशन प्रोग्रामिंग इंटरफेस के लिए परिचित हैं, अर्थात् स्पेनिश में, एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस। और कई बार यह उन लोगों के बीच भी भ्रम पैदा करता है जो प्रोग्रामिंग के बारे में कुछ जानते हैं।

उदाहरण के लिए, Arduino की अपनी प्रोग्रामिंग API है, जो कई ऐसे कार्यों की पेशकश करती है, जिनका उपयोग आप अपनी परियोजनाओं को बनाने की अनुमति देने के लिए माइक्रोकंट्रोलर को प्रोग्राम करने के लिए Arduino IDE या अन्य वातावरण में कर सकते हैं। लेकिन ... क्या आप मुझे बता सकते हैं एक प्रोग्रामिंग लाइब्रेरी और एक एपीआई के बीच अंतर? क्या एक रूपरेखा और एक एपीआई के बीच अंतर हैं? क्या एक एपीआई एक एबीआई के समान है? कई संदेह हैं जो शायद भ्रम पैदा करते हैं और हम अभी स्पष्ट करने जा रहे हैं।

अगर आप जानते हैं कि मैं नहीं जानता निम्न-स्तरीय भाषाएँ, कोडांतरक या एएसएम की तरह, हार्डवेयर आर्किटेक्चर पर सीधे निर्भर करते हैं, जबकि उच्च-स्तरीय वाले प्रोग्रामर के कार्य को सुविधाजनक बनाने के लिए हार्डवेयर से अमूर्त होते हैं, लेकिन ऑपरेटिंग सिस्टम (syscalls) या कुछ एपीआई, आदि पर निर्भर करते हैं। ताकि यह सब आपको चीनी की तरह न लगे, आइए देखें कि यह क्या है ...

एपीआई क्या है?

एक एपीआई एक उपकरण है जिसके साथ डेवलपर्स प्रदान किए जाते हैं ताकि उनके निपटान में मौजूदा पुस्तकालयों के माध्यम से उपयोग किए जाने वाले ओओपी के लिए कार्यों, उप-वृत्तों और प्रक्रियाओं या विधियों की एक श्रृंखला हो। साधारण ऐप बनाने के लिए फंक्शंस में से एक एपीआई क्या है, एआई से संबंधित फंक्शन, ग्राफिक्स की पीढ़ी, हार्डवेयर संसाधनों का प्रबंधन आदि।

उदाहरण के लिए, आप निश्चित रूप से जाने-माने APIs हैं जैसे कि glibc लाइब्रेरी के माध्यम से Linux द्वारा प्रस्तुत किया गया, या ग्राफिक्स जैसे OpenGL और Vulkan, या OpenCL जैसे अन्य भी विषम कंप्यूटिंग के लिए, आभासी और संवर्धित वास्तविकता के लिए OpenXR, आदि। अन्य ऑपरेटिंग सिस्टम और सॉफ़्टवेयर में अपने स्वयं के एपीआई भी शामिल होते हैं ताकि अन्य प्रोग्रामर उस सिस्टम के लिए ऐडऑन, प्लगइन्स या मॉड्यूल बना सकें।

Arduino के साथ उदाहरण

यदि आपके पास एक बैज है Arduino और आप अक्सर Arduino IDE का उपयोग करते हैं, या Arduino के लिए किसी भी अन्य विकास के माहौल में, आपको पता चलेगा कि जब आप एक कोड बनाते हैं तो आप अपने माइक्रोकंट्रोलर को क्रियाओं की एक श्रृंखला करने के लिए कई विकल्पों का उपयोग करते हैं। उदाहरण के लिए, PinMode () एक Arduino पिन को कॉन्फ़िगर करने के लिए एक विशिष्ट कार्य है, है ना?

जब आप लिखते हैं पिनमोड (9, INPUT)उदाहरण के लिए, आप संकेत कर रहे हैं कि Arduino बोर्ड के पिन 9 को एक इनपुट के रूप में काम करना चाहिए, अर्थात्, माइक्रोकंट्रोलर को उस पिन के माध्यम से जानकारी के लिए इंतजार करना होगा ताकि वह इसे पढ़ सके और एक क्रिया कर सके। लेकिन क्या आपने कभी सोचा है कि वह उस आज्ञा को कैसे समझ पाता है?

खैर, Arduino एक है विकास एपीआई जो हमें उपलब्ध कराया जाता है। तृतीय-पक्ष लाइब्रेरी को इस API में जोड़ा जा सकता है जैसा कि हमने इस ब्लॉग पर कई उदाहरणों में देखा है। जैसे स्पार्कफुन कुछ सेंसर आदि के लिए। इन सभी के साथ, फ़ंक्शन को Arduino IDE में दर्ज किया जा सकता है और इसे माइक्रोकंट्रोलर की मेमोरी में लोड करने के लिए कोड को ठीक से अनुवाद करेगा ताकि वह इसे संसाधित कर सके।

यदि आपके पास यह API नहीं है, तो आप Arduino के लिए इन कार्यक्रमों को इतने सरल तरीके से नहीं बना सकते हैं, क्योंकि हमें ATMega328P माइक्रोकंट्रोलर के लिए विधानसभा कोड में उन्हें बनाने की कोशिश करनी चाहिए, अर्थात एवीआर वास्तुकला के लिए एएसएम। और यह बहुत अधिक जटिल होगा, क्योंकि आपको इस आईएसए द्वारा उपलब्ध निर्देशों का सीधे उपयोग करना होगा। यदि हां, तो आपको न केवल उस आईएसए के प्रदर्शनों की सूची को पर्याप्त रूप से जानना होगा, बल्कि अन्य पहलुओं जैसे पंजीकरण की संख्या, आदि। यही है, आपके पास उस हार्डवेयर का निम्न-स्तरीय ज्ञान होना चाहिए जिसके लिए आप काम कर रहे हैं।

पोर उदाहरण, ASM कोड एक लूप में पलक झपकने के लिए आपको क्या उत्पन्न करना चाहिए:

<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

जब एपीआई की बदौलत सुविधाएं कुल हैं, उच्च स्तर पर निम्न समकक्ष कोड (बहुत कम और अधिक सहज) लिखना:

<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 के साथ मतभेद

एपीआई बनाम लिनक्स एबीआई

ABI एक कम ज्ञात शब्द है, यह एक है आवेदन बाइनरी इंटरफ़ेस, या अंग्रेजी में आवेदन बाइनरी इंटरफ़ेस। इस मामले में, यह एक प्रोग्राम के मॉड्यूल के बीच एक इंटरफ़ेस है, जो आमतौर पर एक लाइब्रेरी या आर्किटेक्चर के लिए मशीन भाषा ऑपरेटिंग सिस्टम के बीच होता है जिसमें आप हैं: SPARC, AMD64, ARM, PPC, RISC-V, आदि।

एबीआई के लिए धन्यवाद, फ़ंक्शन को कॉल करने का तरीका निर्धारित किया जाता है, द्विआधारी प्रारूप जो आपके लिए संकलित मशीन या सिस्टम कॉल को समझ सकता है, कैसे अपवादों को नियंत्रित किया जाता है, डेटा कैसे पारित किया जाता है, आदि।

एक फ्रेमवर्क के साथ अंतर

Un ढांचा या रूपरेखा उपकरण के एक सेट से अधिक है किसी परियोजना के विकास में मदद करने के लिए अपने निपटान में। अकाल आमतौर पर कुछ कोडिंग मानकों को निर्धारित करता है, उपयोगी घटक प्रदान करता है, आदि। उदाहरण के लिए, JUnit जावा, या PHP के लिए सिम्फनी / केक, आदि के लिए एक रूपरेखा है।

एक एसडीके और एनडीके के साथ अंतर

एसडीके एक सॉफ्टवेयर डेवलपमेंट किट है, वह है, एक सॉफ्टवेयर डेवलपमेंट किट। यह एक रूपरेखा या एक एपीआई से परे है। एक उदाहरण एंड्रॉइड स्टूडियो या आईओएस xCode आदि हो सकता है। उदाहरण के लिए, पहले एक, एंड्रॉइड एपीआई के अलावा, प्रोग्रामिंग और संकलन, लाइब्रेरी, टूल आदि के लिए एक आईडीई या एकीकृत विकास वातावरण भी शामिल है।

इसके अलावा, NDK (मूल विकास किट) यह एक पूरक है। उदाहरण के लिए, एंड्रॉइड एनडीके डेवलपर्स को जेएनआई (जावा एनएफआई इंटरफ़ेस) के माध्यम से एप्लिकेशन के लिए इसे शुरू करके सी / सी ++ कोड का पुन: उपयोग करने की अनुमति देता है ...

एक पुस्तकालय के साथ अंतर

ग्लिबैक आरेख विकिपीडिया

अन्त में, पुस्तकालय पुन: प्रयोज्य स्रोत कोड का एक संग्रह है जो प्रोग्रामर के लिए जीवन को आसान बनाता है। उदाहरण के लिए, सी लाइब्रेरी stdio.h के अंदर स्क्रीन पर एक टेक्स्ट प्रिंट करने के लिए एक फ़ंक्शन प्रिंटफ़ है। यह संभव होने के लिए, एक स्रोत कोड की आवश्यकता होती है जो ऑपरेटिंग सिस्टम को यह कार्य करता है। लेकिन चूँकि यह बहुत बार-बार उपयोग किया जाने वाला कुछ है, बस उस पुस्तकालय का उपयोग करके आप स्क्रैच के सभी कोड लिखे बिना प्रिंटफ का उपयोग कर सकते हैं। दूसरे शब्दों में, दूसरे शब्दों में, उन्हें प्रीकास्ट ब्लॉक के रूप में देखा जा सकता है।

एक पुस्तकालय और एक एपीआई आसानी से भ्रमित हो सकते हैं, वास्तव में, पुस्तकालयों को एक एपीआई के अंदर लपेटा जाता है। उदाहरण glibc...

मुझे उम्मीद है कि इसके बाद आपके पास एक विचार है अब से उनके बीच अंतर करने में सक्षम होने के अलावा एक एपीआई, एबीआई, एक रूपरेखा, एक एसडीके और एक पुस्तकालय के बारे में स्पष्ट है।


पहली टिप्पणी करने के लिए

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।