রিপ্রেজেন্টার


Exercism কমিউনিটির সামনে থাকা একটি সমস্যা হলো: অনেক ভিন্ন অনুশীলনীর অনেক সমাধান দেওয়া অনেক মানুষকে অর্থবহ ফিডব্যাক কীভাবে দেওয়া যায়। এই সম্ভাব্য বিশাল কাজের পরিধি কমাতে সাহায্য করার জন্য সমাধানগুলোকে "রিপ্রেজেন্টেশন"-এ নরমালাইজ করা হয়। উদাহরণস্বরূপ, Ruby ট্র্যাকের TwoFer অনুশীলনীতে সাম্প্রতিক ৫০০টি সাবমিশনের মধ্যে প্রায় ৩৮০টি ইউনিক বলে বিবেচিত হবে (code ফরম্যাটিং আর কমেন্টের মতো তুচ্ছ বিষয় নরমালাইজ করলে)। আপনি যদি সেগুলোকে আরও বেশি নরমালাইজ করেন (ফাংশন বা ভ্যারিয়েবলের নামের মতো বিষয় নরমালাইজ করে), তাহলে সেই সংখ্যাটা আরও ছোট হয়ে যায়, তাই কেবল ২৫০টি ইউনিক অ্যাপ্রোচ থাকতে পারে। Exercism কমিউনিটি যদি ওই ২৫০টি অ্যাপ্রোচের ওপর কিছু ফিডব্যাক দিতে পারে, তাহলে আশা করা যায়, TwoFer-এর ভবিষ্যতের সব সাবমিশনের প্রায় ৯৯%-এর জন্য বৈধ ফিডব্যাক প্রস্তুত থাকবে। কনসেপ্ট অনুশীলনীগুলোর ক্ষেত্রে সমাধানের পরিসর আরও ছোট হবে, কারণ কনসেপ্ট অনুশীলনীগুলো ইচ্ছাকৃতভাবে একটি নির্দিষ্ট উপায়ে সমাধান করার জন্য ডিজাইন করা হবে।

একটি রিপ্রেজেন্টার হলো এক টুকরো code, যার একটাই দায়িত্ব: একটি সমাধান নিয়ে তার একটি নরমালাইজড রিপ্রেজেন্টেশন রিটার্ন করা।

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

সবচেয়ে সরল রিপ্রেজেন্টার হলো সেটিই, যা কেবল সমাধানের source code রিটার্ন করে। তবে যেহেতু আমাদের লক্ষ্য হলো কেবল অপ্রয়োজনীয় বিস্তারিত অংশে ভিন্ন এমন সমাধানগুলোর জন্য একই রিপ্রেজেন্টেশন পাওয়া, রিপ্রেজেন্টারকে এক বা একাধিক নরমালাইজেশন প্রয়োগ করা উচিত।

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

রিপ্রেজেন্টারে অবদান রাখা

প্রতিটি প্রোগ্রামিং ভাষার নিজস্ব রিপ্রেজেন্টার থাকে, যা সেই ভাষায় লেখা। ওয়েবসাইটটি রিপ্রেজেন্টার আর শিক্ষার্থীদের সাবমিশনের মধ্যে অর্কেস্ট্রেটর হিসেবে কাজ করে।

প্রতিটি রিপ্রেজেন্টার Exercism GitHub অর্গানাইজেশনে <track_slug>-representer নামের একটি রিপোজিটরিতে থাকে (যেমন exercism/ruby-representer)। আপনি বিদ্যমান রিপ্রেজেন্টারগুলো এখানে দেখতে পারেন।

আপনি যদি একটি বিদ্যমান রিপ্রেজেন্টারে সাহায্য করতে জড়িত হতে চান, অনুগ্রহ করে এর রিপোজিটরিতে একটি ইস্যু খুলুন এবং জিজ্ঞাসা করুন কোথাও আপনি সাহায্য করতে পারেন কি না। আপনি যদি এমন একটি ভাষার জন্য রিপ্রেজেন্টার তৈরি করতে চান যার বর্তমানে একটি নেই, অনুগ্রহ করে রিপ্রেজেন্টার তৈরি নির্দেশাবলি অনুসরণ করুন।

রিপ্রেজেন্টার তৈরি সম্পর্কে আরও জানতে আপনি নিচের ডকুমেন্টগুলো ব্যবহার করতে পারেন: