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

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

অ্যালগরিদমের কিছু বৈশিষ্ট্য থাকেঃ
১) ইনপুটঃ ইনপুট ডেটা, সাধারণত ব্যবহারকারী প্রদান করে
২) আউটপুটঃ প্রোগ্রামের ফলাফল
৩) সসীম ধাপঃ সীমিত সংখ্যক ধাপে অ্যালগরিদম শেষ হবে
৪) সুনির্দিষ্টতাঃ ধাপগুলোর অর্থ সুনির্দিষ্ট হবে, দ্ব্যর্থক হতে পারবে না।
৫) কার্যকারিতাঃ অ্যালগরিদম এমন হবে যেন তা কম্পিউটার প্রোগ্রামে (যে কোন ভাষায়) রূপান্তরযোগ্য হয়।

আমরা একটি গাণিতিক সমস্যা সমাধানের মাধ্যমে অ্যালগরিদম ও তার বৈশিষ্ট্যগুলো বুঝতে চেষ্টা করতে পারি। মনে করি, আমরা একটি সংখ্যা n এর ফ্যাক্টোরিয়াল বের করতে চাই। কোন পূর্ণ সংখ্যার ফ্যাক্টোরিয়াল হল ঐ সংখ্যা ও তার চেয়ে ছোট সকল পূর্ণ সংখ্যার গুণফল। যেমন, 6 এর ফ্যাক্টোরিয়ালের মান হবে 6*5*4*3*2*1 = 720. কম্পিউটারে যেকোন সংখ্যার ফ্যাক্টোরিয়াল নির্ণয়ে আমরা নিচের ধাপগুলো অনুসরণ করে নির্দেশ দিতে পারি।

এখানে n এর মান ব্যবহারকারীর কাছ থেকে নেওয়া হচ্ছে (ইনপুট) এবং এর ফ্যাক্টোরিয়াল প্রিন্ট হচ্ছে (আউটপুট)। n এর মানের উপর ভিত্তি করে ৪, ৫, ৬ ধাপগুলো পুনরাবর্তিত হবে কিন্তু n এর সসীম মানের জন্য অ্যালগরিদমের ধাপগুলো সসীম সংখ্যক বার ব্যবহৃত হবে (সসীম ধাপ)। উক্ত ধাপগুলো অবলম্বন করলে n এর একটি মানের জন্য একাধিক উত্তর পাওয়া যাবে না (সুনির্দিষ্টতা)। অ্যালগরিদমটির কার্যকারিতা আমরা একটি ছকের মাধ্যমে n=6 ধরে নিয়ে দেখতে পারি।

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

আমরা প্রতীকগুলো ব্যবহার করে ফ্যাক্টোরিয়ালের ফ্লো-চার্ট আঁকতে পারি।

এবারে আমরা দেখব, উক্ত অ্যালগরিদমকে কোন প্রোগ্রামিং ভাষায় রূপান্তর করা যায় কি না। একটি নমুনা প্রোগ্রামিং ভাষা হিসেবে C ব্যবহার করে আমরা চেষ্টা করতে পারি। প্রোগ্রামটিতে /* এবং */ চিহ্নের মাঝখানের সকল লেখা কমেন্ট বলে বিবেচ্য হবে এবং কম্পাইলার তাকে C ইন্সট্রাকশান হিসেবে পড়বে না।

অর্থাৎ, অ্যালগরিদমটি প্রোগ্রামিং ভাষায় রূপান্তরযোগ্য বা কার্যকরি। এভাবে ভিন্ন ভিন্ন কাজের জন্য অ্যালগরিদম লিখে প্রোগ্রামিং করা সম্ভব। প্রবলেম ডোমেইনের উপর ভিত্তি করে কম্পিউটার প্রোগ্রাম কয়েক লাইন থেকে কয়েক হাজার লাইন পর্যন্ত হতে পারে।

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

(একই প্রোগ্রামের জন্য বিভিন্নভাবে অ্যালগরিদম লেখা যেতে পারে, যার মধ্য থেকে এফিশিয়েন্ট অ্যালগরিদম নির্বাচন করতে পারাটা প্রোগ্রামারের দক্ষতা। এ নিয়ে আগামীতে লেখার আশা আছে।)

[116 বার পঠিত]