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

জাভা প্রোগ্রামিংয়ের নতুন চমক: লোকাল ভেরিয়েবল ডিক্লেয়ারেশন এবং ক্লোজিং

Introduction

বন্ধুরা, কেমন আছো সবাই? আজকে আমরা জাভা প্রোগ্রামিংয়ের খুব চমৎকার এবং আধুনিক একটি বিষয় নিয়ে আলোচনা করবো। আমরা যারা কোডিং করি, তারা জানি যে কোড যত ছোট এবং পরিষ্কার (Clean) হয়, কাজ করতে তত সুবিধা হয়। এই ভিডিওতে জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গ্যাটস (Brian Goetz) আমাদের জানাচ্ছেন যে, জাভাতে এখন ভেরিয়েবল ডিক্লেয়ার করা বা তৈরি করা আরও কত সহজ হতে যাচ্ছে। বিশেষ করে 'Enhanced Local Variable Declarations' বা 'Imperative Pattern Matching' নিয়ে এখানে বিস্তারিত বলা হয়েছে। সহজ কথায়, আগে যে কাজ করতে আমাদের অনেক লাইন কোড লিখতে হতো, এখন তা এক লাইনেই সম্ভব!


১. এনহ্যান্সড লোকাল ভেরিয়েবল ডিক্লেয়ারেশন (Enhanced Local Variable Declarations)

ভিডিওর [42:08] থেকে [46:15] অংশে এই বিষয়টি নিয়ে আলোচনা করা হয়েছে। আগে যখন আমরা কোনো অবজেক্ট বা রেকর্ড থেকে ডাটা বের করতে চাইতাম, তখন আমাদের আলাদা আলাদা করে মেথড কল করতে হতো। কিন্তু নতুন এই ফিচারে আমরা ভেরিয়েবল ডিক্লেয়ার করার সময়ই সরাসরি ডাটাগুলোকে আলাদা করে নিতে পারবো।

ভিডিও রেফারেন্স: [42:58]

সহজ ব্যাখ্যা: মনে করো তোমার কাছে একটা 'Point' নামের রেকর্ড আছে যাতে x এবং y এর মান আছে। আগে আমাদের পুরো পয়েন্টটা নিতে হতো, তারপর point.x() এবং point.y() দিয়ে মান বের করতে হতো। এখন আমরা সরাসরি বলতে পারবো: "এই পয়েন্টের ভেতর থেকে x আর y-কে বের করে দাও"।

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

  • Enhanced (এনহ্যান্সড): কোনো কিছুর উন্নত বা শক্তিশালী সংস্করণ।

  • Local Variable (লোকাল ভেরিয়েবল): কোডের কোনো নির্দিষ্ট ব্লকের ভেতর (যেমন একটি ফাংশনের ভেতর) যে ভেরিয়েবলগুলো কাজ করে।


২. ইম্পারেটিভ প্যাটার্ন ম্যাচিং (Imperative Pattern Matching)

ব্রায়ান এটাকে 'Imperative Pattern Matching' হিসেবেও উল্লেখ করেছেন। এর মানে হলো, আমরা এখন আর শুধু if বা switch এর ভেতরেই প্যাটার্ন ম্যাচিং সীমাবদ্ধ রাখবো না।

ভিডিও রেফারেন্স: [43:56]

বিস্তারিত আলোচনা: আগে আমাদের লিখতে হতো if (obj instanceof Point p), অর্থাৎ যদি অবজেক্টটি পয়েন্ট হয় তবেই কাজ করো। কিন্তু যদি আমরা নিশ্চিত থাকি যে ডান পাশের ডাটাটি অবশ্যই একটি রেকর্ড, তবে অযথা if ব্যবহার করার দরকার নেই। জাভার নতুন এই আপডেট আমাদের সেই স্বাধীনতা দিচ্ছে।

কোডিং উদাহরণ (সহজ ফরম্যাট):

Java

// ধরি আমাদের একটি রেকর্ড আছে
record Point(int x, int y) {}

// নতুন পদ্ধতিতে এক লাইনে ভেরিয়েবল ডিক্লেয়ার এবং ডাটা বের করা
Point(var x, var y) = getPoint(); 

// এখন আমরা সরাসরি x এবং y ব্যবহার করতে পারবো
System.out.println("X এর মান: " + x);
System.out.println("Y এর মান: " + y); 

এই কোড থেকে আমরা কী পেলাম? আগে আমাদের var p = getPoint(); লিখে তারপর int x = p.x(); লিখতে হতো। এখন সরাসরি Point(var x, var y) লিখে আমরা কোডের লাইন কমিয়ে ফেললাম এবং কোডটি পড়তে অনেক সহজ হয়ে গেল।


৩. কোডের জটিলতা কমানো এবং ক্লিনিং

ভিডিওর এই অংশে বলা হয়েছে যে, তারা প্রায় ১৪ রকমের সিনট্যাক্স (লেখার ধরণ) পরীক্ষা করেছেন যাতে প্রোগ্রামারদের জন্য এটি সবচেয়ে সহজ হয়।

ভিডিও রেফারেন্স: [44:34]

আমার চিন্তাভাবনা: প্রোগ্রামিংয়ের মূল লক্ষ্য হলো কম লিখে বেশি কাজ করা। জাভা আগে অনেক বেশি "Boilerplate code" (একই ধরণের কোড বারবার লেখা) এর জন্য পরিচিত ছিল। কিন্তু এই ফিচারের ফলে জাভা এখন পাইথন বা আধুনিক অন্যান্য ল্যাঙ্গুয়েজের মতোই দ্রুত কোডিং করার সুবিধা দিচ্ছে। একজন বিগিনার হিসেবে তোমার জন্য এটি দারুণ খবর, কারণ তোমাকে এখন অনেক কম টাইপ করতে হবে!

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

  • Syntax (সিনট্যাক্স): একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ লেখার নির্দিষ্ট নিয়ম বা ব্যাকরণ।

  • Boilerplate (বয়লারপ্লেট): এমন কিছু কোড যা বারবার লিখতে হয় কিন্তু মূল লজিকের সাথে সরাসরি যুক্ত নয়।


Analysis & Final Thinking

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

বাস্তবসম্মত ধারণা: বাস্তব জীবনে যখন আমরা কোনো বড় প্রজেক্টে কাজ করি, তখন হাজার হাজার লাইনের কোড হ্যান্ডেল করতে হয়। এই নতুন ফিচারটি কোডের "Noise" বা অপ্রয়োজনীয় অংশ কমিয়ে দেবে। এর ফলে অন্য কেউ যখন তোমার কোড পড়বে, সে খুব সহজেই বুঝতে পারবে তুমি কী করতে চেয়েছ।

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


আপনার কি এই টপিক নিয়ে আর কোনো প্রশ্ন আছে? চাইলে যেকোনো কঠিন শব্দ নিয়ে জিজ্ঞেস করতে পারেন!

[

Carrier Classes & Discussing Syntax - Inside Java Podcast 52

Java · 3K views

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

মন্তব্যসমূহ

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

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

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

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

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

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

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