The আপনি যখন সফ্টওয়্যার সম্পর্কিত নিবন্ধগুলি পড়েন তখন আপনি এপিআই এর সংক্ষিপ্ত বিবরণগুলি একবারে এবং দু'বার দেখেছেন। তবে এপিআই আসলে কী তা সকলেই জানেন না। যে কারণে আমরা এই নিবন্ধে এটি স্পষ্ট। প্রথম কথাটি হ'ল এগুলি হ'ল অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেসের সংক্ষিপ্ত বিবরণগুলি, স্প্যানিশ ভাষায়, অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস। এবং অনেক সময় এটি কিছু প্রোগ্রামিং জানেন এমনদের মধ্যেও বিভ্রান্তি সৃষ্টি করে।
উদাহরণস্বরূপ, আরডুইনোর নিজস্ব প্রোগ্রামিং এপিআই রয়েছে, আপনি নিজের প্রকল্পগুলি তৈরি করার অনুমতি দেওয়ার জন্য মাইক্রোকন্ট্রোলার প্রোগ্রাম করার জন্য অরডুইনো আইডিই বা অন্যান্য পরিবেশে ব্যবহার করতে পারেন এমন অনেকগুলি ক্রিয়াকলাপ সরবরাহ করে। তবে ... তুমি আমাকে বলতে পার? একটি প্রোগ্রামিং লাইব্রেরি এবং একটি API এর মধ্যে পার্থক্য? কোনও কাঠামো এবং একটি এপিআইয়ের মধ্যে পার্থক্য রয়েছে? একটি এপিআই কি এবিআইয়ের মতো? অনেক সন্দেহ রয়েছে যে সম্ভবত বিভ্রান্তি সৃষ্টি করে চলেছে এবং আমরা এখনই স্পষ্ট করতে যাচ্ছি।
আমি জানিনা আপনি তা জানেন কিনা নিম্ন-স্তরের ভাষাএসেম্বলার বা এএসএমের মতো, হার্ডওয়্যার আর্কিটেকচারের উপর সরাসরি নির্ভর করে, যখন উচ্চ-স্তরের ব্যক্তিরা প্রোগ্রামারটির কাজটি সহজ করার জন্য হার্ডওয়্যার থেকে বিমূর্ত থাকে তবে অপারেটিং সিস্টেম (সিস্কল) বা নির্দিষ্ট কিছু এপিআই ইত্যাদির উপর নির্ভর করে etc. যাতে এগুলি আপনার কাছে চাইনিজদের মতো না লাগে, আসুন দেখুন এটি কী ...
একটি এপিআই কি?
উনা এপিআই একটি সরঞ্জাম যা দিয়ে বিকাশকারীদের সরবরাহ করা হয় যাতে তারা তাদের কার্যক্রমে OUP- র জন্য ক্রিয়াকলাপ, সাবরুটাইনগুলি এবং পদ্ধতি বা পদ্ধতিগুলি ব্যবহার করে যা বিদ্যমান লাইব্রেরিগুলির মাধ্যমে ব্যবহার করা যেতে পারে। একটি এপিআই অফারগুলির মধ্যে সহজ অ্যাপ্লিকেশনগুলি তৈরি করা, এআই সম্পর্কিত ফাংশনগুলি, গ্রাফিক্সের প্রজন্মের সাথে, হার্ডওয়্যার রিসোর্সগুলির পরিচালনা ইত্যাদি,
উদাহরণস্বরূপ, আমি নিশ্চিত যে আপনি এপিআই, যেমন গ্লাবসি লাইব্রেরির মাধ্যমে লিনাক্সের দেওয়া অফার, বা গ্রাফিক্সের সাথে পরিচিত ওপেনজিএল এবং ভালকান, বা অন্যরা ওপেনসিএল পছন্দ করে ভিন্ন ভিন্ন কম্পিউটিংয়ের জন্য, ভার্চুয়াল এবং অগমেন্টেড রিয়েলিটি ইত্যাদির জন্য ওপেনএক্সআর ইত্যাদি অন্যান্য অপারেটিং সিস্টেম এবং সফ্টওয়্যারগুলিতে তাদের নিজস্ব এপিআইও অন্তর্ভুক্ত থাকে যাতে অন্যান্য প্রোগ্রামাররা সেই সিস্টেমের জন্য অ্যাডোন, প্লাগইন বা মডিউল ইত্যাদি তৈরি করতে পারে etc.
আরডুইনোর সাথে উদাহরণস্বরূপ
আপনার যদি ব্যাজ থাকে আরডুইনো এবং আপনি প্রায়শই আরডুইনো আইডিই ব্যবহার করেন, বা আরডুইনোর জন্য অন্য কোনও বিকাশের পরিবেশ, আপনি জানতে পারবেন যে আপনি যখন একটি কোড তৈরি করেন তখন আপনি নিজের মাইক্রোকন্ট্রোলারকে ক্রমাগত ক্রিয়াকলাপ করার আদেশ দেওয়ার জন্য একাধিক বিকল্প ব্যবহার করেন। উদাহরণস্বরূপ, পিনমোড () একটি আরডুইনো পিনটি কনফিগার করার জন্য একটি সাধারণ ফাংশন, তাই না?
আপনি যখন লিখুন পিনমোড (9, ইনপুট)উদাহরণস্বরূপ, আপনি ইঙ্গিত দিচ্ছেন যে আরডুইনো বোর্ডের পিন 9 এর একটি ইনপুট হিসাবে কাজ করা উচিত, অর্থাত, মাইক্রোকন্ট্রোলারটি এটি পড়তে এবং কোনও ক্রিয়া সম্পাদনের জন্য তথ্যটি পিনের মধ্যে প্রবেশের জন্য অপেক্ষা করবে। তবে আপনি কি কখনও ভেবে দেখেছেন যে তিনি কীভাবে সেই আদেশটি বুঝতে পেরেছেন?
আচ্ছা, আরডিনো আছে একটি ডেভেলপমেন্ট এপিআই যা আমাদের জন্য উপলব্ধ করা হয়েছে। তৃতীয় পক্ষের লাইব্রেরিগুলি এই এপিআইতে যুক্ত করা যেতে পারে যেমন আমরা এই ব্লগে বহু উদাহরণে দেখেছি। নির্দিষ্ট সেন্সর ইত্যাদির জন্য স্পার্কফুনের মতো etc. এই সমস্ত কিছু সহ, ফাংশনগুলি আরডুইনো আইডিইতে প্রবেশ করা যেতে পারে এবং এটি মাইক্রোকন্ট্রোলারের স্মৃতিতে লোড করার জন্য কোডটি সঠিকভাবে অনুবাদ করবে যাতে এটি এটি প্রক্রিয়া করতে পারে।
আপনার যদি এই এপিআই না থাকে, আপনি আরডুইনোর জন্য এত সহজ পদ্ধতিতে এই প্রোগ্রামগুলি তৈরি করতে পারেননি, যেহেতু এটিএমইগা 328 পি মাইক্রোকন্ট্রোলারের জন্য আমাদের এ্যাসেম্বলি কোড তৈরি করার চেষ্টা করা উচিত, এভিআর আর্কিটেকচারের জন্য এএসএম। এবং এটি আরও জটিল হবে, যেহেতু আপনাকে সরাসরি এই আইএসএ দ্বারা উপলব্ধ নির্দেশাবলী ব্যবহার করতে হবে। যদি তা হয় তবে আপনাকে কেবল সেই আইএসএর পুস্তকটি পর্যাপ্তভাবে জানতে হবে না, তবে অন্যান্য বিষয়গুলি যেমন রেজিস্ট্রেশনের সংখ্যা ইত্যাদি know এটি হল, আপনি যে হার্ডওয়্যারটির জন্য কাজ করছেন তার নিম্ন স্তরের জ্ঞান থাকা উচিত।
Por থেকে উদাহরণস্বরূপ, এএসএম কোড একটি লুপে জ্বলতে একটি এলইডি জন্য আপনার কী উত্পন্ন করা উচিত তা হ'ল:
<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
একটি এবিআইয়ের সাথে পার্থক্য
এবিআই একটি কম পরিচিত শব্দ, এটি একটি অ্যাপ্লিকেশন বাইনারি ইন্টারফেস, বা ইংলিশ অ্যাপ্লিকেশন বাইনারি ইন্টারফেসে। এই ক্ষেত্রে, এটি কোনও প্রোগ্রামের মডিউলগুলির মধ্যে একটি ইন্টারফেস যা সাধারণত আপনি যে আর্কিটেকচারের জন্য কোনও গ্রন্থাগার বা একটি মেশিন ল্যাঙ্গুয়েজ অপারেটিং সিস্টেমের মধ্যে: স্পার্ক, এএমডি 64, এআরএম, পিপিসি, আরআইএসসি-ভি ইত্যাদি is
এবিআইকে ধন্যবাদ, ফাংশনগুলি কল করার উপায়টি নির্ধারিত হয়, বাইনারি ফর্ম্যাট আপনি যে মেশিনটি সংকলন করছেন তা বা সিস্টেম কলগুলি বুঝতে পারে, কীভাবে ব্যতিক্রমগুলি পরিচালনা করা হয়, কীভাবে ডেটা পাস হয় ইত্যাদি can
একটি ফ্রেমওয়ার্কের সাথে পার্থক্য
Un কাঠামো বা কাঠামো হ'ল সরঞ্জামগুলির একটি সেট আপনার বরাদ্দে একটি প্রদত্ত প্রকল্পের উন্নয়নে সহায়তা করতে। খ্যাতি কাজ সাধারণত কিছু কোডিং মান নির্ধারণ করে, দরকারী উপাদান সরবরাহ করে ইত্যাদি উদাহরণস্বরূপ, JUnit জাভা, বা পিএইচপি জন্য সিমফনি / কেক ইত্যাদির জন্য একটি কাঠামো etc.
একটি SDK এবং NDK এর সাথে পার্থক্য
এসডিকে একটি সফটওয়্যার ডেভলপমেন্ট কিট, এটি একটি সফ্টওয়্যার বিকাশ কিট এটি কোনও ফ্রেমওয়ার্ক বা একটি এপিআই এর বাইরে চলে যায়। একটি উদাহরণ অ্যান্ড্রয়েড স্টুডিও বা আইওএস এক্সকোড ইত্যাদি হতে পারে etc. উদাহরণস্বরূপ, প্রথমটি Android এপিআই ছাড়াও প্রোগ্রামিং এবং সংকলনের জন্য লাইব্রেরি, সরঞ্জামাদি ইত্যাদির জন্য একটি আইডিই বা সমন্বিত বিকাশের পরিবেশ অন্তর্ভুক্ত করে
অন্যদিকে, এনডিকে (নেটিভ ডেভলপমেন্ট কিট) এটি পরিপূরক উদাহরণস্বরূপ, অ্যান্ড্রয়েড এনডিকে বিকাশকারীদের জেএনআই (জাভা নেটিভ ইন্টারফেস) এর মাধ্যমে অ্যাপ্লিকেশনগুলিতে প্রবর্তন করে সি / সি ++ কোডটি পুনরায় ব্যবহার করার অনুমতি দেয় ...
একটি গ্রন্থাগারের সাথে পার্থক্য
অবশেষে, গ্রন্থাগারটি পুনরায় ব্যবহারযোগ্য উত্স কোডের একটি সংগ্রহ যা প্রোগ্রামারদের জন্য জীবনকে সহজ করে তোলে। উদাহরণস্বরূপ, সি লাইব্রেরি stdio.h এর ভিতরে স্ক্রিনে পাঠ্য মুদ্রণের জন্য একটি প্রিন্টফ ফাংশন রয়েছে। এটি সম্ভব হওয়ার জন্য, একটি উত্স কোড প্রয়োজন যা অপারেটিং সিস্টেমটিকে এই কাজটি করে। তবে যেহেতু এটি খুব ঘন ঘন পুনরাবৃত্তি যা ঘন ঘন ব্যবহৃত হয়, কেবলমাত্র সেই লাইব্রেরির সাহায্যে আপনি স্ক্র্যাচ থেকে সমস্ত কোড না লিখে প্রিন্টফ ব্যবহার করতে পারেন। অন্য কথায়, অন্য কথায়, এগুলি প্রিসক্ট ব্লক হিসাবে দেখা যায়।
একটি গ্রন্থাগার এবং একটি এপিআই সহজেই বিভ্রান্ত হতে পারে, বাস্তবে, লাইব্রেরিগুলি একটি এপিআই এর ভিতরে আবৃত থাকে। উদাহরণ জন্য glibc...
আমি আশা করি এর পরে আপনার একটি ধারণা থাকবে এখন থেকে তাদের মধ্যে পার্থক্য করতে সক্ষম হওয়া ছাড়াও একটি এপিআই, এবিআই, একটি কাঠামো, একটি এসডিকে এবং একটি লাইব্রেরি কী সে সম্পর্কে আরও পরিষ্কার।