Thursday, August 3, 2017

কিভাবে মার্শাল আর্টের ধারণা আপনাকে জাভাতে মাস্টার হতে সাহায্য করে? (How martial art helps you to master Java)

Shu, Ha, Ri এই শব্দ তিনটি এসেছে জাপানি মার্শাল আর্টসের কনসেপ্ট থেকে। এটি সাধারণত কোনো কিছু শেখার ক্ষেত্রে ব্যবহার করা হয়। শব্দ তিনটির অর্থ করলে দাঁড়ায় - 

১. shu (守) "protect", "obey" বা মান্য করা
২. ha (破) "detach", "digress", “break” ভাঙ্গা বা বিচ্ছিন্ন করা 
৩. ri (離) "leave", "separate" আলাদা হওয়া 

জাভা প্রোগ্রামিং শেখার ক্ষেত্রে এই তিনটি ধারণা ব্যবহার করা যেতে পারে। কীভাবে তা নিয়েই এই আলোচনা- 

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

অর্থাৎ প্রথমে কী করতে হবে এবং এগুলো কীভাবে করতে হয় এগুলো নিয়ে বেশি মনোযোগী হওয়া উচিৎ, এ পর্যায়ে প্রত্যেকটি বিষয়ের অন্তর্নিহিত তত্ত্ব সম্পর্কে চিন্তা না করলেও চলবে।

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

এগুলো নিয়ে নানা ধরণের পরীক্ষা-নিরীক্ষা করা, কোড লিখে রান করে দেখা এই পর্যায়ের কাজ। এখানে শিক্ষার্থীরা শুধুমাত্র একটি বই না পড়ে অনেক ধরণের বই পড়তে শুরু করতে পারে। অনেক ব্লগের আর্টিকেল বা ইউটিউব থেকে বিভিন্ন লেকচার বা ওয়ার্কশপ থেকেও শেখা যেতে পারে। 

তৃতীয়ত রু, এই পর্যায়ে শিক্ষার্থী অন্যদের কাছে না শিখে বরং নিজেই নিজের কাছে শিখতে শুরু করে নিজের অনুশীলনের মাধ্যমে। এই পর্যায়ে নিজস্ব স্বকীয়তা তৈরি হয়। যেমন -

- কীভাবে কোড লিখবে, কোডটি ফাংশনাল বা অবজেক্ট ওরিয়েন্টেড হবে কিনা,
- ল্যামডা এক্সপ্রেশন ব্যবহার করা হবে নাকি হবে না,
- জাভা এন্টারপ্রাইজ এডিশন ব্যবহার করবে নাকি স্প্রিং ফ্রেমওয়ার্ক ব্যবহার করবে,
- হাইবারনেট ব্যবহার করবো নাকি Plain JDBC দিয়ে কাজ করা যাবে

ইত্যাদি ব্যাপারে নিজস্ব মতামত তৈরি হয়।