সরাসরি প্রধান সামগ্রীতে চলে যান

Rust-এ Vectors-এর মাধ্যমে ডেটা স্টোর করার সহজ গাইড

Introduction: এই ভিডিওটিতে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ 'Collections' নিয়ে আলোচনা করা হয়েছে। বিশেষ করে এখানে 'Vectors' সম্পর্কে বিস্তারিত জানানো হয়েছে। আমরা শিখব কীভাবে একই ধরনের অনেকগুলো ডেটাকে একসাথে স্টোর করা যায় এবং প্রয়োজন অনুযায়ী সেই ডেটার পরিমাণ বাড়ানো বা কমানো যায়। যারা নতুন কোডিং শিখছেন, তাদের জন্য এই ভিডিওটি একটি চমৎকার গাইড।


১. কালেকশন এবং ভেক্টর কী? (What are Collections and Vectors?)

রেফারেন্স: [00:23]

বিস্তারিত: Rust-এর স্ট্যান্ডার্ড লাইব্রেরিতে কিছু ডেটা স্ট্রাকচার থাকে যেগুলোকে 'Collections' বলা হয়। সাধারণ ভেরিয়েবলে আমরা একটি মাত্র ভ্যালু রাখতে পারি, কিন্তু কালেকশনে অনেকগুলো ভ্যালু একসাথে রাখা যায়। ভেক্টর (Vector) হলো এমন একটি কালেকশন যা অনেকটা 'Array'-এর মতো কিন্তু এটি আকারে বড় বা ছোট হতে পারে (Growable)।

  • সহজ ব্যাখ্যা: মনে করুন আপনার কাছে একটি ঝুড়ি আছে। সাধারণ ভেরিয়েবল মানে সেই ঝুড়িতে শুধু একটি আম রাখা যাবে। আর 'Vector' মানে হলো এমন এক জাদুর ঝুড়ি যেখানে আপনি চাইলে একটা আম রাখতে পারেন, আবার চাইলে ১০০টা আমও রাখতে পারেন। ঝুড়িটি নিজের আকার বদলে নেবে।

  • কঠিন শব্দের সহজ অর্থ:

    • Heap Memory (হিপ মেমোরি): কম্পিউটারের মেমোরির এমন একটি জায়গা যেখানে ডেটা রাখার সময় আগে থেকে নির্দিষ্ট করে দিতে হয় না যে কতটুকু জায়গা লাগবে। প্রোগ্রাম চলার সময় এটি কম-বেশি হতে পারে।

    • Growable (গ্রো-এবল): যা বড় করা সম্ভব।


২. নতুন ভেক্টর তৈরি করা (Creating a New Vector)

রেফারেন্স: [02:18]

কোড স্নিপেট:

Rust

fn main() {
    // ১. একটি খালি ভেক্টর তৈরি করা
    let mut v: Vec<i32> = Vec::new();

    // ২. ডেটা পুশ করা (Add করা)
    v.push(1);
    v.push(2);
    v.push(3);

    // ৩. ম্যাক্রো ব্যবহার করে শুরুতে ভ্যালু দিয়ে ভেক্টর তৈরি করা
    let v2 = vec![10, 20, 30];
} 

ব্যাখ্যা: এখানে Vec::new() দিয়ে একটি একদম খালি ভেক্টর বানানো হয়েছে। যেহেতু পরে আমরা এতে ডেটা যোগ করব, তাই mut (Mutable) কিউওয়ার্ড ব্যবহার করা হয়েছে। আর vec! হলো একটি শর্টকাট (Macro), যা দিয়ে শুরুতেই কিছু ভ্যালু দিয়ে ভেক্টর বানানো যায়।


৩. ভেক্টর থেকে ডেটা পড়া (Reading Elements from Vectors)

রেফারেন্স: [08:22]

বিস্তারিত: ভেক্টর থেকে ডেটা পড়ার দুটি প্রধান উপায় আছে: ১. ইন্ডেক্স ব্যবহার করে: সরাসরি v[index] লিখে। কিন্তু যদি ইন্ডেক্স ভুল হয় (যেমন আপনার ৫টি ডেটা আছে কিন্তু আপনি ১০ নম্বরটা খুঁজছেন), তবে প্রোগ্রাম ক্রাশ করবে। ২. Get মেথড ব্যবহার করে: এটি অনেক নিরাপদ। এটি আপনাকে 'Option' টাইপ রিটার্ন করে, যাতে প্রোগ্রাম ক্রাশ না করে।

কোড স্নিপেট:

Rust

let v = vec![1, 2, 3, 4, 5];

// নিরাপদ উপায়
match v.get(2) {
    Some(third) => println!("তৃতীয় ভ্যালুটি হলো: {}", third),
    None => println!("দুঃখিত, এই ইন্ডেক্সে কিছু নেই।"),
} 

৪. ভেক্টরের উপর লুপ চালানো (Iterating over a Vector)

রেফারেন্স: [19:32]

বিস্তারিত: যদি আপনি ভেক্টরের প্রতিটি ভ্যালু এক এক করে দেখতে চান বা পরিবর্তন করতে চান, তবে for লুপ ব্যবহার করতে হয়।

  • আমার চিন্তাভাবনা: লুপ চালানো মানে হলো লাইনে দাঁড়িয়ে থাকা মানুষের সাথে একজন একজন করে কথা বলা। Rust-এ এটি খুব সাবধানে করতে হয় যাতে মেমোরি ম্যানেজমেন্ট ঠিক থাকে।

কোড স্নিপেট:

Rust

let mut v = vec![100, 32, 57];
for i in &mut v {
    // প্রতিটি ভ্যালুর সাথে ৫০ যোগ করা
    *i += 50; 
} 
  • সহজ ব্যাখ্যা: এখানে *i ব্যবহার করা হয়েছে যেটাকে বলা হয় 'De-referencing'। এর মানে হলো মেমোরি অ্যাড্রেসে ঢুকে সরাসরি ভ্যালুটাকে ধরা।

৫. ভিন্ন ভিন্ন টাইপের ডেটা রাখা (Using Enums to Store Multiple Types)

রেফারেন্স: [23:19]

বিস্তারিত: সাধারণত একটি ভেক্টরে শুধু একই ধরনের ডেটা (যেমন সব নাম্বার বা সব টেক্সট) রাখা যায়। কিন্তু যদি আপনার নাম্বার এবং টেক্সট দুটোই এক ভেক্টরে রাখতে হয়, তখন 'Enum' ব্যবহার করতে হয়।

  • সহজ ব্যাখ্যা: মনে করুন আপনার একটি বক্স আছে যেখানে শুধু বল রাখা যায়। এখন আপনি যদি ব্যাটও রাখতে চান, তবে আপনাকে একটি 'স্পেশাল বক্স' (Enum) বানাতে হবে যা বল বা ব্যাট যেকোনোটি ধারণ করতে পারে।

বিশ্লেষণ ও সম্ভাবনা (Analysis and Perception)

আমার বিশ্লেষণ: কনটেন্ট ক্রিয়েটর পিযুষ গর্গ এখানে Rust-এর ভেক্টরকে খুব সহজভাবে ব্যাখ্যা করেছেন। Rust ল্যাঙ্গুয়েজটি মেমোরি সেফটি নিয়ে খুব কড়া, তাই এখানে ভেক্টর ব্যবহারের সময় 'Borrow Checker' বা 'Ownership'-এর বিষয়গুলো মাথায় রাখতে হয়।

বাস্তবতা ও সম্ভাবনা: ১. নিরাপত্তা: get মেথড ব্যবহার করার মাধ্যমে রান-টাইম এরর কমানো সম্ভব, যা জাভাস্ক্রিপ্ট বা পাইথনের তুলনায় অনেক বেশি নিরাপদ। ২. বিকল্প: যদি আপনার ডেটার সাইজ নির্দিষ্ট থাকে এবং আপনি জানেন যে এটি কখনো বাড়বে না, তবে 'Array' ব্যবহার করা ভালো। কারণ এতে মেমোরি খরচ কম হয়। ৩. পরামর্শ: বিগিনার হিসেবে শুরুতে vec! ম্যাক্রো ব্যবহার করে প্র্যাকটিস করা সহজ। তবে মেমোরি কীভাবে কাজ করে তা বোঝার জন্য Vec::new() এবং push পদ্ধতিটিও ভালোভাবে শেখা উচিত।

এই ভিডিওটি আপনাকে Rust-এ ডেটা হ্যান্ডেল করার প্রাথমিক ধাপগুলো খুব সুন্দরভাবে বুঝিয়ে দেবে। পরবর্তী ধাপে String এবং HashMaps নিয়ে শিখলে Rust-এর কালেকশন সম্পর্কে আপনার ধারণা পরিষ্কার হয়ে যাবে।

[

Storing Lists of Values with Vectors | Rust Book

Piyush Garg · 2.4K views

](http://www.youtube.com/watch?v=UK0LHN39ops)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...