தி ஏபிஐ சுருக்கெழுத்துக்கள் மென்பொருளைப் பற்றிய கட்டுரைகளைப் படிக்கும்போது அவற்றை ஒன்றுக்கு மேற்பட்ட முறை மற்றும் இரண்டு முறை பார்த்திருப்பீர்கள். ஆனால் ஏபிஐ உண்மையில் என்ன என்பது அனைவருக்கும் தெரியாது. அதனால்தான் அதை இந்த கட்டுரையில் தெளிவுபடுத்துகிறோம். முதலில் சொல்ல வேண்டியது என்னவென்றால், அவை பயன்பாட்டு நிரலாக்க இடைமுகத்தின் சுருக்கமாகும், அதாவது ஸ்பானிஷ் மொழியில், பயன்பாட்டு நிரலாக்க இடைமுகம். பல முறை இது நிரலாக்கத்தைப் பற்றி ஏதாவது அறிந்தவர்களிடையே கூட குழப்பத்தை உருவாக்குகிறது.
எடுத்துக்காட்டாக, Arduino க்கு அதன் சொந்த நிரலாக்க API உள்ளது, இது உங்கள் திட்டங்களை உருவாக்க உங்களை அனுமதிக்க மைக்ரோகண்ட்ரோலரை நிரல் செய்ய Arduino IDE அல்லது பிற சூழல்களில் நீங்கள் பயன்படுத்தக்கூடிய பல செயல்பாடுகளை வழங்குகிறது. ஆனால் ... நீங்கள் சொல்ல முடியுமா? நிரலாக்க நூலகத்திற்கும் API க்கும் இடையிலான வேறுபாடு? ஒரு கட்டமைப்பிற்கும் ஏபிஐக்கும் இடையில் வேறுபாடுகள் உள்ளதா? ஏபிஐ ஏபிஐக்கு சமமானதா? குழப்பத்தைத் தொடர்ந்து உருவாக்கும் பல சந்தேகங்கள் உள்ளன, இப்போது நாம் தெளிவுபடுத்தப் போகிறோம்.
அது உங்களுக்குத் தெரியுமா என்று எனக்குத் தெரியவில்லை குறைந்த அளவிலான மொழிகள், அசெம்பிளர் அல்லது ஏஎஸ்எம் போன்றவை நேரடியாக வன்பொருள் கட்டமைப்பை சார்ந்துள்ளது, அதே நேரத்தில் புரோகிராமரின் பணியை எளிதாக்குவதற்காக வன்பொருளிலிருந்து உயர் மட்டத்தினர் சுருக்கிக் கொள்கிறார்கள், ஆனால் இயக்க முறைமை (சிஸ்கால்ஸ்) அல்லது சில ஏபிஐக்கள் போன்றவற்றைப் பொறுத்தது. எனவே இவை அனைத்தும் சீன மொழியாகத் தெரியவில்லை, அது என்னவென்று பார்ப்போம் ...
ஏபிஐ என்றால் என்ன?
ஒரு API என்பது டெவலப்பர்கள் வழங்கும் ஒரு கருவியாகும் ஆகவே, அவற்றின் வசம் தொடர்ச்சியான செயல்பாடுகள், சப்ரூட்டின்கள் மற்றும் நடைமுறைகள் அல்லது OOP க்கான முறைகள் உள்ளன, அவை ஏற்கனவே இருக்கும் நூலகங்கள் மூலம் பயன்படுத்தப்படலாம். எளிய பயன்பாடுகளை உருவாக்குவதற்கான செயல்பாடுகள், AI தொடர்பான செயல்பாடுகள், கிராபிக்ஸ் தலைமுறை, வன்பொருள் வளங்களை நிர்வகித்தல் போன்றவற்றிலிருந்து ஒரு API சலுகைகள் உள்ளன.
எடுத்துக்காட்டாக, கிளிபிக் நூலகத்தின் மூலம் லினக்ஸ் வழங்கியதைப் போன்ற நன்கு அறியப்பட்ட ஏபிஐக்கள் அல்லது கிராபிக்ஸ் போன்றவற்றை நீங்கள் உறுதியாக நம்புகிறீர்கள் ஓபன்ஜிஎல் மற்றும் வல்கன் அல்லது ஓபன்சிஎல் போன்றவை பன்முக கம்ப்யூட்டிங், மெய்நிகர் மற்றும் பெரிதாக்கப்பட்ட உண்மைக்கான ஓபன்எக்ஸ்ஆர் போன்றவை. பிற இயக்க முறைமைகள் மற்றும் மென்பொருள்களும் அவற்றின் சொந்த ஏபிஐகளை உள்ளடக்குகின்றன, இதன்மூலம் மற்ற புரோகிராமர்கள் அந்த அமைப்பிற்கான துணை நிரல்கள், செருகுநிரல்கள் அல்லது தொகுதிகள் போன்றவற்றை உருவாக்க முடியும்.
Arduino உடன் எடுத்துக்காட்டு
உங்களிடம் பேட்ஜ் இருந்தால் Arduino மற்றும் நீங்கள் அடிக்கடி Arduino IDE ஐப் பயன்படுத்துகிறீர்கள், அல்லது Arduino க்கான வேறு ஏதேனும் மேம்பாட்டுச் சூழல், நீங்கள் ஒரு குறியீட்டை உருவாக்கும்போது, உங்கள் மைக்ரோகண்ட்ரோலரை தொடர்ச்சியான செயல்களைச் செய்யும்படி கட்டளையிட பல விருப்பங்களைப் பயன்படுத்துகிறீர்கள் என்பதை நீங்கள் அறிவீர்கள். எடுத்துக்காட்டாக, பின்மோட் () என்பது ஒரு ஆர்டுயினோ முள் கட்டமைக்க ஒரு பொதுவான செயல்பாடு, இல்லையா?
நீங்கள் எழுதும்போது pinMode (9, INPUT)எடுத்துக்காட்டாக, அர்டுயினோ போர்டின் முள் 9 ஒரு உள்ளீடாக செயல்பட வேண்டும் என்பதை நீங்கள் குறிக்கிறீர்கள், அதாவது, மைக்ரோகண்ட்ரோலர் அந்த முள் வழியாக தகவல்களைப் படித்து ஒரு செயலைச் செய்யக் காத்திருக்கும். ஆனால் அவர் அந்த கட்டளையை எவ்வாறு புரிந்து கொள்ள முடியும் என்று நீங்கள் எப்போதாவது யோசித்திருக்கிறீர்களா?
சரி, அர்டுயினோவுக்கு ஒரு உள்ளது எங்களுக்கு கிடைக்கக்கூடிய மேம்பாட்டு API. இந்த வலைப்பதிவில் பல எடுத்துக்காட்டுகளில் நாம் பார்த்தபடி மூன்றாம் தரப்பு நூலகங்களை இந்த API இல் சேர்க்கலாம். சில சென்சார்கள் போன்றவற்றுக்கான ஸ்பார்க்ஃபன் போன்றது. இவை அனைத்தையும் கொண்டு, செயல்பாடுகளை Arduino IDE இல் உள்ளிடலாம், மேலும் அதை மைக்ரோகண்ட்ரோலரின் நினைவகத்தில் ஏற்றுவதற்கு குறியீட்டை சரியாக மொழிபெயர்க்கும், இதனால் அதை செயலாக்க முடியும்.
உங்களிடம் இந்த ஏபிஐ இல்லையென்றால், இந்த திட்டங்களை நீங்கள் ஆர்டுயினோவிற்கு இவ்வளவு எளிமையான முறையில் உருவாக்க முடியாது, ஏனென்றால் அவற்றை ஏடிஎம்இகா 328 பி மைக்ரோகண்ட்ரோலருக்கான சட்டசபை குறியீட்டில் உருவாக்க முயற்சிக்க வேண்டும், அதாவது, இல் ஏ.வி.ஆர் கட்டமைப்பிற்கான ஏ.எஸ்.எம். இந்த ஐஎஸ்ஏ மூலம் கிடைக்கும் வழிமுறைகளை நீங்கள் நேரடியாகப் பயன்படுத்த வேண்டியிருக்கும் என்பதால், இது மிகவும் சிக்கலானதாக இருக்கும். அப்படியானால், அந்த ஐஎஸ்ஏவின் திறனை நீங்கள் போதுமான அளவு தெரிந்து கொள்ள வேண்டியது மட்டுமல்லாமல், பதிவுகளின் எண்ணிக்கை போன்ற பிற அம்சங்களையும் நீங்கள் அறிந்து கொள்ள வேண்டும். அதாவது, நீங்கள் பணிபுரியும் வன்பொருள் குறித்த குறைந்த அளவிலான அறிவு உங்களிடம் இருக்க வேண்டும்.
மூலம் எடுத்துக்காட்டாக, 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
போது API க்கு நன்றி வசதிகள் மொத்தம், உயர் மட்டத்தில் பின்வரும் சமமான குறியீட்டை எழுதுதல் (மிகவும் குறுகிய மற்றும் மிகவும் உள்ளுணர்வு):
<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
ஏபிஐ உடனான வேறுபாடுகள்
ஏபிஐ என்பது குறைவாக அறியப்பட்ட சொல், இது ஒரு பயன்பாட்டு பைனரி இடைமுகம், அல்லது ஆங்கில பயன்பாட்டு பைனரி இடைமுகத்தில். இந்த வழக்கில், இது ஒரு நிரலின் தொகுதிகளுக்கு இடையிலான இடைமுகமாகும், பொதுவாக நீங்கள் இருக்கும் கட்டிடக்கலைக்கு ஒரு நூலகம் அல்லது இயந்திர மொழி இயக்க முறைமைக்கு இடையில்: SPARC, AMD64, ARM, PPC, RISC-V, முதலியன.
ஏபிஐக்கு நன்றி, செயல்பாடுகளை அழைப்பதற்கான வழி தீர்மானிக்கப்படுகிறது, பைனரி வடிவம் இது நீங்கள் தொகுக்கும் இயந்திரம் அல்லது கணினி அழைப்புகள், விதிவிலக்குகள் எவ்வாறு கையாளப்படுகின்றன, தரவு எவ்வாறு அனுப்பப்படுகிறது போன்றவற்றைப் புரிந்து கொள்ள முடியும்.
ஒரு கட்டமைப்போடு வேறுபாடுகள்
Un கட்டமைப்பு அல்லது கட்டமைப்பானது கருவிகளின் தொகுப்பாகும் கொடுக்கப்பட்ட திட்டத்தின் வளர்ச்சிக்கு உதவ உங்கள் வசம். புகழ் பொதுவாக சில குறியீட்டு தரங்களை அமைக்கிறது, பயனுள்ள கூறுகளை வழங்குகிறது. எடுத்துக்காட்டாக, ஜுனிட் என்பது ஜாவாவிற்கான ஒரு கட்டமைப்பாகும், அல்லது PHP க்கான சிம்ஃபோனி / கேக் போன்றவை.
ஒரு SDK மற்றும் NDK உடன் வேறுபாடுகள்
எஸ்.டி.கே ஒரு மென்பொருள் மேம்பாட்டு கிட் ஆகும், அதாவது, ஒரு மென்பொருள் மேம்பாட்டு கிட். இது ஒரு கட்டமைப்பை அல்லது ஒரு API ஐத் தாண்டியது. Android ஸ்டுடியோ அல்லது iOS xCode போன்றவை ஒரு உதாரணம். எடுத்துக்காட்டாக, முதல், அண்ட்ராய்டு ஏபிஐக்கு கூடுதலாக, நிரலாக்க மற்றும் தொகுத்தல், நூலகங்கள், கருவிகள் போன்றவற்றுக்கான ஐடிஇ அல்லது ஒருங்கிணைந்த மேம்பாட்டு சூழலையும் கொண்டுள்ளது.
மறுபுறம், NDK (நேட்டிவ் டெவலப்மென்ட் கிட்) அது ஒரு நிரப்பு. எடுத்துக்காட்டாக, அண்ட்ராய்டு என்.டி.கே டெவலப்பர்களை சி / சி ++ குறியீட்டை ஜே.என்.ஐ (ஜாவா நேட்டிவ் இன்டர்ஃபேஸ்) மூலம் பயன்பாடுகளுக்கு அறிமுகப்படுத்துவதன் மூலம் மீண்டும் பயன்படுத்த அனுமதிக்கிறது ...
நூலகத்துடன் வேறுபாடுகள்
இறுதியாக, நூலகம் மீண்டும் பயன்படுத்தக்கூடிய மூலக் குறியீட்டின் தொகுப்பாகும் இது புரோகிராமர்களுக்கு வாழ்க்கையை எளிதாக்குகிறது. எடுத்துக்காட்டாக, சி நூலகத்தின் உள்ளே stdio.h திரையில் உரையை அச்சிட ஒரு printf செயல்பாடு உள்ளது. அது சாத்தியமாக இருக்க, உங்களுக்கு ஒரு மூல குறியீடு தேவை, அது இயக்க முறைமையை அந்த பணியைச் செய்கிறது. ஆனால் இது அடிக்கடி மீண்டும் மீண்டும் பயன்படுத்தப்படுவதால், அந்த நூலகத்தைத் தொடங்குவதன் மூலம் நீங்கள் எல்லா குறியீடுகளையும் புதிதாக எழுதாமல் printf ஐப் பயன்படுத்தலாம். வேறு வார்த்தைகளில் கூறுவதானால், வேறுவிதமாகக் கூறினால், அவை பிரீகாஸ்ட் தொகுதிகளாகக் காணப்படுகின்றன.
ஒரு நூலகம் மற்றும் ஏபிஐ எளிதில் குழப்பமடையக்கூடும், உண்மையில், நூலகங்கள் ஒரு API க்குள் மூடப்பட்டிருக்கும். உதாரணமாக glibc...
இதற்குப் பிறகு உங்களுக்கு ஒரு யோசனை இருக்கும் என்று நம்புகிறேன் ஒரு ஏபிஐ, ஏபிஐ, ஒரு கட்டமைப்பு, ஒரு எஸ்.டி.கே மற்றும் ஒரு நூலகம் என்ன என்பது பற்றியும், அவற்றிலிருந்து இப்போது வேறுபடுவதைப் பற்றியும் தெளிவாகத் தெரிகிறது.