30 June, 2019

সফটওয়ার ডেভেলপমেন্টে বিভিন্ন ফ্রেমওয়ার্ক বা লাইব্রেরী গুলোর প্রয়োজনীয়তা কি?

প্রোগ্রামিং বা সফটওয়ার ডেভেলপমেন্ট করেন যারা, তারা বেশির ভাগ সময়ই নিজ নিজ ডোমাইন অনুযায়ী বিভিন্ন ফ্রেমওয়ার্ক বা লাইব্রেরী ইউজ করে থাকেন।এন্ড্রয়েড, আইওএস, ওয়েব থেকে আইওটি বা গেম ডেভেলপমেন্ট সব ক্ষেত্রেই ফ্রেমওয়ার্ক বা লাইব্রেরীর বহুল ব্যাবহার দেখা যায়। আজকে জানবো ফ্রেমওয়ার্ক বা লাইব্রেরী ইউজ করার সুবিধা কি বা এর প্রয়োজনীয়তা সম্পর্কে।
বর্তমানে যারা ওয়েব ডেভেলপমেন্ট করেন তারা ফ্রন্ট-এন্ড সলিউশন হিসেবে জাভাস্ক্রিপ্টের কোন ফ্রেমওয়ার্ক বা লাইব্রেরী যেমনঃ এঙ্গুলার, রিয়াক্ট, ভিউ, এম্বার ইত্যাদি ইউজ করে থাকেন। ব্যাক-এন্ড সলিউশনের জন্য পিএইচপির লারাভেল, সিম্ফনি, কোডেগনাইটর, স্লিম বা জাভাস্ক্রিপ্ট (নোড) এর এক্সপ্রেস বা জাভার স্প্রিং, সি# এর এএসপি ডট নেট বা পাইথনের জ্যাঙ্গো বা ফ্লাস্ক ইউজ করে থাকেন।
তো ‘র’ কোডিং না করে ডেভেলপাররা কেন এগুলো ইউজ করে থাকেন? বিগিনার লেভেলে এ ব্যাপারটা অনেকেই বুঝে উঠতে পারি না আমরা।
আমরা সাধারণত সব প্রোজেক্টেই কিছু কমন ফাংশনালিটি বা কম্পোনেন্ট নিয়ে কাজ করে থাকি। যেমনঃ ফ্রন্ট-এন্ডের জন্য কিভাবে কম্পনেন্ট গুলো ম্যানেজ করা যায়, টু-ওয়ে ডাটা বাইন্ডিং, এজাক্স রিকোয়েস্ট হ্যান্ডেলিং, ফর্ম ভেলিডেশন, মেসেজ শো করানো, লিস্ট কার্ড ক্যারোসেল ডাটাটেবিল এরকম কমন টাইপের কিছু কম্পোনেন্ট বার বার ইউজ করা হয়ে থাকে। তো বার বার এই এইসটিএমএল, সিএসএস আর এর জন্য জাভাস্ক্রিপ্ট লেখাটা অনেক ঝামেলা আর বোরিং কাজ। কেমন হত যদি আমরা আমাদের কমন কম্পোনেন্ট গুলোকে রি-ইউজ করতে পারতাম বিভিন্ন প্রোজেক্টে? অর্থাৎ শুধু ক্ষেত্র বিশেষে কিছু স্টাইলিং ও স্ক্রিপ্ট চেঞ্জ করব এবং রি-ইউজ করতে পারবো? হালের রিয়াক্ট, এঙ্গুলার বা ভিউ কিন্তু এই সুবিধা গুলিই প্রোভাইড করে থাকে। অর্থাৎ কম্পোনেন্ট গুলো ও তাদের ফাংশনালিটি রি-ইউজ করতে পারি আমরা। বার বার একই কাজ করতে হয় না।
একই ভাবে ব্যাকএন্ড এর জন্য ইউজার রেজিস্ট্রেশন, লগিন, অথেনটিকেশন চেক, সেশন, ই-মেইল, এসএমএস, পুশ নোটিফিকেশন, ডাটাবেজ কোয়েরি করা, রিলেশনশিপ বলে দেয়া ইত্যাদি ইত্যাদি ফাংশনালিটি গুলো প্রায় সব ধরনের প্রোজেক্টেই কাজে লাগে। তো লারাভেল, এক্সপ্রেস, জ্যাঙ্গো, ডটনেট-কোর আমদের এই কমন ফাংশনালিটি গুলোই প্রোভাইড করে থাকে। অর্থাৎ আমাদের কমন ফাংশন গুলো বার বার লেখার পেইন আর নিতে হবে না ফ্রেমওয়ার্ক ইউজ করলে।খুব সহজেই কাজ গুলো করে দেয় ফ্রেমওয়ার্ক গুলো।
এখন জাভাস্ক্রিপ্টের অনেক ফ্রেমওয়ার্কই অবশ্য এ সকল সাপোর্ট দিয়ে থাকে। অর্থাৎ ফুল-ফ্লেজড, ফুল-স্টাক ফ্রেমওয়ার্কের কাজ করে থাকে, যেমনঃ এঙ্গুলার৭। অর্থাৎ একটা ল্যাঙ্গুয়েজ (জেস/টিএস) দিয়েই ফুল-স্টাক সলিউশন পাচ্ছি আমরা।
একই ভাবে গেম তৈরীতে গ্রাফিক্স, সাউন্ড, লজিক ইত্যাদি হ্যান্ডেলিং করতে গিয়ে যতগুলো কমন টাস্ক আছে তা গেম ইঞ্জিন গুলো প্রোভাইড করে থাকে। যেমনঃ ইউনিটিতে এগুলো নিয়ে দুঃশ্চিন্তা না করেই একটা গেম বানিয়ে ফেলতে পারেন আপনি। সব ঝামেলা ফ্রেমওয়ার্ক/ইঞ্জিন হ্যান্ডেল করবে।
আরো গুরুত্বপূর্ণ বিষয় হলো যখন আপনি কোন টিমে কাজ করবেন, তখন একেক জন একেক ভাবে, একেক ডিজাইন প্যাটার্ণ বা প্যারাডাইম মেনে কোড করলে তা খুব বেশি রিডেবল বা মেইনটেইনেবল হয় না, হবে না। তাই সবাইকে একটা ওয়েল ডিফাইন্ড স্টান্ডার্ড ফলো করানো ফ্রেমওয়ার্ক গুলোর আরেকটা গুরুত্বপূর্ণ কাজ। সাধারণত ফ্রেমওয়ার্ক গুলো ইন্ডাস্ট্রি-স্টান্ডার্ড ফলো করে টোটাল একটা প্যাকেজ হিসেবে তৈরী করা হয়ে থাকে। যেমনঃ অবজেক্ট অরিয়েন্ডেড প্রোগ্রামিং ফলো করা, প্রতিষ্ঠিত ডিজাইন প্যাটার্ট (যেমনঃ মডেল-ভিউ-কন্ট্রোলার এমভিসি) মেনে চলা, অবজেক্ট রিলেশনাল ম্যাপার বা ওয়ারএম ইনক্লুড করা, ইউনিট টেস্টিং ফিচার সহজ করে ইনক্লুড করে দেয়া ইত্যাদি ইত্যাদি।
আর সব থেকে বড় কথা ফ্রেমওয়ার্ক গুলো কোড রি-ইউজে অনেক বেশি উতসাহ দেয়, একই কাজ বার বার করা থেকে অনুতসাহিত করে। আর সব থেকে যেটা বেশি করে তা হলো ডেভেলপারদের জীবনকে অনেক ‘সহজ’ করে দেয় । বিশেষ করে যে সব ফ্রেমওয়ার্কের সিএলআই (কমান্ড লাইন ইন্টারফেস) সাপোর্ট ভালো।
লেখায় কোন ভূল থেকে থাকলে ক্ষমাসুন্দর দৃষ্টিতে দেখবেন, ধন্যবাদ।
Sunwarul :-)

No comments:

Post a Comment