সাম্প্রতিক উইকিমিডিয়া পরিবারের কনিষ্ঠ প্রকল্প উইকিফাংশন্স তার দ্বিতীয় জন্মদিন উদ্‌যাপন করেছে। সময়ের সাথে সাথে এর ব্যবহারকারীর সংখ্যা বাড়ছে। উইকিউপাত্তের সাথে সংযুক্তির মাধ্যমে ও নতুন নতুন ফাংশনের প্রবর্তনের মাধ্যমে এটি ক্রমেই আরও কার্যকর হয়ে উঠছে। এখন পর্যন্ত পাঁচটি উইকিঅভিধান প্রকল্প এবং একটি উইকিপিডিয়ায় উইকিফাংশন্স থেকে যেকোনো ফাংশন কল করা সম্ভব। এই সম্প্রদায়গুলো ফাংশনের নতুন এই বৈশিষ্ট্যটি কীভাবে গ্রহণ ও ব্যবহার করছে সেই অভিজ্ঞতার আলোকে আরও উইকিমিডিয়া প্রকল্পেও উইকিফাংশন্স চালু করার পরিকল্পনা নেওয়া হচ্ছে।  এখন পর্যন্ত উইকিফাংশন্সে প্রায় ২৭০০টির বেশি ফাংশন রয়েছে। এই প্রতিবেদনে উইকিফাংশন্স প্রকল্পটি কী, বিমূর্ত উইকিপিডিয়ার সাথে এর সম্পর্ক কী এবং আপনি কীভাবে এতে অবদান রাখতে পারেন এসব বিষয় সহজ ভাষায় ব্যাখ্যা করার চেষ্টা করব।   উইকিফাংশনস হলো ফাংশনের উইকিপিডিয়া, উন্মুক্তভাবে ব্যবহারের জন্য ফাংশনের একটি মুক্ত ভাণ্ডার। একটি ফাংশন এমন কিছু যা একটি ইনপুট গ্রহণ করে, তার উপর গাণিতিক বা অ্যালগরিদমিক গণনা করে একটি আউটপুট প্রদান করে। আপনি এটিকে একটি রান্নার রেসিপির সঙ্গে তুলনা করতে পারেন যেমন, রান্নার উপকরণগুলো ইনপুট, রান্নার প্রক্রিয়াটি অ্যালগরিদম, আর তৈরি হওয়া খাবারটি আউটপুট।   সাধারণত একটি ফাংশনের কাজও এভাবেই চলে। একটি ফাংশন বলতে পারে দুটি রঙ মেশালে কী রঙ তৈরি হবে, দুটি শহরের মধ্যে দূরত্ব কত, একটি সাধু ভাষার শব্দকে চলিত ভাষায় রূপান্তরন, কিংবা কোনো শব্দের সম্বন্ধ পদ। ফাংশন বিভিন্ন ধরনের কাজ করতে পারে এবং ব্যবহারকারীর প্রশ্নের উত্তরও দিতে পারে।   এই ফাংশনগুলো বিমূর্ত উইকিপিডিয়া তৈরির জন্য খুব গুরুত্বপূর্ণ। বিমূর্ত উইকিপিডিয়া আমাদের ভাষা নিরপেক্ষভাবে নিবন্ধ তৈরি করার সুযোগ দেবে। এখন ভাষা নিরপেক্ষ মানে কী? সাধারণভাবে বলতে গেলে, বাংলা উইকিপিডিয়া বাংলা ভাষায় লেখা যা এটি একটি প্রাকৃতিক ভাষা, যেটিতে মানুষ কথা বলে। কিন্তু বিমূর্ত উইকিপিডিয়া লেখা হবে প্রোগ্রামিং ভাষায়, যেখানে উইকিউপাত্তের আইটেম, লেক্সিম এবং যুক্তি ব্যবহার করা হবে। আমরা একে বলতে পারি: উইকিফাংশনস + উইকিউপাত্ত = বিমূর্ত উইকিপিডিয়া।  কিন্তু এখন প্রশ্ন আসে এই বিমূর্ত উইকিপিডিয়ার প্রয়োজনই বা কেন? উইকিপিডিয়া বর্তমানে প্রায় ৩৫০-এর অধিক ভাষায় বিদ্যমান। বেশিরভাগ ভাষার সংস্করণে পর্যাপ্ত পরিমাণে নিবন্ধ নেই এবং সক্রিয় অবদানকারীর সংখ্যাও খুব কম। উদাহরণস্বরূপ, ইংরেজি উইকিপিডিয়াতে প্রায় ৭০ লক্ষের বেশি নিবন্ধ আছে এবং প্রতি মাসে এক লক্ষেরও বেশি সক্রিয় অবদানকারী কাজ করেন। অথচ ১০০টিরও বেশি ভাষার উইকিপিডিয়াতে ১০,০০০টিরও কম নিবন্ধ আছে এবং অনেক সময় সক্রিয় অবদানকারী মাত্র ১০ জনের মতো। এর সমাধানে এগিয়ে আসে বিমূর্ত উইকিপিডিয়া, যেখানে বিষয়বস্তু একবার তৈরি করে তা বহু ভাষায় উপস্থাপন করা সম্ভব হবে। এই প্রকল্পের মূল ধারণা বা উদ্দেশ্য হলো ভাষা থেকে বিষয়বস্তুকে আলাদা করা, তথ্যের কাঠামোগত উৎস হিসেবে উইকিউপাত্ত ব্যবহার করা এবং উইকিফাংশন্স থেকে ফাংশন ব্যবহার করে বিভিন্ন ভাষায় প্রাকৃতিক বাক্যে রূপান্তর করা।   বিমূর্ত পাঠ্যের রূপরেখা  নিচে একটি উদাহরণ দেওয়া হলো কীভাবে উইকিউপাত্ত থেকে আইটেম এবং উইকিফাংশন্সের ব্যাকরণ সম্পর্কিত ফাংশন ব্যবহার করে আমরা প্রাকৃতিক ভাষায় বাক্য তৈরি করতে পারি।  উদাহরণ বিন্যাস: সত্তা এবং শ্রেণি ব্যবহার করে অবস্থান নির্ধারণ (সত্তা, শ্রেণি, অবস্থান, ভাষা)। এখানে সত্তা এবং শ্রেণি ব্যবহার করে অবস্থান নির্ধারণ হচ্ছে একটি ফাংশন যা সরবরাহ করে উইকিফাংশন্স। সত্তা, শ্রেণি, অবস্থান এবং ভাষা হল এই ফাংশনের আর্গুমেন্ট বা ইনপুট মান।  এখন এই ফাংশনে ইনপুট দিলে কী হয় দেখা যাক: সত্তা হিসেবে দেওয়া যাক 'নিউজিল্যান্ড', শ্রেণি দেওয়া যাক 'দেশ' এবং অবস্থান হল 'ওশেনিয়া'। এগুলো সবটিই হল এক একটি উইকিউপাত্ত আইটেম এবং 'বাংলা' হলো বাক্যটি যে ভাষায় তৈরি হবে সেই ভাষার নাম। যদি আমরা 'ইংরেজি' দিই তাহলে আউটপুট বাক্যটিও ইংরেজিতে তৈরি হবে।   সত্তা এবং শ্রেণি ব্যবহার করে অবস্থান নির্ধারণ(নিউজিল্যান্ড, দেশ, ওশেনিয়া, বাংলা) → নিউজিল্যান্ড ওশেনিয়া মহাদেশে অবস্থিত একটি রাষ্ট্র।   সত্তা এবং শ্রেণি ব্যবহার করে অবস্থান নির্ধারণ(নিউজিল্যান্ড, দেশ, ওশেনিয়া, ইংরেজি) → New Zealand is a country located in Oceania.  তবে এই উদাহরণে ব্যবহৃত বাক্যগুলো অনেকটাই সরল। বাস্তবে হয়তো আমাদের আলাদাভাবে 'দেশ' বা 'ওশেনিয়া' উল্লেখ করারও প্রয়োজন হতে নাও পারে কারণ উইকিউপাত্ত থেকেই জানা যায় নিউজিল্যান্ড একটি দ্বীপরাষ্ট্র, এটি কোন মহাদেশে অবস্থিত, এর সরকারি নাম কী, ভাষা কী, জনসংখ্যা কত ইত্যাদি। ফলে এমনও সম্ভব যে আমরা কেবল দেশের নাম দিলেই ফাংশনটি উইকিউপাত্ত থেকে প্রয়োজনীয় তথ্য আহরণ করে নিজের মতো করে বাক্য তৈরি করে ফেলবে।   উইকিউপাত্ত সত্তার ভৌগোলিক তথ্য(নিউজিল্যান্ড, বাংলা) → নিউজিল্যান্ড ওশেনিয়া মহাদেশে অবস্থিত একটি দ্বীপরাষ্ট্র। অস্ট্রেলিয়া দেশের সাথে এর সমুদ্রসীমা রয়েছে।  এখানে 'উইকিউপাত্ত সত্তার ভৌগোলিক তথ্য' একটি উদাহরণ ফাংশন। একইভাবে আরও অনেক ফাংশন তৈরি করা যেতে পারে, যেমন: 'সত্তার রাজনৈতিক তথ্য', 'সত্তার জনসংখ্যাতাত্ত্বিক তথ্য' ইত্যাদি। পরে এইসব ফাংশনের আউটপুট একত্রিত করে একটি সরল অনুচ্ছেদ তৈরি করা সম্ভব।  তবে এজন্য প্রয়োজন হবে বিভিন্ন সহায়ক ব্যাকরণগত ফাংশনেরও। যেমন, উইকিউপাত্ত থেকে আমরা যদি পাই 'ওশেনিয়া মহাদেশ' আইটেম তাহলে সেটিকে বাক্যে সঠিকভাবে বসানোর জন্য দরকার হবে '-এ' কার (ে)। তখনই আমরা পাবো: 'নিউজিল্যান্ড ওশেনিয়া মহাদেশে'। ঠিক এভাবেই অন্যান্য সহায়ক ফাংশন প্রয়োজন হবে যেগুলো প্রাকৃতিক ভাষায় বাক্য নির্মাণে সাহায্য করবে।  এই ধরনের বিমূর্ত পাঠ্যের সবচেয়ে বড় সুবিধা হলো একে আলাদাভাবে অনুবাদ করতে হবে না। যদি ব্যবহৃত আইটেমগুলো উইকিউপাত্তে সংশ্লিষ্ট ভাষায় অনূদিত থাকে তাহলে বাক্যটি স্বয়ংক্রিয়ভাবে সেই ভাষায় রেন্ডার হয়ে যাবে। অবশ্য এই বাক্যটি খুবই সাধারণ। বাস্তবে ব্যাকরণ, কারক, কালসহ আরও অনেক বিষয় বিবেচনায় রাখতে হয়।   উইকিফাংশন্সে অবদান রাখা   এখন পর্যন্ত আমরা উইকিফাংশনস ও বিমূর্ত উইকিপিডিয়ার একটি সাধারণ ব্যাখ্যা দেখলাম। এবার দেখা যাক আপনি কীভাবে একটি ফাংশন তৈরি করতে পারেন। সাধারণভাবে, একটি ফাংশনের তিনটি অংশ থাকে: সংজ্ঞা, পরীক্ষার ক্ষেত্র (টেস্ট কেস), এবং বাস্তবায়ন (ইমপ্লিমেনটেশন)।  উদাহরণস্বরূপ ধরুন আপনি এমন একটি ফাংশন তৈরি করতে চান যা ক্রিকেটে রান রেট গণনা করবে। সূত্র: মোট রান ÷ মোট ওভার সংখ্যা  সংজ্ঞা: এখানে আপনি ফাংশনের নাম দেবেন, একটি সংক্ষিপ্ত বিবরণ লিখবেন, ফাংশনটি কোন ধরনের ইনপুট গ্রহণ করবে তা নির্ধারণ করবেন, যেমন স্ট্রিং, সংখ্যা, তারিখ, বা উইকিউপাত্ত লেক্সিম। একইভাবে, আউটপুট কী ধরনের হবে তাও ঠিক করতে হবে। আমাদের রান রেট উদাহরণে ইনপুট হিসেবে লাগবে দুটি দশমিক সংখ্যা যেমন: রান = ১২০ এবং ওভার = ১৭.৫ (অর্থাৎ ১৭ ওভার ৫ বল)।  পরীক্ষার ক্ষেত্র: এটি এমন একটি ধাপ যেখানে আপনি যাচাই করবেন যে ফাংশনটি প্রত্যাশিতভাবে কাজ করছে কিনা। উদাহরণস্বরূপ, নির্দিষ্ট একটি ইনপুট দিলে আপনি যেমন আউটপুট আশা করেছেন, ফাংশনটি সেটি দিচ্ছে কি না। যদি কোনো পরীক্ষার ক্ষেত্র ব্যর্থ হয় তাহলে বুঝতে হবে ফাংশনে সমস্যা আছে এবং সেটি ঠিক করতে হবে। সফল হলে ধরে নেওয়া যায় ফাংশনটি ঠিকমতো কাজ করছে। আপনি চাইলে একাধিক টেস্ট কেস তৈরি করতে পারেন যাতে ভিন্ন ইনপুটে ফাংশনটির প্রতিক্রিয়া কেমন হয় তা বোঝা যায়।  বাস্তবায়ন: এটি ফাংশনের মূল যুক্তি বা লজিক। বাস্তবায়ন দুইভাবে হতে পারে: ১) প্রোগ্রামিং ভাষায় (যেমন পাইথন বা জাভাস্ক্রিপ্ট) অথবা ২) কম্পোজিশন (বা প্রণয়ন) এর মাধ্যমে।  thumb|350px|center| বিভাজন (দশমিক সংখ্যা) ফাংশন ব্যবহার করে বাস্তবায়ন তৈরীর একটি উদাহরণ  প্রোগ্রামিং ভাষায় কীভাবে কোড লিখতে হয় সে বিষয়ে আমরা আজ আলোচনা করব না কারণ সেটা একেবারেই আলাদা একটি বিষয়। আমাদের আজকের উদ্দেশ্য হচ্ছে উইকিফাংশন্স সম্পর্কে বোঝা। তাই চলুন এখন আমরা "কম্পোজিশন" বিষয়টি একটু সহজভাবে ব্যাখ্যা করার চেষ্টা করি।  কম্পোজিশন মানে হচ্ছে আগে থেকেই তৈরি করা একাধিক ফাংশনকে একত্রে ব্যবহার করে আপনি একটি নির্দিষ্ট কাজ সম্পন্ন করতে পারেন, যেটা আপনি অন্যথায় কোড লিখে করতেন। উদাহরণ হিসেবে ধরুন আমরা যদি ক্রিকেটের রান রেট গণনার জন্য একটি কম্পোজিশন তৈরি করতে চাই, তাহলে আমাদের এমন একটি ফাংশনের প্রয়োজন হবে যেটা দুটি দশমিক সংখ্যা ভাগ করতে পারে। সুখবর হচ্ছে বিভাজন (দশমিক সংখ্যা)/Z21033 নামে একটি ফাংশন ইতিমধ্যে উইকিফাংশন্সে রয়েছে যা এই কাজটি করে।  কম্পোজিশন তৈরির সময় আমরা এই Z21033 ফাংশনটি ব্যবহার করব। এটি দুটি ইনপুট নেয়: প্রথম ইনপুটে আমরা বেছে নেব 'রান সংখ্যা' আর দ্বিতীয় ইনপুটে নেব 'ওভার সংখ্যা'। এইভাবে আমরা কোনো কোড না লিখেই অন্য একটি ফাংশনের সাহায্যে আমাদের প্রয়োজনীয় গণনা করতে পারি। প্রথমে শুনে বিষয়টি কিছুটা জটিল মনে হতে পারে। তবে আপনি যখন নিজের হাতে একবার চেষ্টা করবেন, তখন এটি সহজ ও মজার মনে হবে।  ফাংশন তৈরি ছাড়াও আপনি চাইলে অনুবাদক হিসেবেও অবদান রাখতে পারেন। বর্তমানে অনেক ফাংশনের লেবেল ও বিবরণ এখনো বাংলায় অনূদিত নয়। আপনি সেগুলোর অনুবাদ করে উইকিফাংশনসকে আরও কার্যকর ও বাংলায় ব্যবহারবান্ধব করে তুলতে পারেন।   সূত্র   https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-12-12  https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2024-10-17  https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2025-07-26