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

পোস্টগুলি

Rust-এ Unrecoverable Errors এবং panic! ম্যাজিক

Introduction সফটওয়্যার ডেভেলপমেন্টে ভুল বা 'Error' হওয়াটা খুবই স্বাভাবিক একটা বিষয়। কিন্তু একেকটি ল্যাঙ্গুয়েজ এই ভুলগুলোকে একেকভাবে সামলায়। Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে এরর হ্যান্ডলিং করার পদ্ধতি অন্য সব ল্যাঙ্গুয়েজ (যেমন: Java বা JavaScript) থেকে একটু আলাদা। Rust মূলত দুই ধরনের এরর নিয়ে কাজ করে: Recoverable (যা ঠিক করা সম্ভব) এবং Unrecoverable (যা ঠিক করা সম্ভব নয়)। আজকের এই আলোচনায় আমরা মূলত Unrecoverable Errors এবং Rust-এর বিশেষ অস্ত্র panic! ম্যাক্রো নিয়ে সহজ ভাষায় জানবো। ১. এরর হ্যান্ডলিং-এর ধারণা (Error Handling Concepts) ভিডিও রেফারেন্স: [ 00:22 ] প্রোগ্রামিং করার সময় আমাদের কোডে দুই ধরণের সমস্যা হতে পারে: Recoverable Errors: ধরুন আপনি একটি ফাইল খুলতে চাইলেন কিন্তু ফাইলটি নেই। এক্ষেত্রে প্রোগ্রাম ক্রাশ না করে ইউজারকে বলা যেতে পারে যে ফাইলটি খুঁজে পাওয়া যায়নি। Unrecoverable Errors: এটি এমন একটি সমস্যা যেখানে প্রোগ্রাম আর সামনে এগোতে পারে না। যেমন: একটি এরে (Array)-তে ৩টি আইকন আছে কিন্তু আপনি ১০০ নম্বর আইকনটি দেখতে চাইছেন। এটি একটি 'Bug', যা ঠিক ন...

Rust-এ হ্যাশ ম্যাপ (Hash Map) ব্যবহার করার সহজ গাইড

Introduction আজকের এই আলোচনায় আমরা শিখব কীভাবে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে Hash Maps ব্যবহার করতে হয়। সাধারণত ডেটা সেভ করার জন্য আমরা ভেক্টর (Vectors) বা অ্যারে ব্যবহার করি যেখানে ইনডেক্স (০, ১, ২...) দিয়ে ডেটা খুঁজতে হয়। কিন্তু হ্যাশ ম্যাপ আমাদের এমন সুবিধা দেয় যেখানে আমরা যেকোনো "Key" (যেমন নাম বা আইডি) ব্যবহার করে তার সাথে জড়িত "Value" খুঁজে পেতে পারি। এটি অনেকটা ডিকশনারির মতো কাজ করে। ১. হ্যাশ ম্যাপ কী এবং কেন ব্যবহার করবেন? হ্যাশ ম্যাপ হলো একটি কালেকশন যা Key-Value Pair হিসেবে ডেটা জমা রাখে। এটি অন্যান্য ল্যাঙ্গুয়েজে ডিকশনারি বা অবজেক্ট নামেও পরিচিত। রেফারেন্স: [ 00:22 ] এখানে K মানে Key এবং V মানে Value। এটি মেমরিতে ডেটা রাখার জন্য একটি 'Hash Function' ব্যবহার করে। যেমন- একটি গেমে টিমের নাম (Key) এবং তাদের স্কোর (Value) সেভ করে রাখা। সহজ ভাষায় ব্যাখ্যা: ধরুন আপনার কাছে একটি টেলিফোন ডাইরেক্টরি আছে। সেখানে মানুষের নাম হলো "Key" আর তাদের ফোন নম্বর হলো "Value"। নাম খুঁজলে আপনি নম্বর পেয়ে যাচ্ছেন—এটাই হ্যাশ ম্যাপের কাজ। ২....

Rust-এ Strings এবং UTF-8 এনকোডিং-এর সহজ গাইড

Introduction আজকের এই আলোচনায় আমরা শিখবো Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে Strings কীভাবে কাজ করে। আমরা অনেকেই অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজে স্ট্রিং ব্যবহার করেছি, কিন্তু Rust-এ এটি একটু আলাদা এবং অনেক বেশি শক্তিশালী। বিশেষ করে UTF-8 এনকোডিং ব্যবহার করার কারণে এটি বিশ্বের যেকোনো ভাষা (যেমন- বাংলা, হিন্দি, জাপানিজ) খুব সহজেই বুঝতে পারে। চলুন সহজভাবে এই বিষয়গুলো দেখে নেওয়া যাক। ১. UTF-8 এনকোডিং এবং স্ট্রিং কী? ভিডিও রেফারেন্স: [ 00:55 ] Rust-এ স্ট্রিংগুলো মূলত UTF-8 encoded । আগেকার সময়ে 'ASCII' এনকোডিং ব্যবহার করা হতো যেখানে একটি অক্ষরের জন্য ১ বাইট জায়গা লাগতো, যার ফলে শুধু ইংরেজি অক্ষর রাখা যেত। কিন্তু UTF-8-এ একটি অক্ষরের জন্য ১ থেকে ৪ বাইট পর্যন্ত জায়গা লাগতে পারে। এর সুবিধা হলো, আমরা শুধু ইংরেজি নয়, বরং বাংলা, ইমোজি বা যেকোনো ভাষা স্ট্রিং হিসেবে সেভ করতে পারি। UTF-8: এটি একটি আন্তর্জাতিক স্ট্যান্ডার্ড যা পৃথিবীর সব বর্ণমালার অক্ষরকে কম্পিউটারের বোঝার উপযোগী করে তোলে। Encoding: সহজ ভাষায়, মানুষের ভাষাকে কম্পিউটারের ভাষায় (বাইনারি/নাম্বার) রূপান্তর করার পদ্ধতি। ২...

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

Introduction: এই ভিডিওটিতে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ 'Collections' নিয়ে আলোচনা করা হয়েছে। বিশেষ করে এখানে 'Vectors' সম্পর্কে বিস্তারিত জানানো হয়েছে। আমরা শিখব কীভাবে একই ধরনের অনেকগুলো ডেটাকে একসাথে স্টোর করা যায় এবং প্রয়োজন অনুযায়ী সেই ডেটার পরিমাণ বাড়ানো বা কমানো যায়। যারা নতুন কোডিং শিখছেন, তাদের জন্য এই ভিডিওটি একটি চমৎকার গাইড। ১. কালেকশন এবং ভেক্টর কী? (What are Collections and Vectors?) রেফারেন্স: [ 00:23 ] বিস্তারিত: Rust-এর স্ট্যান্ডার্ড লাইব্রেরিতে কিছু ডেটা স্ট্রাকচার থাকে যেগুলোকে 'Collections' বলা হয়। সাধারণ ভেরিয়েবলে আমরা একটি মাত্র ভ্যালু রাখতে পারি, কিন্তু কালেকশনে অনেকগুলো ভ্যালু একসাথে রাখা যায়। ভেক্টর (Vector) হলো এমন একটি কালেকশন যা অনেকটা 'Array'-এর মতো কিন্তু এটি আকারে বড় বা ছোট হতে পারে (Growable)। সহজ ব্যাখ্যা: মনে করুন আপনার কাছে একটি ঝুড়ি আছে। সাধারণ ভেরিয়েবল মানে সেই ঝুড়িতে শুধু একটি আম রাখা যাবে। আর 'Vector' মানে হলো এমন এক জাদুর ঝুড়ি যেখানে আপনি চাইলে একটা আম রাখতে পারেন, আব...

Rust-এ মডিউল, স্কোপ এবং প্রাইভেসি কন্ট্রোল করার সহজ নিয়ম

ইন্ট্রোডাকশন: এই ভিডিওতে মূলত Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের "মডিউল সিস্টেম" নিয়ে আলোচনা করা হয়েছে। বড় বড় প্রোজেক্টে যখন হাজার হাজার লাইন কোড থাকে, তখন সেগুলোকে আলাদা আলাদা ফাইল বা ফোল্ডারে গুছিয়ে রাখা এবং কোন কোডটি বাইরের মানুষ দেখতে পারবে বা পারবে না (Privacy) তা নিয়ন্ত্রণ করা শিখিয়েছেন পীযূষ গর্গ। এটি মূলত Rust Book-এর একটি চ্যাপ্টারের সহজ ব্যাখ্যা। মডিউল চিট শিট (Module Cheat Sheet) ভিডিও রেফারেন্স: [ 00:21 ] মডিউল সিস্টেম বোঝার জন্য কিছু বেসিক রুলস আছে যা শুরুতে জেনে নেওয়া ভালো: Crate Root: যখন আমরা কোড কম্পাইল করি, Rust প্রথমে src/main.rs (বাইনারি ক্রেটের জন্য) অথবা src/lib.rs (লাইব্রেরি ক্রেটের জন্য) ফাইলে খোঁজে। Declaring Modules: কোডের ভেতর mod garden; লিখলে Rust বুঝে নেয় যে garden নামে একটি মডিউল আছে। এটি হয় ওই ফাইলের ভেতরেই থাকতে হবে অথবা garden.rs নামে আলাদা ফাইলে থাকতে হবে। Sub-modules: মডিউলের ভেতর আরও মডিউল থাকতে পারে। যেমন বাগানের ভেতর সবজি ( mod vegetables; ) থাকতে পারে। সহজ ভাষায় ব্যাখ্যা: মডিউল হলো একটি ড্রয়ারের মতো। আপনি আপনার জামা...

Rust ল্যাঙ্গুয়েজে if let ব্যবহার করে কোড ছোট করার নিয়ম

Introduction সবাইকে স্বাগতম! আজকের এই কন্টেন্টে আমরা Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি চমৎকার ফিচার if let সম্পর্কে জানব। এর আগের ভিডিও বা আলোচনায় হয়তো আপনারা match স্টেটমেন্ট সম্পর্কে জেনেছেন। match খুব শক্তিশালী হলেও মাঝে মাঝে এটি কোডকে অনেক বড় বা জটিল করে ফেলে, বিশেষ করে যখন আমরা শুধু একটি নির্দিষ্ট কন্ডিশন চেক করতে চাই। এই সমস্যা সমাধান করতেই Rust-এ if let আনা হয়েছে। এটি আপনার কোডকে আরও ছোট, পরিষ্কার এবং পড়তে সহজ করে তোলে। মূলত কম পরিশ্রমে বেশি কাজ করার জন্যই এই টেকনিকটি ব্যবহার করা হয়। ১. if let কি এবং কেন ব্যবহার করবেন? প্রথমে আমরা বুঝব কেন আমাদের if let দরকার। ধরুন আপনার কাছে একটি Option টাইপ ভ্যালু আছে (যা হয় Some হবে অথবা None )। আপনি শুধু চাচ্ছেন যদি ভ্যালুটি Some হয় তবেই কিছু একটা প্রিন্ট করবেন, আর None হলে কিছুই করবেন না। ভিডিও রেফারেন্স: [ 00:24 ] বিস্তারিত আলোচনা: সাধারণত আমরা যখন match ব্যবহার করি, তখন আমাদের সবকটি সম্ভাবনা (যেমন Some এবং None উভয়ই) হ্যান্ডেল করতে হয়। যদি আমরা None এর জন্য কিছু করতে নাও চাই, তাও আমাদের কোডে সেটি লিখতে হয়, নাহলে Ru...

রাস্ট প্রোগ্রামে প্যাকেজ এবং মডিউল দিয়ে কোড গুছিয়ে রাখা

রাস্ট (Rust) ল্যাঙ্গুয়েজে বড় প্রজেক্ট তৈরি করার সময় কোড যেন অগোছালো না হয়ে যায়, সেজন্য প্যাকেজ, ক্রেট (Crates) এবং মডিউল ব্যবহার করা হয়। এই ভিডিওতে পিয়ুষ গর্গ খুব সহজভাবে বুঝিয়েছেন কীভাবে আপনার রাস্ট কোডকে বিভিন্ন পার্ট বা মডিউলে ভাগ করে সুন্দরভাবে সাজানো যায়। বিশেষ করে জাভাস্ক্রিপ্ট ব্যাকগ্রাউন্ড থেকে যারা এসেছেন, তাদের জন্য রাস্টের এই মডিউল সিস্টেম কিছুটা আলাদা মনে হতে পারে, কিন্তু একবার বুঝে গেলে এটি অত্যন্ত শক্তিশালী। মডিউল সিস্টেমের মূল ধারণা (Introduction to Module System) ভিডিও রেফারেন্স: [ 05:09 ] যখন আমাদের কোড বড় হতে থাকে, তখন একটি ফাইলে সব কোড রাখা অসম্ভব হয়ে পড়ে। রাস্টের মডিউল সিস্টেম আমাদের কোডকে ছোট ছোট লজিক্যাল অংশে ভাগ করতে সাহায্য করে। এর মূল ৪টি উপাদান হলো: Packages: এটি একটি কার্গো ফিচার যা আপনাকে আপনার কোড বিল্ড এবং শেয়ার করতে দেয়। Crates: মডিউলের একটি গাছ (tree) যা থেকে লাইব্রেরি বা এক্সিকিউটেবল ফাইল তৈরি হয়। Modules: এটি কোডের অর্গানাইজেশন এবং প্রাইভেসি কন্ট্রোল করে। Paths: কোনো আইটেম (যেমন স্ট্রাক্ট বা ফাংশন) খুঁজে বের করার রাস্তা। প্যাকেজ ...

Rust ল্যাঙ্গুয়েজে Match কন্ট্রোল ফ্লো অপারেটরের সহজ ব্যবহার

Introduction: আজকের ব্লগে আমরা Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি অত্যন্ত শক্তিশালী ফিচার "Match" (ম্যাচ) নিয়ে কথা বলবো। আগের পর্বে আমরা Enum (ইনাম) সম্পর্কে জেনেছিলাম। এই ভিডিওতে পিয়ুষ গর্গ শিখিয়েছেন কীভাবে সেই Enum-এর বিভিন্ন অপশন বা ভ্যারিয়েন্টের সাথে মিলিয়ে আমরা আমাদের কোডকে ভিন্ন ভিন্ন পথে চালাতে পারি। সহজ কথায়, Match হচ্ছে এমন একটা সিস্টেম যা কোনো একটা ভ্যালুর ওপর ভিত্তি করে সিদ্ধান্ত নেয় যে কোডের কোন অংশটি রান করবে। এটি অনেকটা ‘Switch Case’ এর মতো হলেও Rust-এ এটি অনেক বেশি নিরাপদ এবং স্মার্ট। Match কন্ট্রোল ফ্লো কি? রেফারেন্স: [ 00:31 ] Match হলো একটি কন্ট্রোল ফ্লো কনস্ট্রাক্ট। এর কাজ হলো কোনো একটা ভ্যালুকে অনেকগুলো "প্যাটার্ন" বা শর্তের সাথে তুলনা করা। যখনই কোনো প্যাটার্ন মিলে যায়, তখন সেই প্যাটার্নের জন্য নির্দিষ্ট করা কোডটুকু কাজ করে। সহজ উদাহরণ: পিয়ুষ এখানে একটি কয়েন সর্টিং মেশিনের (Coin Sorting Machine) উদাহরণ দিয়েছেন। ধরুন একটি মেশিনে আপনি কয়েন ফেললেন। মেশিনে বিভিন্ন সাইজের ফুটো আছে। কয়েনটি গড়িয়ে গড়িয়ে যাবে এবং প্রথম যে ফুটোতে সে ফিট হবে, সেখানে...

Rust-এ Enum এবং Option টাইপ বোঝা সহজ ভাষায়

এই ভিডিওতে আমরা জানব Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের খুবই গুরুত্বপূর্ণ এবং শক্তিশালী একটি কনসেপ্ট— Enum (ইনুম) । যারা অন্য ল্যাঙ্গুয়েজ থেকে এসেছেন বা একদম নতুন, সবার জন্যই এটি খুব কাজের। ভিডিওটি মূলত Rust Book-এর ওপর ভিত্তি করে তৈরি করা হয়েছে, যেখানে Enum কী, কেন এটি স্ট্রাক্টের (Struct) চেয়ে আলাদা এবং কীভাবে Option টাইপ ব্যবহার করে এরর কমানো যায়, তা শেখানো হয়েছে। ১. Enum বা Enumeration কী? প্রথমে জানা দরকার Enum আসলে কী। সহজ কথায়, যখন কোনো জিনিসের মান বা ধরন একটি নির্দিষ্ট তালিকার মধ্যে সীমাবদ্ধ থাকে, তখন আমরা Enum ব্যবহার করি। ভিডিও রেফারেন্স: [ 00:31 ] বিস্তারিত ব্যাখ্যা: Enum-এর পুরো নাম হলো Enumeration । এটি আপনাকে এমন একটি ডাটা টাইপ তৈরি করতে দেয় যার কয়েকটি নির্দিষ্ট Variants (ভেরিয়েন্ট) বা রূপ থাকতে পারে। ধরুন, আপনি জ্যামিতিক শেপ নিয়ে কাজ করছেন। একটি শেপ হয় ‘Circle’ হবে, না হয় ‘Square’ হবে অথবা ‘Triangle’ হবে। এই তিনটি ছাড়া অন্য কিছু হওয়ার সুযোগ নেই। এইরকম পরিস্থিতিতে Enum সবচেয়ে ভালো কাজ করে। কঠিন শব্দের সহজ অর্থ: Variant (ভেরিয়েন্ট): কোনো জিনিসের বিভিন্ন রূপ বা অপশ...

Rust-এ মেথড সিনট্যাক্স এবং এসোসিয়েটেড ফাংশন এর সহজ গাইড

এই ভিডিওতে পিয়ুষ গর্গ আমাদের শিখিয়েছেন কীভাবে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে Struct -এর সাথে Methods এবং Associated Functions ব্যবহার করতে হয়। সহজ কথায়, কোনো একটি ডাটা স্ট্রাকচারের সাথে সম্পর্কিত কাজগুলোকে কীভাবে গুছিয়ে লেখা যায়, সেটাই এখানে দেখানো হয়েছে। ১. মেথড কী এবং ফাংশনের সাথে এর পার্থক্য ভিডিওর শুরুতে মেথড সম্পর্কে ধারণা দেওয়া হয়েছে। ভিডিও রেফারেন্স: [ 00:20 ] বিস্তারিত আলোচনা: মেথড অনেকটা সাধারণ ফাংশনের মতোই, যা fn কিওয়ার্ড দিয়ে শুরু হয়। কিন্তু মূল পার্থক্য হলো, মেথড সবসময় একটি Struct -এর ভেতর ডিফাইন করা হয়। ফাংশন: এটি স্বাধীনভাবে যেকোনো জায়গায় থাকতে পারে। মেথড: এটি একটি নির্দিষ্ট জিনিসের (Struct) ভেতরে থাকে এবং সেই জিনিসের ডাটা নিয়ে কাজ করে। সহজ কথায়: ফাংশন হলো একটি সাধারণ কাজ, আর মেথড হলো কোনো নির্দিষ্ট বস্তুর নিজস্ব কাজ। যেমন: "খাওয়া" একটি কাজ (ফাংশন), কিন্তু "বিড়ালের খাওয়া" হলো বিড়ালের একটি মেথড। কঠিন শব্দের ব্যাখ্যা: * Context (কনটেক্সট): মানে হলো পরিপ্রেক্ষিত বা কার অধীনে আছে। এখানে মেথড Struct-এর অধীনে থাকে। ২. im...

Rust-এ Structs ব্যবহার করে সহজ প্রোগ্রাম তৈরি এবং ডিবাগিং করার নিয়ম

আজকের এই আলোচনায় আমরা শিখব কীভাবে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে Structs ব্যবহার করে কোডকে আরও গোছানো এবং সুন্দর করা যায়। সাধারণত যখন আমরা কোনো ডেটা নিয়ে কাজ করি, তখন অনেকগুলো এলোমেলো ভেরিয়েবল ব্যবহার না করে সেগুলোকে একটি নির্দিষ্ট কাঠামোর মধ্যে আনাই হলো Structs-এর আসল কাজ। আমরা একটি আয়তক্ষেত্রের (Rectangle) ক্ষেত্রফল বের করার উদাহরণের মাধ্যমে এটি সহজভাবে বুঝব। ১. সাধারণ ফাংশন থেকে Struct-এর দিকে যাত্রা ভিডিও রেফারেন্স: [ 00:45 ] শুরুতে আমরা যদি একটি আয়তক্ষেত্রের ক্ষেত্রফল বের করতে চাই, তবে সাধারণত দুটি আলাদা ভেরিয়েবল (প্রস্থ বা width এবং উচ্চতা বা height) ব্যবহার করি। কোড উদাহরণ: Rust fn calculate_area(width: u32, height: u32) -> u32 { width * height } fn main() { let w = 100; let h = 200; let area = calculate_area(w, h); println!("আয়তক্ষেত্রের ক্ষেত্রফল হলো: {}", area); } ব্যাখ্যা: এই কোডটি কাজ করলেও এতে একটি সমস্যা আছে। width এবং height সম্পূর্ণ আলাদা দুটি ভেরিয়েবল। এদের মধ্যে যে কোনো সম্পর্ক আছে, তা কোড দেখে বোঝা কঠিন। এছাড়া ফাংশনে ভুল ...

Rust ল্যাঙ্গুয়েজে Structs বা ডাটা স্ট্রাকচার ব্যবহারের সহজ গাইড

এই ভিডিওতে পিয়ুষ গর্গ Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি অত্যন্ত গুরুত্বপূর্ণ বিষয় Structs (স্ট্রাক্টস) নিয়ে আলোচনা করেছেন। সহজ কথায় বলতে গেলে, কীভাবে আমরা আমাদের প্রয়োজন মতো কাস্টম ডাটা টাইপ তৈরি করতে পারি এবং সেগুলোকে গুছিয়ে রাখতে পারি, সেটাই এই ভিডিওর মূল বিষয়। যারা আগে জাভাস্ক্রিপ্ট বা অন্য কোনো অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজ ব্যবহার করেছেন, তাদের জন্য এটি বোঝা আরও সহজ হবে। ১. Structs কী এবং কেন ব্যবহার করবেন? Structs হলো একটি কাস্টম ডাটা টাইপ। এটি ব্যবহার করে আপনি অনেকগুলো সম্পর্কিত ডাটাকে একটি নির্দিষ্ট গ্রুপ বা প্যাকেজের মধ্যে রাখতে পারেন। অনেকটা একটি ফর্ম বা প্রোফাইলের মতো, যেখানে একজনের নাম, বয়স এবং ইমেল সব একসাথে থাকে। ভিডিও রেফারেন্স: ভিডিওর শুরুতে [ 00:05 ] থেকে [ 01:10 ] পর্যন্ত স্ট্রাক্টের সংজ্ঞা এবং প্রয়োজনীয়তা নিয়ে বলা হয়েছে। বিস্তারিত আলোচনা: মনে করুন, আপনার কাছে একজন ইউজারের তথ্য আছে। এখন আপনি যদি আলাদা আলাদা ভেরিয়েবল ব্যবহার করেন (যেমন: user_name , user_email ), তবে কোডটি এলোমেলো হয়ে যাবে। Struct ব্যবহার করলে আপনি User নামে একটি ছাঁচ তৈরি করতে পারেন, যার ভ...

Rust-এ Slice টাইপ এবং মেমোরি সেফটি নিয়ে বিস্তারিত আলোচনা

এই ভিডিওতে পিয়ুষ গর্গ Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের একটি গুরুত্বপূর্ণ কনসেপ্ট 'Slice' নিয়ে কথা বলেছেন। আমরা সাধারণত যখন বড় কোনো ডেটা বা কালেকশন (যেমন: String বা Array) নিয়ে কাজ করি, তখন অনেক সময় পুরো ডেটাটার প্রয়োজন হয় না, শুধু একটা নির্দিষ্ট অংশের প্রয়োজন হয়। এই নির্দিষ্ট অংশকে নিরাপদে এবং মেমোরি বাঁচিয়ে ব্যবহার করার পদ্ধতিই হলো Slice। ভিডিওতে কোডের মাধ্যমে দেখানো হয়েছে কীভাবে Slice ব্যবহার করলে আমাদের প্রোগ্রামে বাগ (error) কম হয় এবং ডেটা ইনভ্যালিড হওয়ার ভয় থাকে না। ১. স্লাইস (Slice) আসলে কী? স্লাইস হলো কোনো একটি কালেকশনের (যেমন String বা Array) একটা নির্দিষ্ট অংশের রেফারেন্স। রেফারেন্স (Reference): সহজ ভাষায়, রেফারেন্স মানে হলো অরিজিনাল জিনিসের মালিকানা না নিয়ে শুধু সেটাকে দেখার বা ব্যবহার করার অনুমতি নেওয়া। রেফারেন্স ভিডিও: [ 00:26 ] ভিডিওতে বলা হয়েছে, স্লাইস কোনো ডেটার মালিকানা (Ownership) নেয় না। এটি কেবল মেমোরিতে থাকা ডেটার একটি নির্দিষ্ট সীমানা (Sequence) নির্দেশ করে। সহজ ব্যাখ্যা: ধরুন আপনার কাছে একটা পুরো পাউরুটি আছে। আপনি যদি পুরোটা না খেয়ে মাত্র দুই টুকরো...

Rust-এ References এবং Borrowing-এর সহজ গাইড

Introduction আজকের এই ব্লগে আমরা Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের খুবই গুরুত্বপূর্ণ দুটি কনসেপ্ট— References (রেফারেন্স) এবং Borrowing (বরোয়িং) নিয়ে আলোচনা করব। আগের পর্বে আমরা জেনেছিলাম Rust কীভাবে ওনারশিপ (Ownership) ব্যবহার করে মেমোরি ম্যানেজ করে। কিন্তু বারবার ওনারশিপ হাতবদল করা বেশ ঝামেলার কাজ। এই ঝামেলা এড়াতেই রেফারেন্স এবং বরোয়িংয়ের জন্ম। সহজ কথায় বলতে গেলে, কারো থেকে কোনো জিনিস মালিকানা না নিয়ে শুধু ব্যবহারের জন্য ধার নেওয়াটাই হলো এই কনসেপ্টের মূল ভিত্তি। ১. রেফারেন্স (References) কি এবং কেন? রেফারেন্স মানে হলো কোনো ডেটার অরিজিনাল মালিকানা না নিয়ে তার ঠিকানাকে ব্যবহার করা। Rust-এ এটি & (Ampersand) চিহ্ন দিয়ে প্রকাশ করা হয়। রেফারেন্স ভিডিও লিংক: [ 00:21 ] বিস্তারিত আলোচনা: যখন আমরা কোনো ফাংশনে ভেরিয়েবল পাঠাই, তখন ওনারশিপ চলে যায়। ফলে ফাংশন শেষ হওয়ার পর সেই ভেরিয়েবল আর ব্যবহার করা যায় না। কিন্তু আমরা যদি ওনারশিপ না দিয়ে শুধু ডেটা ব্যবহারের অনুমতি দেই, তবে তাকেই রেফারেন্স বলে। একে অনেকটা 'পয়েন্টার' এর মতো ভাবা যেতে পারে যা মেমোরির একটি নির্দিষ্ট ঠিকানাকে নির্দ...

Rust ল্যাঙ্গুয়েজে ওনারশিপ (Ownership) শেখার সহজ গাইড

Introduction হ্যালো! আজকের এই আলোচনায় আমরা Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের সবথেকে গুরুত্বপূর্ণ এবং ইউনিক একটি কনসেপ্ট নিয়ে কথা বলব, যার নাম হলো ওনারশিপ (Ownership) । আপনি যদি আগে C++, Java বা Python ব্যবহার করে থাকেন, তবে দেখবেন Rust একটু আলাদাভাবে কাজ করে। এই ভিডিওতে পীযূষ গর্গ খুব সহজভাবে বুঝিয়েছেন কীভাবে Rust মেমোরি ম্যানেজ করে কোনো 'গারবেজ কালেক্টর' ছাড়াই। সহজ কথায়, ওনারশিপ হলো কিছু নিয়মের সেট যা ঠিক করে আপনার কম্পিউটার প্রোগ্রাম কীভাবে মেমোরি ব্যবহার করবে। ১. ওনারশিপ কী এবং কেন এটি প্রয়োজন? রেফারেন্স: [ 00:35 ] অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজে মেমোরি ম্যানেজ করার দুটি প্রধান উপায় থাকে: Garbage Collector (GC): যেমন Java বা Python-এ থাকে। এটি নিজে নিজেই খুঁজে বের করে কোন মেমোরি আর দরকার নেই এবং তা পরিষ্কার করে। এতে প্রোগ্রামের গতি কিছুটা কমে যেতে পারে। Manual Memory Management: যেমন C বা C++ এ। এখানে প্রোগ্রামারকে নিজেকেই মেমোরি নিতে হয় এবং কাজ শেষে তা ফেরত দিতে হয়। ভুল করলে মেমোরি লিক হওয়ার ভয় থাকে। Rust-এর উপায়: Rust তৃতীয় একটি পথ বেছে নিয়েছে। এটি Owner...

Rust ল্যাঙ্গুয়েজে কন্ট্রোল ফ্লো বা কোড চালানোর নিয়মাবলী

এই কন্টেন্টটি মূলত Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের Control Flow (কন্ট্রোল ফ্লো) নিয়ে। সহজ কথায়, একটি প্রোগ্রাম কখন কোন কোডটুকু চালাবে এবং কোন কাজ বারবার করবে, তা নিয়ন্ত্রণ করাই হলো কন্ট্রোল ফ্লো। আমরা এই ভিডিও এবং আলোচনার মাধ্যমে শিখব কীভাবে if-else ব্যবহার করতে হয় এবং Rust-এ কত ধরণের লুপ ( loop , while , for ) আছে। ১. ইফ-এলস এক্সপ্রেশন (If-Else Expressions) রেফারেন্স: [ 00:41 ] Rust-এ কোনো শর্তের ওপর ভিত্তি করে কোড চালানোর জন্য if ব্যবহার করা হয়। যদি শর্তটি সত্য হয়, তবে কোডটি চলে; না হলে else ব্লকের কোডটি চলে। বিস্তারিত আলোচনা: অন্যান্য অনেক ল্যাঙ্গুয়েজে (যেমন জাভাস্ক্রিপ্ট) যেকোনো মানকে সত্য বা মিথ্যা ধরা যায়, কিন্তু Rust খুব কড়া। এখানে if -এর ভেতরের শর্তটিকে অবশ্যই Boolean (বুলিয়ান) হতে হবে। অর্থাৎ এর উত্তর শুধু 'হ্যাঁ' (True) বা 'না' (False) হতে পারবে। আপনি সরাসরি কোনো নাম্বার (যেমন if 1 ) দিয়ে শর্ত চেক করতে পারবেন না। সহজ ব্যাখ্যা: ধরুন, আপনি দোকানে যাবেন যদি বৃষ্টি না হয়। এখানে "বৃষ্টি না হওয়া" হলো শর্ত। কঠিন শব্দ: * Boolean (বুলিয়ান):...

রাস্ট ল্যাঙ্গুয়েজে ফাংশন এর সহজ পাঠ

Introduction: সবাইকে স্বাগতম! আজকের এই কন্টেন্টে আমরা রাস্ট (Rust) প্রোগ্রামিং ল্যাঙ্গুয়েজের অন্যতম গুরুত্বপূর্ণ একটি বিষয়— ফাংশন (Functions) সম্পর্কে শিখবো। সহজ কথায় বলতে গেলে, ফাংশন হলো কিছু কোডের সমষ্টি যা নির্দিষ্ট কোনো কাজ করার জন্য তৈরি করা হয়। আমরা জানবো কীভাবে ফাংশন লিখতে হয়, কীভাবে ডাটা পাস করতে হয় এবং ফাংশন থেকে কীভাবে কোনো রেজাল্ট ফেরত বা 'রিটার্ন' নিতে হয়। ১. ফাংশন এবং মেইন (Main) ফাংশন কি? ভিডিও রেফারেন্স: [ 00:16 ] রাস্ট ল্যাঙ্গুয়েজে ফাংশন খুব বেশি ব্যবহৃত হয়। আপনি যখনই একটি রাস্ট প্রোগ্রাম লিখবেন, সেখানে অন্তত একটি ফাংশন থাকতেই হবে, যার নাম হলো main ফাংশন। এটি হলো প্রোগ্রামের শুরু বা এন্ট্রি পয়েন্ট। বিস্তারিত: ফাংশন বানানোর জন্য রাস্ট-এ fn কিওয়ার্ড ব্যবহার করা হয়। মনে রাখবেন, রাস্ট-এ ফাংশনের নাম লেখার সময় Snake Case (যেমন: my_function_name ) ফলো করা ভালো। মানে সব অক্ষর ছোট হাতের হবে এবং শব্দগুলোর মাঝখানে আন্ডারস্কোর ( _ ) থাকবে। সহজ ব্যাখা (Snake Case): এটি কোড লেখার একটি স্টাইল। যেমন আমরা সাধারণত "MyFunction" লিখি, কিন্তু স্নেক কেসে এ...