Tuesday, April 30, 2013

[ সি প্রোগ্রামিং :- অধ্যায় শূন্য ] শুরুর আগে



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

একসময় কিন্তু কেবল 0 আর 1 ব্যবহার করেই কম্পিউটারের প্রোগ্রাম লিখতে হতো । কারণ কম্পিউটার তো 0,1 ছাড়া আর কিছু বোঝে না, আর কম্পিউটারকে দিয়ে কোন কাজ করাতে চাইলে তো তার ভাষাতেই কাজের নির্দেশ দিতে হবে । 0, 1 ব্যবহার করে যে প্রোগ্রামিং করা হতো, তার জন্য যে ভাষা ব্যবহৃত হতো, তাকে বলা হয় মেশিন ল্যাঙ্গুয়েজ । তারপর এল অ্যাসেম্বলি ল্যাঙ্গুয়েজ । এতে প্রোগ্রামাররা কিছু ইনস্ট্রাকশন যেমন ADD (যোগ), MUL (গুণ) ইত্যাদি ব্যবহারের সুযোগ পেল । আর এই ভাষাকে 0, 1 –এর ভাষায় নিয়ে কাজ করাবার দায়িত্ব পড়ল অ্যাসেম্বলারের উপর, প্রোগ্রামারদের সে বিষয়ে ভাবতে হতো না । কিন্তু মানুষের চাহিদার তো শেষ নেই । নতুন নতুন চাহিদার ফলে নতুন নতুন জিনিসের উদ্ভব হয় । একসময় দেখা গেল যে অ্যাসেম্বলি ল্যাঙ্গুয়েজ দিয়েও কাজ করা ঝামেলা হয়ে যাচ্ছে । তাই বড় বড় প্রোগ্রাম লিখার জন্য আরও সহজ ও উন্নত নানা রকম প্রোগ্রামিং ভাষা তৈরি হলো । যেমন- ফরট্রান (Fortran), বেসিক (Basic), প্যাসকেল (Pascal), সি (C) । তবে এখানেই শেষ নয়, এরপর এল আরও অনেক ল্যাঙ্গুয়েজ, যার অন্যতম হচ্ছে, সি প্লাস প্লাস (C++), ভিজুয়াল বেসিক (Visual Basic), জাভা (Java), সি শার্প (C#), পার্ল (Perl), পিএইচপি (PHP), পাইথন (Python), রুবি (Ruby) । এখনো কম্পিউটার বিজ্ঞানীরা নিত্যনতুন প্রোগ্রামিং ভাষা তৈরি করে যাচ্ছেন । প্রোগ্রামাররা এসব ভাষা ব্যবহার করে প্রোগ্রাম লেখেন আর প্রতিটি ভাষার রয়েছে আলাদা কম্পাইলার, যার কাজ হচ্ছে ওই প্রোগ্রামকে কম্পিউটারের বোধগম্য ভাষায় রূপান্তর করা, তাই এটি নিয়ে প্রোগ্রামারদের ভাবতে হয় না । 

প্রোগ্রাম লিখার সময় প্রোগ্রামারকে তিনটি প্রধান কাজ করতে হয় । প্রথমে তার বুঝতে হয় যে সে আসলে কি করতে যাচ্ছে, মানে তার প্রোগ্রামটি আসলে কী কাজ করবে । তারপর চিন্তাভাবনা করে এবং যুক্তি (logic) ব্যবহার করে অ্যালগরিগম দাঁড় করাতে হয় । মানে, লজিকগুলো ধাপে ধাপে সাজাতে হয় । এর পরের কাজটি হচ্ছে অ্যালগরিদমটাকে কোনো একটি প্রোগ্রামিং ভাষায় রূপান্তর করা, যাকে আমরা বলি কোডিং করা । একেক ধরনের কাজের জন্য একেক ল্যাঙ্গুয়েজ বেশি উপযোগী ।

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

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

এবার আসা যাক, কম্পাইলার পাবেন কোথায় ? সি এর জন্য বেশ কিছু কম্পাইলার আছে । আপনি ‍যদি লিনাক্স কিংবা ম্যাক ব্যবহারকারী হন, তবে সবচেয়ে ভালো হচ্ছে gcc । অধিকাংশ লিনাক্সের এটি আগে থেকে ইনস্টল করা থাকে । আপনার কম্পিউটারে না থাকলে এটি ইনস্টল করে নিতে পারেন । আর উইন্ডোজ ব্যবহার করলে আপনি Codeblocks (http://www.codeblocks.org/) ব্যবহার করতে পারেন । এটি একটি ফ্রি এবং ওপেন সোর্স IDE (Integrated Development Environment) এবং ম্যাক আর লিনাক্সেও চলে । এমনিতে সাধারণ কোনো টেক্সট এডিটর (যেমন: নোটপ্যাড, জিএডিট, কেরাইট) ব্যবহার করে কোড লিখে সেটি কম্পাইলার দিয়ে কম্পাইল করে রান করা যায় । তবে অধিকাংশ আইডিই (IDE) গুলোতেই নিজস্ব টেক্সট এডিটর ও কম্পাইলার থাকে । প্রোগ্রাম রান করার ব্যবস্থা ও থাকে । এছাড়া ও নানা ধরনের টুলস্ থাকে ।

Codeblocks টা সরাসরি আপনি http://www.codeblocks.org সাইট থেকে ডাউনলোড ও ইনস্টল করতে পারেন । মনে রাখবেন নতুন র্ভাসনটি ডাউনলোড করা আপনার কাজের জন্য উপকার হবে তাই পারলে নতুন র্ভাসনটি ডাউনলোড করে নিন ।

প্রোগ্রামিং চর্চার বিষয় । ইন্টারনেটে বেশ কিছু ওয়েবসাইট আছে, যেখানে প্রচুর সমস্যা দেওয়া আছে যেগুলো প্রোগ্রামের সাহায্যে সমাধান করতে হয় । সব জায়গাতেই আপনি সি ল্যাঙ্গুয়েজে প্রোগ্রামিং করতে পারবেন । এর মধ্য কিছু কিছু সাইট আবার নিয়মিত প্রোগ্রামিং প্রতিযোগিতার ও আয়োজন করে । এসব প্রতিযোগিতায় অংশগ্রহণ নিঃসন্দেহে আপনার প্রোগ্রামিং-দক্ষতা বৃদ্ধি করবে আর সেই সঙ্গে বিশ্বের নানা দেশের প্রোগ্রামারদের সাথে মিলা-মেশার সুযোগ করে দিবে । অবশ্য প্রোগ্রামিং প্রতিযোগিতায় ভালো করতে হলে কেবল প্রোগ্রামিং জানলেই চলবে না, গাণিতিক দক্ষতাও যথেষ্ট গুরুত্বপূর্ণ । পরিশিষ্ট অংশে প্রোগ্রামিং প্রতিযোগিতা নিয়ে আলাপ করব ।

ব্লগের প্রতিটি প্রোগ্রামের নিচে আমি একটি নম্বর দিয়েছি । প্রোগ্রামের নম্বর যদি ২.৪ হয়, তার মানে হচ্ছে এটি দ্বিতীয় অধ্যায়ের চার নম্বর প্রোগ্রাম ।

প্রোগ্রামিং কিন্তু কোনো বইয়ের গল্প নয় । তাই বিছানায় শুয়ে-বসে পড়া যাবে না । ব্লগটি পড়ার সময় কম্পিউটার চালু রাখতে হবে এবং প্রতিটি উদাহরণ সঙ্গে সঙ্গে প্রোগ্রাম লিখতে হবে । মনে রাখবেন, যত বেশি প্রোগ্রামিং তত বেশি বেশি আনন্দ ।

আশা করছি, আপনি বাকি অধ্যায় গুলো পড়বেন এবং সবগুলো প্রোগ্রাম কম্পিউটারে চালিয়ে দেখবেন । আপনার জন্য শুভ কামনা রইল..............

1 comment:

  1. If any one want codeblocks direct download link then copy and paste the link in your browser http://sourceforge.net/projects/codeblocks.berlios/files/codeblocks-12.11mingw-setup.exe/download

    ReplyDelete