আসসালামু আলাইকুম। আশা করি সবাই ভাল আছেন। সি প্রোগ্রামিং এর বেসিক টিউটরিয়াল আমি আপনাদের সাথে আলোচনা করবো। কতটুকু বুঝাতে পারি জানি না। তবে বুঝানোর চেষ্টা অব্যাহত থাকবে। আশা করি সবাই পাশে থাকবেন। তাহলে সি প্রোগ্রাম এর সর্ম্পকে প্রাথমিক ধারনা দিয়ে আজকের মত শুরু করি।
প্রাথমিক আলোচনায় আমি একটু সি প্রোগ্রামিং নিয়ে কথা বলব। কম্পিউটার ইঞ্জিনিয়ারিং এর ছাত্র হিসেবে ভাল ভাবে সি জানা সব থেকে বেশি প্রয়োজন বলে আমার মত অনেকেই মনে করেন, ভার্সিটির প্রথম দিকে যখন সি শিখায়, তখন পরীক্ষায় ভাল করার একটা আগ্রহ থাকে নিজের ভিতরে। শুধু পরীক্ষায় ভাল করলেই প্রোগ্রামিং শেখা যায় না এ কথা সর্বজন স্বীকৃত, ভাল প্রোগ্রামার হওয়া তো আরও কঠিন। ভাল প্রোগ্রামার হতে পরিশ্রম এর সাথে বেশি বেশি চর্চা না থাকলে প্রোগ্রামিং এ আপনি অভিজ্ঞ হতে পারবেন না। আমি আমার নিজের অভিজ্ঞতা নিয়ে বলি, একটা সামান্য সেমিকোলনের ভুল আপনি একাধিক বার করতে পারেন বা করবেন।
এমনি কি ওই দিনের জন্য আপনার ধৈর্য শেষও হতে পারে। যা খুবই কষ্টদায়ক। তাই একজন প্রোগ্রামারের সব থেকে বেশি প্রয়োজন মনোযোগ ও ধৈর্য। তামীম শাহরিয়ার সুবিন ভাইকে দেখে কিছুটা উৎসাহিত হয়ে নিজের জানা থাকা জিনিসটা যদি এই সাইটে লিখে রাখি তাহলে আমি যদি কখনো কোন কিছু ভুলে যাই, তাহলে এই সাইট থেকে দেখে নিতে পারবো। এই সব কথা চিন্তা করেই সি নিয়ে লিখা।
আমি আপনাদের একটা স্বরন করিয়ে দিতে চাই যা সব সময়ই সবাই সবাইকে বলে থাকে। কাউকে শিখানোর ব্যাপারটা ওত সহজ না। নিজ চেষ্টা সবচেয়ে বড় চেষ্টা নিজে চেষ্টা করলে আপনি অনেক দূর যেতে পারবেন। আর কাউকে সি শিখানোর মত পর্যাপ্ত পরিমান জ্ঞান আমার এখনো হয় নাই। আমি মনে করি পর্যাপ্ত জ্ঞান কোন দিনও আমার হবে না। সারা জীবন মানুষের পাশে থেকে বাকী পথটা যাতে পেড়োতে পারি। এই আমার কামনা।
চার্লজ ব্যাবেজ যখন কম্পউটার আবিষ্কার করে ছিলেন তখন কম্পউটার মূলত গননা যন্ত্র হিসাবে সবাই ব্যবহার করতো। তারপর আস্তে আস্তে এটা দিয়ে আমরা নানা কাজ করতে পারি। আমরা এখন এটা দিয়ে গেমস খেলি, মুভি দেখি, ইন্টারনেট ব্রাউজিং করি আর নানা ধরনের কাজে এটা ব্যবহার করে থাকি।
প্রোগ্রামিং কি?
আমরা অনেকেই এই প্রশ্ন টির উত্তর জানি না। প্রোগ্রামিং হল প্রোগ্রাম বানানো বা সফটওয়্যার বানানো বা কম্পিউটার এর জন্যছোট(কিংবা বড়!) টুল বানানো যা দিয়ে আপনি অনেক কিছুই করতে পারেন। এটিই হল প্রোগ্রামিং এর ব্যাসিক একটা সংজ্ঞা। প্রোগ্রামিং ল্যাংগুয়েজ হল আপনি যা দিয়ে আপনার প্রোগ্রামটি বানাবেন অর্থাৎ যে ভাষাটি দিয়ে আপনি আপনার কাঙ্খিত প্রোগ্রামটি বানাবেন। প্রোগ্রামাররা সেটাকে বলেন প্রোগ্রাম লিখা। কারণ আপনাকে প্রোগ্রামটি প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে লিখে লিখেই বানাতে হবে। প্রোগ্রামিং এর একটি উতকৃষ্টি সজ্ঞা হল, কম্পউটারের মাধ্যমে কোন সমস্যা সমাধানের জন্য প্রয়োজনীয় নিদের্শমালার সমষ্টিকে প্রোগ্রাম বলা হয়। আর এই ধারা বণর্না বা প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রাম পদ্ধতি বা প্রোগ্রামিং বলা হয়। অন্য কথায়, কোন সমস্যা অল্প সময়ে এবং সহজে সমাধানের উদ্দেশ্যে সম্পাদানের অনুক্রমে নিদের্শাবলী সাজানোর কৌশলকে প্রোগ্রামিং বলা হয়।
প্রোগ্রামিং ভাষা এর মানে আবার কি ?
সারা জীবন শুনে আসলাম বাংলা, হিন্দী, ইংলিশ, আরবী, ফারসী, উর্দু, জাপানীজ, চায়নীজ এই গুলা ভাষা। এটা আবার কোন দেশের ভাষা। এটা সব দেশের প্রোগ্রামারদের ভাষা। এটা দিয়ে কম্পউটারের সাথে আপনাকে কথা বলতে হবে। “আমি ভাত খামু” বললে তো আর কম্পিউটার বুঝবে না তাকে বুঝানোর জন্য আপনাকে যে ভাষা ব্যবহার করতে সেটাই প্রোগ্রামিং ভাষা। “কম্পিউটারের মাধ্যমে কোন সমস্যা সমাধান তথা প্রোগ্রাম রচনার জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রাম ভাষা বলা হয়। বিভিন্ন ধরনের প্রোগ্রাম রচনার জন্য বিভিন্ন ধরনের প্রোগ্রাম ভাষা ব্যবহৃত হয়। আগেই বলছে আমরা বাংলা, হিন্দীতে যাই বলি না কেন কম্পিউটার এই সব ভাষা বোঝে না। আসলে শেষ পর্যন্ত কম্পিউটার বোঝে শূন্য (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. ”
প্রোগ্রামটা আসলে কেন করবো??
আমাকে জিজ্ঞেস করতেছেন কেন ? আপনি প্রোগ্রামিং করবেন , আর আপনি জানেন না, কেন প্রোগ্রামিং করবেন ? একটু রেগে গেলাম এতক্ষন তাহলে প্রোগ্রামিং নিয়া কি বললাম এই গুলা কি হাবিজাবি কথাবার্তা নাকি। ( :P :P আমি কিন্তু মজা করেছি:D :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 এর মিশ্রনে তৈরি। যা দিয়ে দুই কাজই করা যায়। আরো অনেক গুলো কারন রয়েছে কেন সি প্রোগ্রামিং শেখা জরুরী। উচ্চ বিদ্যালয়ে যেতে হলে আপনাকে প্রাইমারী শেষ করতে হবে তা না হলে উচ্চ বিদ্যালয়ের বইয়ের পাতার সাথে নিজেকে সামলাতে পারবেন না। তাই অন্য প্রোগ্রামিং করার আগে সি দিয়ে শুরু করেন দেখবেন অন্য প্রোগ্রাম গুলা আস্তে আস্তে গার্ল ফ্রেন্ডের মত ধরা দিবে।
প্রোগ্রামিং সি-এর ইতিহাস:
মার্টিন রিটির তৈরিকৃত BCPL (বেসিক সিপিএল) থেকে প্রোগ্রামিং ভাষা খেকে B প্রোগামিং ভাষা ডেভেলপ করা হয়। B প্রোগ্রামিং ভাষা ছিল অত্যন্ত জটিল তাই এই সব সীমাবদ্ধতা দূরীকরনে। এই সব জটিলতা দূরীকরনের লক্ষ্যেআমেরিকার বেল ল্যাবরেটরিতে ডেনিস রিচি নামক প্রোগ্রামার এই C ভাষাটি ডেভেলপ করেন। B ও BCPL অনুকরন করে DEC PDP-11 কম্পিউটারে ব্যবহার উপযোগী করে UNIX অপারেটিং সিষ্টেম ব্যবহার করে তৈরি করেন C ল্যাংগুয়েজ। এতে করে B প্রোগ্রামিং ল্যাংগুজের সকল সিমাবদ্ধতা দূর হয়ে যায়। সেই সময় মাইক্রো কম্পিউটারের জনপ্রিয়তা বৃদ্ধির সাথে সাথে সি প্রোগ্রামিং লায়ংগুয়েজ হিসাবে বেশি ব্যবহৃত হত ও একই সাথে ব্যপক জনপ্রিয়তা পায় কারন তখনকার প্রেক্ষাপটে সি ছিল একমাত্র ল্যংগুয়েজ যা যে কম্পিউটারে ডেভেলপ করা হত ঐ কম্পিউটার ছাড়াও অন্য কম্পিউটারে চালানো যেত।
সি এর জনপ্রিয়তা বৃদ্ধির কারনে ১৯৮৩ সালে ANSI (American National Standard Institute) C ল্যাংগুয়েজের একটি আদর্শ মান নির্ধারন করে। এই আদর্শ মান সম্বলিত সি ল্যাংগুয়েজই হল ANSI C. ANSI C তে পূর্বের সি এর সকল ফিচার এড করার সাথে সাথে নতুন কিছু ফিচারও যোজ করা হয়। বর্তমেন ব্যবহৃত সকল কম্পাইলার(অনুবাদক) ANSI এর মান আনুযায়ী তৈরি করা।
১৯৭০ সালে, কেন থম্পসন, বেল ল্যাবস এ কাজ করে বি ভাষা উন্নয়নশীল প্রক্রিয়া শুরু করেছিলেন। বি ছিল একটি পরিবর্তিত BCPL এর প্রোগ্রামিং এর জন্য সিস্টেম প্রোগ্রামিং জন্য নির্দিষ্টভাবে লিখিত রূপ। অবশেষে ১৯৭২ সালে, একটি কেন থম্পসন, ডেনিস রিচি, এর সহ – কর্মী সি কিছু সর্বজনীনতা বি ভাষা থেকে পাওয়া ল্যাঙ্গুয়েজ , আজকের প্রোগ্রামিং সি।
৭০ এবং ৮০ দশকের দিকে সি এর জনপ্রিয়তা বাড়ার সাথে সাথে এর অনেকগুলো ভার্সন তৈরি হয়। ১৯৮৩ সালে আমেরিকান মাননিয়ন্ত্রক সংস্থা সি এর ১টি আদর্শ ভার্সন তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা আমেরিকান মাননিয়ন্ত্রক সংস্থা সি (আনসি সি (ANSI C)) নামে পরিচিত। পরবর্তিতে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯০ সালে সি এর এই আদর্শ ভার্সনটি গ্রহণ করে, যা সি৯০ নামে পরিচিত। মুলত “সি৮৯” এবং “সি৯০” একই ভাষা। যুগের প্রয়োজনে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯৫ সালে এই সংস্করণকে বর্ধিত করে এবং পরবর্তিতে ১৯৯৯ সালে সম্পূর্ণ নতুন একটি সংস্করণ প্রকাশ করে যা সি৯৯ নামে পরিচিত। সর্বশেষ ২০১১ সালে সি প্রোগ্রামিং ল্যাঙ্গুয়েজের নবীনতম সংস্করণ সি১১ প্রকাশিত হয়।
প্রোগ্রামিং সি সহজ না কঠিন???
বাপুরে প্রশ্ন একখান হইলো গিয়া এইটা। কি যে উত্তর দিমু সেটা বুঝাটাই দায়। আমার নিজের উদ্দেশ্য সি কে ভালভাবে জানা এবং আপনাদেরকে জানানো। আমি ভালভাবে জানতে পারলেই তো আপনাদের মাঝে ভালভাবে উপস্থাপন করতে পারবো তাই নয় কি! মানুষ জন্মগ্রহন করে কেউ কখনই নিজে নিজে হাটা শিখেন নি। কেউ না কেউ তাকে হাটা শিখাইছে। সি এর সাথে সাইকেল চালানো শিখার তুলনা করি।
সাইকেল চালাতে যে কত ব্যাথা পাইছেন সেই কথা কি মনে আছে আপনাদের? সি শিখতে গেলে প্রাথমিক পর্যায়ে একটু ধাক্কা তো খাবেন এটাই স্বাভাবিক। ছোটবেলা থেকে উইন্ডোজ চালিয়ে বড় হয়েছেন লিনাক্স চালিয়ে দেখেন একটু কষ্ট তো লাগবেই মানিয়ে চলতে হবে এই আর কি। একটা বিষয় ঠিক তখনি কঠিন হয় যখন আপনি ব্যাপারটা কঠিন ভাবে নেন আর সহজ ভাবে নিলে সি আপনার কাছে সহজই মনে হবে। আমার মতে একটু মনোযোগ দিয়ে অনুশীলন করলে সি কে খুব সহজ মনে হবে।
পৃথিবীতে কঠিন বলে কিছুই নেই যদি ব্যাপারটা আপনি সি এর ক্ষেত্রে ভেবে নেন। সি শিখার ইচ্ছা আপনাকে পথ দেখাবে। যত বেশি কঠিন ভাববেন ততই ভয় পাবেন। আবার যদি এমন হয়, যে প্রোগ্রামিং করতে গিয়ে ভয় চলে এসেছে তার কাছে বুদ্ধি জিজ্ঞেস করেন, তাহলে আর কিছুই করতে হবে না। ঐখানেই প্রোগ্রামার হওয়ার ইচ্ছা মাটি চাপা দিয়ে আসবেন।
এত বড় প্রোগ্রামটা দেখার পর অনেকেই ভয় পেয়ে গেচজেন ইতিমধ্যে। মাউন্টেন ডিও খান ভয়ের পর জয়। আস্তে আস্তে লেগে থাকেন ভয়কে জয় করবেন। আর যারা অনেক বেশী ঘাবড়িয়ে গেছেন তারা আর সামনের দিকে না যাওয়াটাই ভাল হবে আমার মতে।
কিভাবে কাজ করে প্রোগ্রামিং সি ?
অনেকের কাছে এই প্রশ্নটা শুনতে হয়। আমিও আমার নিজের স্যারকে এই প্রশ্নটা করেছিলাম। কিভাবে এই প্রোগ্রামিংটা কাজ করে। আমি একটা কোড লিখলাম হিবজিবি এটা দিয়ে কি এমন হবে। তবে এতটুকু তো বুঝতে পেরেছেন সফটওয়্যার আর ওয়েবের ক্ষেত্রে কাজে লাগে বিস্তারিত আরেক দিন আলোচনা করা যাবে। বিস্তারিত আমরা যখন প্রোগ্রামিং কোডিং শুরু করবো তখনি আলোচনা করা যাবে। আপতত নিচের চিত্রগুলা দেখে নিতে পারেন।
কোথা থেকে শুরু করবেন ?
কোথা থেকে শুরু করবেন তার জন্য আপনাকে তামীম শাহরিয়ার সুবিন ভাইয়ের দ্বিমীক এ ফ্রি কোর্স করতে পারেন।
তার ভিডিও টিউওটরিয়াল গুলাও দেখতে পারেন।
আর সাথে আমি আপনাদের একটু সাহায্য করার জন্য ধারাবাহিক ভাবে টিউন চালিয়ে যাবো ইনশাল্লাহ।
প্রোগ্রামিং সি এর গুরুত্বপূর্ণ কিছু বইঃ
প্রোগ্রামিং সি এর জন্য অনেক বই আছে। সব বই অনুসরন করাটা আসলেই অনেক কঠিন ব্যাপার।
বাংলা কোন বই যদি অনুসরন করে নিসঙ্কোচে তামীম শাহরিয়ার সুবিন ভাইয়ের বইটা অনুসরন করতে পারে। তবে বাংলাদেশের অধিকাংশ বিশ্ববিদ্যালয় গুলোতে
- Schaum’s Outlines programming with c By Byron Gottfried
- tech Yourself C By Herbat Schiltd
- Programming in c By Stephen G. Kochan এইগুলা মূলত সব ভার্সিটি তে দেখা যায় তাছাড়া আরো বই আছে
- Head First C by OREILLY ( A Brain Friendly Guide )
- Bible of Programming C for Linux
- C For Dummies, 2nd Edition The C Answer Book- Solutions to
- The Exercises in The C Programming Language The_C_Answer_Book
- C Programming – Ebook
- Programming_Challenges
- Art_of_Programming_Contest_SE_for_uva
- ANSI C Programming by Brian Wkernighan $ Dennis M.Ritchie
- The C Programming Language – From The O’Reilly Anthology
- C Pocket Reference 2002
আমি Byron Gottfried এর বইটা অনুসরন করি। আপনারা গুগলে সার্চ দিয়ে অন্য বই গুলা ডাউনলোড করে নিতে পারেন। আর না পেলে জানাবেন আমি লিঙ্ক দেওয়ার চেষ্টা করবো। আমি আপাতত তামীম শাহরিয়ার ভাইয়ের বইয়ের লিঙ্ক এবং Byron Gottfried এর বইয়ের লিঙ্ক দিবো।
সি শেখার কিছু ওয়েবসাইটঃ
- 1. http://www.cprogramming.com/
- 2. http://www.cprogrammingexpert.com/
- 3. http://www.mycplus.com/category/tutorials/c-programming-tutorials/
- 4. http://www.eskimo.com/~scs/cclass/notes/top.html
- 5. http://www.tutorialspoint.com/ansi_c/c_introduction.htm
- 6. http://www.cs.cf.ac.uk/Dave/C/CE.html
- 7. http://www.programmingsimplified.com/c-program-examples
- 8. http://www.ibm.com/developerworks/aix/library/au-hook_duttaC.html
- 9. http://einstein.drexel.edu/courses/Comp_Phys/General/C_basics/
- 10. http://www.iu.hio.no/~mark/CTutorial/CTutorial.html
- 11. http://cprogramminglanguage.net/
প্রোগ্রামিং প্রতিযোগিতার অংশগ্রহনের জন্য কিছু সাইটঃ
- 1. https://projecteuler.net/
- 2. http://www.spoj.com/
- 3. http://uva.onlinejudge.org/
- 4. http://www.xmarks.com/
- 5. https://www.topcoder.com/tc
- 6. http://codeforces.com/
- 7. http://www.ioinformatics.org/index.shtml
- 8. http://icpc.baylor.edu/
সি প্রোগ্রাম দিয়া করা একটি লাইট সেনসোরঃ
প্রোগ্রামিং ল্যাঙ্গুয়েজ এর ম্যাপঃ
অনেক গুলা প্রোগ্রামিং এর ভাষা দিয়ে ম্যাপ কিছু বুঝা যায় না মনে হয়।
বাকী থাকা কিছু প্রশ্ন ও উত্তরঃ
প্রশ্ন :এই প্রোগ্রামিং নিয়া দুই চারটে কথা সবাই বলে উরাল মারে? আপনিও মারবেন!
উত্তর : এই প্রশ্নের সত্যতা আমি নিজেই দেখেছি। অনেকে প্রথম কয়েকটা টিউন করে চলে যায় আর ধারাবাহিক ভাবে চালানোর নাম নাই। আমি আশা দিবো না আমি আপনাদের ভালবাসা পেলে ইনশাল্লাহ সামনেও টিউন চালিয়ে যাবো। আপনাদের পাশে থাকাটা আমার একান্ত কাম্য।
কোন ব্যাপারে সমস্যা হলে জানাবেন। উপরোক্ত টিউনটা আমি একটানা দুপুরের খাবারের পর লিখছি তাই ভুল ত্রুটি হতে পারে। তা ক্ষমা দৃষ্টিতে দেখবেন। কোন পরামর্শ থাকলে ফেইসবুকে মেসেজ করতে পারেন।
আমি খুব তাড়াতাড়ি উত্তর দিতে চেষ্টা করবো। আবার পরের টিউন নিয়ে হাজির হবো কথা দিতে পারতাছি না দেশের যা অবস্থা পেট্রোল একটা পড়লেই ঢাকা মেডিকেলের বার্ন ইউনিটে যাইয়া প্রোগ্রামিং করতে হবে মৃত্যুর সাথে :P । সবাই ভাল থাইকেন আর আমার জন্য দোয়া কইরেন। আজকের মত আল্লাহ হাফেজ।