সি প্রোগ্রামিং ধারাবাহিক টিউটরিয়াল বেসিক প্রথম পর্ব

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

আমি আপনাদের একটা স্বরন করিয়ে দিতে চাই যা সব সময়ই সবাই সবাইকে বলে থাকে। কাউকে শিখানোর ব্যাপারটা ওত সহজ না। নিজ চেষ্টা সবচেয়ে বড় চেষ্টা নিজে চেষ্টা করলে আপনি অনেক দূর যেতে পারবেন। আর কাউকে সি শিখানোর মত পর্যাপ্ত পরিমান জ্ঞান আমার এখনো হয় নাই। আমি মনে করি পর্যাপ্ত জ্ঞান কোন দিনও আমার হবে না। সারা জীবন মানুষের পাশে থেকে বাকী পথটা যাতে পেড়োতে পারি। এই আমার কামনা।

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

প্রোগ্রামিং কি?

আমরা অনেকেই এই প্রশ্ন টির উত্তর জানি না। প্রোগ্রামিং হল প্রোগ্রাম বানানো বা সফটওয়্যার বানানো বা কম্পিউটার এর জন্যছোট(কিংবা বড়!) টুল বানানো যা দিয়ে আপনি অনেক কিছুই করতে পারেন।

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

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

প্রোগ্রামিং ভাষা এর মানে আবার কি ?

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

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

আসলে শেষ পর্যন্ত কম্পিউটার বোঝে শূন্য (0) আর একের (1) হিসাব। কম্পউটার ভাষা মেশিন ল্যাঙ্গুয়েজ নামেও পরিচিত। ভাল মানের সফটওয়্যার নির্মাতা হতে হলে আপনাকে অবশ্যই প্রোগ্রামিং ভাষার উপর ভাল দক্ষতা থাকা উচিত।

মেশিন ল্যাঙ্গুয়েজ এটা আবার কি?

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

অ্যাসেম্বলি ল্যাঙ্গুয়েজ এবং তার পর আবিষ্কৃত ভাষা নিয়ে আলোচনাঃ

মেশিন ল্যাঙ্গুয়েজ  ছিল খুবই কঠিন এবং এই সময় প্রোগ্রামারের সংখ্যাও ছিল হতে গোনা।  প্রোগ্রামারের সুবিধা দেয়ার জন্য এর পরে এলো অ্যাসেম্বলি ল্যাঙ্গুয়েজ। যেটা দিয়ে খুব সহজেই ADD (যোগ) , MUL (গুন) ইত্যাদি ইনন্স্ট্রসন প্রোগ্রামারা ব্যাবহার  করতে পরত। এই ল্যাঙ্গুয়েজের মূল কাজ টি করে অ্যাসেম্বলার।

অ্যাসেম্বলার  ইনিসট্রাকসন গুলো কে মেশিন ল্যাঙ্গুয়েজে ( ‘০’ এবং ‘১’ এ ) পরিণত করে । এর পরবর্তিতে দেখা গেল অ্যাসেম্বলি ল্যাঙ্গুয়েজ দিয়ে কাজ করতে অনেক সমস্যা হচ্ছে। আরও বড় বড় এবং জটিল প্রোগ্রামের জন্য লাগে আর এক ধরনের কম্পিউটার প্রোগ্রামিং ল্যাঙ্গুয়েজ সেটি কম্পিউটারের ভাষায় বলা হয়  High Level Programming Language। আধুনিক কম্পিউটারের ব্যাপক ব্যাবহারকারীর কাছে  জনপ্রিয়তার মূল কারণ হিসাবে বলা যায়  বিভিন্ন ধরনের Application Software কিংবা  Computer Games যেগুলোর সাহাজ্যে সাধারণ ব্যাবহারকারী তাঁদের দৈনদিন কাজ গুলো খুব সহজে করতে পারে এবং মজা নিতে পারে। এই Application Software কিংবা  Computer Games গুলো তৈরি করতে লাগে  High Level Programming Language, যেমন-ফরট্রান (Fortran), বেসিক (Basic), প্যাসকেল (Pascal), সি (C)।

তবে এখানেই শেষ নয়, এরপর এল আরও অনেক ল্যাঙ্গুয়েজ, যার মধ্যে অন্যতম হচ্ছে, সি প্লাস প্লাস (C++), ভিজ্যুয়াল বেসিক (Visual Basic), জাভা (Java), সি শার্প (C#), পার্ল (Perl), পিএইচপি (PHP), পাইথন (Python), রুবি (Ruby)। কম্পিউটার বিজ্ঞানীরা নিত্য নতুন আরও প্রোগ্রামিং ল্যাঙ্গুয়েজ তৈরি করছেন।

High Level Programming Language এর মূল উদ্দেশ্য হল এর সাহাজ্যে প্রোগ্রামার তাঁর মুখ্য ভাষায় (যে ভাষা আমরা বুঝি যেমন- English) প্রোগ্রাম  লিখতে পারে। প্রতিটি  High Level Programming Language এর রয়েছে আলাদা কম্পাইলার, যার সাহাজ্যে  High Level Programming Language এ লেখা প্রোগ্রাম কোড কম্পিউটারের বোধগাম্য ভাষায় রুপান্তরিত হয়। সেটা প্রোগ্রামারদের ভাবতে হয় না।

কে বা কারা ভবিষৎয়ের প্রোগ্রামারঃ

যারা যুগের সাথে তাল মিলিয়ে নিত্য নতুন নান্দিক মানের সফটওয়্যার নির্মান করবে। কারন সফটওয়্যার নির্মান করতে হলে আপনাকে অবশ্যই একজন ভাল মানের প্রোগ্রামার হতে হবে।

“A Programmer is someone who writes programs for computers to execute. A program is a set of instructions fed to the computer to carry out for the purpose of achieving some desired end.
A Web Developer writes programs specifically for the Web,i.e someone who develops Web applications.
I think CCNA is a certification in Networking-not much related to programming.Networking is mainly hardware while programming is about software.There are some Microsoft programming certifications you can find out about.”

” A programmer is a person who writes a set of instructions ( usually called code) to achieve a particular result. In these modern days, a programmer is usually seen as someone who writes windows (based) apllications.
Web development general involves the efforts of a web developer and a web designer. Though both a web developer and a web designer work on websites, while a web designer works on the static aspect (Graphics/appearance)  of the website, a web developer works on the dynamic aspect (usually in respect  of logic  or/and data/database validations) of the website. “

প্রোগ্রামটা আসলে কেন করবো??

আপনি প্রোগ্রামিং করবেন , আর আপনি জানেন না, কেন প্রোগ্রামিং করবেন ? একটু রেগে গেলাম এতক্ষন তাহলে প্রোগ্রামিং নিয়া কি বললাম এই গুলা কি হাবিজাবি কথাবার্তা নাকি। ( 😛 😛 আমি কিন্তু মজা করেছি 😀 :D) যাইহোক অনেকক্ষন আলোচনা করার পরও অনেকের কাছে ব্যাপারটা ঘোলাটে লাগতে পারে। তাই আরেকটু আলোচনা করি। কেন প্রোগ্রামিং এর উত্তর দেওয়ার আগে একটা প্রশ্ন করা যাক, কেন প্রোগ্রামিং নয়?
আচ্ছা, কেমন হত যদি না কম্পিউটার থাকত? যদি না ইন্টারনেট থাকত? যদি না ফেসবুক থাকত? আর যদি গুগল না থাকত তাহলে কি হতো? কিভাবে আমরা আমাদের এসাইনমেন্ট গুলো খুজে বের করতাম? প্রথমে চিন্তা করুন আপনি প্রোগ্রামিং করবেন। প্রশ্ন আসছে কেন প্রোগ্রামিং শিখবো। প্রোগ্রামিং শিখবেন এই যে জন্য আপনি শিখবেন যা করে আপনি বিভিন্ন মানের সফটওয়্যার নির্মান করবেন আবার ওয়েব ডেপেলাপিংও করবেন। এই সব করতে হলে তো আপনাকে প্রোগ্রামার হতে হবে তা না হলে আপনি পারবেন না।

চিকেন বানাবেন যদি মুরগীই না থাকে তাহলে কেমনে বানাবেন। আপনি প্রোগ্রামার ভাল মানের প্রোগ্রাম লিখতে পারেন কিন্তু ভাল মানের সফটওয়্যার বানাতে পারেন না। সেক্ষেত্রে আপনাকে এমন কিছু সফটওয়্যার এর কথা চিন্তা করতে হবে যা সবার কাছে পৌছায়ই না বা এটা ব্যবহার সবাই ভাল ভাবে করতে পারছে না। সেক্ষেত্রে আপনি ওই সফটওয়্যার এর জন্য আপনার

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

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

ওয়েব ডেভেলপমেন্ট শেখার সবচেয়ে কার্যকরী কৌশলটি হল “বসে যান এবং একটা প্রজেক্ট তৈরী করুন” হতে পারে একটা ফোরাম, ব্লগ, ইউজার ম্যানেজমেন্ট সিস্টেম বা এই ধরনের কোন প্রজেক্ট।raw PHP দিয়ে করুন।এরপর সিএমএস বা ফ্রেমওয়ার্ক ডেভেলপমেন্টে যান। আর একটা কথা হল একজন ওয়েব ডিজাইনার এবং ডেপেলাপার এর মূল্য এক জন প্রোগ্রামার এর চাইতে কোন অংশে কম না।

এত প্রোগ্রামিং থাকতে সি দিয়ে কেন শুরু করবোঃ

এত প্রোগ্রামিং থাকতে সি দিয়ে কেন শুরু করবো এই প্রশ্নটা অনেকের মাথাই থাকে। সি হচ্ছে অন্য সকল প্রোগ্রামিং ল্যাঙ্গুয়েজ এর ব্যাসিক। এটি খুবি সহজ একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ। সি থেকেই পরবর্তীতে অনেক গুলো পোগ্রামিং ল্যাঙ্গুয়েজ এর উৎপত্তি হয়েছে।

যেমন C++, Java,  C#, PHP ইত্যাদি। সি জানলে সে গুলো সহজেই জানা যায়।প্রোগ্রামিং এর মৈলিক সকল বৈশিষ্ট গুলো সিতে রয়েছে। সকল প্রোগ্রামিং ল্যাঙ্গুয়েজ এ মৈলিক বৈশিষ্ট গুলো ফলো করে।কম্পিউটার অপারেটিং সিস্টেমের কোর বা প্রান হচ্ছে কার্নেল। সি প্রোগ্রামিং এর জনপ্রিয়তা নিচের ছবিটাতে দেখুন

Windows, Unix বা Linux এর কার্নেলের বেশির ভাগ কোড লেখা হয়েছে সি দিয়ে। কেউ যদি সি ভালো পারে, নিজের একটা অপারেটিং সিস্টেম তৈরি করার স্বপ্ন সহজেই দেখতে পারে। নতুন নতুন ডিভাইস গুলোর জন্য ড্রাইভার লাগে। এ ড্রাইভার সফটওয়ার গুলো প্রায় সময়ই সি প্রোগ্রামিং দিয়ে লেখা। কারন সি এর পয়েন্টার দিয়ে হার্ডওয়ার এবং সফটোয়ার এর মধ্যে যোগাযোগ করা যায়। সি হচ্ছে  middle level language। তিন প্রকার প্রোগ্রামিং ল্যাঙ্গুয়েজ রয়েছে।

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

প্রোগ্রামিং সি সহজ না কঠিন ?

বাপুরে প্রশ্ন একখান হইলো গিয়া এইটা। কি যে উত্তর দিমু সেটা বুঝাটাই দায়। আমার নিজের উদ্দেশ্য সি কে ভালভাবে জানা এবং আপনাদেরকে জানানো। আমি ভালভাবে জানতে পারলেই তো আপনাদের মাঝে ভালভাবে উপস্থাপন করতে পারবো তাই নয় কি! মানুষ জন্মগ্রহন করে কেউ কখনই নিজে নিজে হাটা শিখেন নি। কেউ না কেউ তাকে হাটা শিখাইছে।

সি এর সাথে সাইকেল চালানো শিখার তুলনা করি। সাইকেল চালাতে যে কত ব্যাথা পাইছেন সেই কথা কি মনে আছে আপনাদের? সি শিখতে গেলে প্রাথমিক পর্যায়ে একটু ধাক্কা তো খাবেন এটাই স্বাভাবিক। ছোটবেলা থেকে উইন্ডোজ চালিয়ে বড় হয়েছেন লিনাক্স চালিয়ে দেখেন একটু কষ্ট তো লাগবেই মানিয়ে চলতে হবে এই আর কি।

একটা বিষয় ঠিক তখনি কঠিন হয় যখন আপনি ব্যাপারটা কঠিন ভাবে নেন আর সহজ ভাবে নিলে সি আপনার কাছে সহজই মনে হবে। আমার মতে একটু মনোযোগ দিয়ে অনুশীলন করলে সি কে খুব সহজ মনে হবে। পৃথিবীতে কঠিন বলে কিছুই নেই যদি ব্যাপারটা আপনি সি এর ক্ষেত্রে ভেবে নেন। সি শিখার ইচ্ছা আপনাকে পথ দেখাবে।

সি প্রোগ্রাম দিয়া করা একটি লাইট সেনসোরঃ

Light_Sensor_Figure_4

প্রোগ্রামিং ল্যাঙ্গুয়েজ এর ম্যাপঃ

অনেক গুলা প্রোগ্রামিং এর ভাষা দিয়ে ম্যাপ কিছু বুঝা যায় না মনে হয়।

 

Leave a Reply