কম্পিউটার

আসুন জেনেরিক্স এবং সুইফটের যেকোন প্রকারের মধ্যে পার্থক্যগুলি ব্যবচ্ছেদ করি

সুইফট আজকাল শীর্ষস্থানীয় টাইপ-সেফ ল্যাঙ্গুয়েজগুলির মধ্যে একটি। ???

ওহ অপেক্ষা করুন!! একটি ভাষা টাইপ-নিরাপদ হলে এর অর্থ কী? ?

একটি টাইপ-নিরাপদ ভাষা সর্বদা নিশ্চিত করে যে একটি অপারেশন সেই সময়ে উপলব্ধ সঠিক ধরনের ডেটার সাথে কাজ করে৷✓

যদি একটি ভাষার বিভিন্ন ধরনের ডেটা (যেমন, Int, Float, String, Array, Dictionary) ঘোষণা করার ক্ষমতা থাকে এবং এটি নিশ্চিত করার ক্ষমতাও রাখে যে একটি নির্দিষ্ট ডেটা টাইপের সাথে ঘোষিত একটি পরিবর্তনশীল কখনই ভিন্ন ধরনের ধারণ করবে না। ডেটা, তারপর একে টাইপ-সেফ ল্যাঙ্গুয়েজ বলা হয়।

টাইপ-নিরাপদ ভাষায়, টাইপ চেকিং সবসময় করা হয়। এটি ভাষার উপর নির্ভর করে কম্পাইল টাইম বা রান টাইমে ঘটতে পারে।✅

এখন, সুইফটে জেনেরিক কী?

জেনেরিক টাইপ নিরাপদ, এবং আমাদের নমনীয়, পুনঃব্যবহারযোগ্য ফাংশন এবং প্রকার লিখতে সাহায্য করে। জেনেরিক্স ব্যবহার করে, আমরা কোড লিখতে পারি যা সমস্ত ডেটা প্রকারের জন্য কাজ করে। যেহেতু সুইফ্ট একটি টাইপ-সেফ ল্যাঙ্গুয়েজ, এটিকে না ভেঙে আমরা জেনেরিক কোড লিখতে সক্ষম যা কোড ডুপ্লিকেশন এড়াতে পারে।

আসুন একটি সাধারণ উদাহরণ নেওয়া যাক:একটি অ্যারে হল একটি অর্ডারকৃত সংগ্রহ যা একই ধরণের ডেটা ধারণ করতে পারে। এই কারণেই একটি অ্যারের সংজ্ঞায়, আমরা দেখতে পাচ্ছি যে এটি একটি জেনেরিক ধরনের এলিমেন্ট লাগে। তাই একটি অ্যারে একটি জেনারিক ধরনের সংগ্রহ হয়ে যায় .

ঠিক আছে। কুল। তাহলে সুইফটে কোন প্রকার কি? ???

সুইফট যেকোন প্রকার সমর্থন করে। নামটি ইঙ্গিত করে, এটি স্ট্রাকট, ক্লাস, এনাম এবং ফাংশনের প্রকারের মতো যেকোন ধরনের উদাহরণ উপস্থাপন করতে পারে।

তাহলে অবজেক্টিভ সি আইডি এবং সুইফ্ট কি একই? ?

সুইফট 3-এ, উদ্দেশ্য C id সুইফটের যেকোন ধরনের মানচিত্র টাইপ করুন। এটি সুইফট এবং অবজেক্টিভ সি এর সামঞ্জস্যকে উন্নত করে।

কিন্তু কিভাবে এবং কেন?

সুইফট 2-এ, উদ্দেশ্য C id সুইফটের যেকোনো বস্তুতে ম্যাপ করা হয়েছিল। এটি বেশিরভাগ ক্ষেত্রেই ভাল কাজ করে, কিন্তু কখনও কখনও এটি অপ্রত্যাশিত আচরণের ফলে। সুইফটের মূল ধারণাগুলির মধ্যে একটি হল ভ্যালু টাইপস, এবং এই ম্যাপিং এই ধারণার সাথে যথাযথ ন্যায়বিচার করছে না।

আইওএস ডেভেলপমেন্টের জন্য সুইফট একটি নতুন ভাষা, এবং অবজেক্টিভ সি বছরের পর বছর ধরে রয়েছে। তাই অবশ্যই বেশিরভাগ প্রকল্পগুলি শুধুমাত্র উদ্দেশ্য সি-তে তৈরি করা হয়েছিল। এখন একটি উদ্দেশ্য প্রকল্পকে একটি সুইফ্ট প্রকল্পে রূপান্তর করার জন্য, প্রয়োজনীয়তা এসেছে যে যেকোনো সুইফ্ট টাইপকে যেকোনো অবজেক্টিভ সি অবজেক্টে সেতু করা সম্ভব।

কিন্তু সুইফট ক্লাস এবং Int, String, Float এর মত সুইফট ভ্যালু টাইপগুলির জন্য এটি কোন সমস্যা ছিল না কারণ তাদের ইতিমধ্যেই তাদের অবজেক্টিভ সি প্রতিরূপ রয়েছে। সমস্যাটি সুইফ্ট মান প্রকারের জন্য উদ্ভূত হয়েছিল যেগুলির কোনও উদ্দেশ্য সি প্রতিরূপ নেই৷

সুতরাং এটি ঠিক করার জন্য, সুইফ্ট যেকোন প্রকারের উপর উদ্দেশ্য সি আইডি টাইপ ম্যাপ করা হয়েছে। ✅✅✅

যথেষ্ট সংজ্ঞা?। এবার মূল প্রসঙ্গে আসা যাক। উপরের পয়েন্টগুলি দ্বারা, এটি দেখে মনে হচ্ছে জেনেরিক এবং যে কোনও প্রকার একই। কিন্তু তারা কি সত্যিই???

উচ্চ স্তরে, যেকোনও জেনেরিকের মতো দেখতে হতে পারে। তবে আসুন কিছু পার্থক্য খুঁজে বের করার চেষ্টা করি-???

আমরা সবাই জানি একটি স্ট্যাক কি ডেটা স্ট্রাকচারে আছে, তাই না? একটি স্ট্যাক হল একটি মৌলিক রৈখিক ডেটা কাঠামো যেখানে আইটেমগুলি সন্নিবেশ করা এবং মুছে ফেলা শুধুমাত্র এক প্রান্তে ঘটে৷

এখন আমরা সুইফটে স্ট্যাক কাঠামো বাস্তবায়ন করব। প্রথমে, আমরা জেনেরিক ব্যবহার করে তারপর যেকোন প্রকারের সাথে প্রয়োগ করব।

জেনেরিক ব্যবহার করে স্ট্যাক বাস্তবায়ন:

উপরের স্ট্যাক বাস্তবায়ন জেনেরিক ব্যবহার করছে। struct একটি জেনেরিক ধরনের Element লাগে আইটেম এবং সেই আইটেমটি ব্যবহার করে একটি স্ট্যাক প্রয়োগ করে। এখন জেনেরিক স্ট্যাকের সাথে কিছু অপারেশন করা যাক:

এটি একটি জেনেরিক স্ট্যাক ঘোষণা করে যা একটি পূর্ণসংখ্যা ধরনের উপাদান ধারণ করতে পারে। আমরা পূর্ণসংখ্যা উপাদানটিকে স্ট্যাকের দিকে ঠেলে দিচ্ছি। এই বিন্দু পর্যন্ত, সবকিছু দুর্দান্ত কাজ করে৷

কিন্তু আমি যদি জেনেরিকস্ট্যাকের উপরে একটি ফ্লোট এলিমেন্ট পুশ করতে চাই?

আসুন জেনেরিক্স এবং সুইফটের যেকোন প্রকারের মধ্যে পার্থক্যগুলি ব্যবচ্ছেদ করি

❌❌ উফ! সংকলন ত্রুটি! ❌❌

যে কোনো প্রকার ব্যবহার করে স্ট্যাক বাস্তবায়ন:

এই স্ট্যাক ইমপ্লিমেন্টেশনে, আইটেম অ্যারে যেকোন ধরনের উপাদান ধারণ করতে পারে। আইটেমগুলির সঠিক ডেটা টাইপ কী হবে সে সম্পর্কে আমরা নির্দিষ্ট করছি না সংজ্ঞায় অ্যারে উপাদান। এখন এই স্ট্যাকে একই মৌলিক ক্রিয়াকলাপ করা যাক:

কোন সমস্যা নেই, তাই না? এখানেও সবকিছু ঠিকঠাক কাজ করছে। প্রাথমিকভাবে, আমরা একটি স্ট্যাক ঘোষণা করেছি এবং এতে দুটি পূর্ণসংখ্যা উপাদান পুশ করেছি। যখন আমরা শো() কল করি পদ্ধতি, এটি সঠিক অ্যারে প্রিন্ট করে [3, 4]।

এখন এর মধ্যে একটি ফ্লোট মান চাপানো যাক৷☄️

আসুন জেনেরিক্স এবং সুইফটের যেকোন প্রকারের মধ্যে পার্থক্যগুলি ব্যবচ্ছেদ করি

✅✅ কোন ত্রুটি নেই! সবকিছু ঠিকঠাক কাজ করে! ✅✅

তাহলে পর্দার আড়ালে কী ঘটছে ? কেন আমরা কোন ত্রুটি পাচ্ছি না??? ?

জেনারিকস মূলত কম্পাইলারকে বলে যে:

আমি একটি জেনেরিক টাইপ ঘোষণা করেছি এবং আমি আপনাকে পরে একটি সঠিক টাইপ দিতে যাচ্ছি। আমি চাই যে আপনি আমার উল্লেখ করা সব জায়গায় এই ধরনের প্রয়োগ করুন৷

যে কোনো প্রকার মূলত কম্পাইলারকে বলে:

এই ভেরিয়েবল নিয়ে চিন্তা করবেন না, এখানে কোন প্রকার প্রয়োগ করার দরকার নেই আমি যা করতে চাই তাই করতে দিন।

জেনেরিক্স নমনীয় ফাংশন সংজ্ঞায়িত করতে ব্যবহার করা যেতে পারে, কিন্তু আর্গুমেন্টের প্রকারগুলি এখনও কম্পাইলার দ্বারা পরীক্ষা করা হয়। সুইফটের টাইপ সিস্টেমকে ডজ করতে যেকোন প্রকার ব্যবহার করা যেতে পারে।?

জেনারিক স্ট্যাক ঘোষণায় , আমরা কম্পাইলারকে বলছি যে স্ট্যাকটি শুধুমাত্র পূর্ণসংখ্যার ধরণটি গ্রহণ করবে। তারপর যখন আমরা এটিতে একটি ফ্লোট ধরণের উপাদান সন্নিবেশ করার চেষ্টা করছি, তার মানে আমরা সেই প্রতিশ্রুতি ভঙ্গ করছি। তাই এটি একটি কম্পাইল সময় ত্রুটি নিক্ষেপ করা হয়. এটি সর্বদা প্রত্যাশা করে যে উপাদানটি একটি পূর্ণসংখ্যার ধরন হওয়া উচিত।

কিন্তু যেকোনো স্ট্যাকের জন্য , আমরা কোন কম্পাইল টাইম বা রানটাইম এরর পাচ্ছি না। এমনকি যদি আমরা show() কল করি পদ্ধতি, এটি স্ট্যাকটিকে [3, 4, 5.0] হিসাবে প্রিন্ট করে যার মানে স্ট্যাকের পূর্ণসংখ্যা এবং ফ্লোট ধরণের মান রয়েছে। তাই যেকোন স্ট্যাকে, কোন প্রকার সীমাবদ্ধতা নেই, আমরা এতে যেকোন ধরনের মান পুশ করতে পারি (কিন্তু রানটাইম ব্যতিক্রমের সম্ভাবনা রয়েছে)।

উপসংহার

সুতরাং আমরা যদি জেনেরিক ব্যবহার করি তাহলে আমরা সুইফটের ধরনের নিরাপত্তার সাথে আপস না করে নমনীয় ফাংশন, কাঠামো, ক্লাস এবং প্রোটোকল লিখতে পারি। কিন্তু আমরা যদি যেকোন প্রকার ব্যবহার করি, তাহলে আমরা আমাদের নিজস্ব বসের মতো, আমরা যা চাই তা করতে পারি৷

??? চিয়ার্স!!! পড়ার জন্য আপনাকে ধন্যবাদ!! ???


  1. Wi-Fi 6 এবং 5G নেটওয়ার্কের মধ্যে পার্থক্য কী?

  2. Su, Sudo Su, Sudo -s এবং Sudo -i এর মধ্যে পার্থক্য

  3. বিটকয়েন এবং ইথেরিয়ামের মধ্যে পার্থক্য

  4. Windows 10 এবং Windows 11 এর মধ্যে পার্থক্য কি?