প্রাথমিক আলোচনা বলতে আসলে আমি একটু ভূমিকা নিয়ে কথা বলব, যা না পড়লেও কোন ক্ষতি নাই। কম্পিউটার ইঞ্জিনিয়ারিং এর ছাত্র হিসেবে ভাল ভাবে সি জানা সব থেকে বেশি প্রয়োজন বলে আমার মত অনেকেই মনে করেন, বিশ্ববিদ্যালয়ে প্রথম দিকে যখন সি শিখায়, তখন পরীক্ষায় ভাল করার একটা পায়তারা থাকে নিজের ভিতরে এমনকি শিক্ষকের এর ভিতরেও। শুধু পরীক্ষায় ভাল করলেই প্রোগ্রামিং শেখা যায় না এ কথা সর্বজন স্বীকৃত, ভাল প্রোগ্রামার হওয়া তো আরও কঠিন। ভাল প্রোগ্রামিং করতে বা ভাল প্রোগ্রামার হতে পরিশ্রম আর সাথে বেশি বেশি প্রাকটিস এর বিকল্প নাই। আমার অভিজ্ঞতার আলোকে বলতে পারি, সামান্য সেমিকোলনের একটা ভুল আপনি একাধিক বার করতে পারেন বা করবেন। এমনি কি ওই দিনের জন্য আপনার ধৈর্য শেষও হতে পারে। যা খুবই কষ্টদায়ক। তাই একজন প্রোগ্রামারের সব থেকে বেশি প্রয়োজন মনোযোগ ও ধৈর্য।
তো, এই সব ভেবে আমার কাছে সব থেকে ভাল পদ্ধতিটি মনে হল, আমি যদি সি টা আমার ব্যক্তিগত ওয়েব সাইটে লিখে রাখি তাহলে আমার অনেক বই পরতে হবে, ওয়েব সাইট ঘাটতে হবে, ভিডিও দেখতে হবে এমন কি ছোট ছোট সমস্যায় পরলে বা আমার লেখায় কোন ভুল থাকলে অভিজ্ঞরা অবশ্যই সাহায্য করবে। মূলত এই ধারনা থেকেই প্রোগ্রামিং সি নিয়ে ধারাবাহিক ভাবে লেখা কথা মাথায় আসে।
আমি একটা কথা সময় বলি, ভবিষ্যতেও বলব (অবশ্যই কাউকে আঘাত বা কষ্ট দিতে নয় , কেউ কষ্ট পেলে আমি দুঃখিত) কাউকে শিখানোর জন্য আমি লিখি না, কারণ কাউকে কখনো শিখান যায় না, যদি সে না শিখতে চায়। আর কাউকে শেখানোর পর্যাপ্ত জ্ঞান আমার হয়নি, আমি জানি হয়তো কোন দিন হবেও না, কারণটা সহজ; আমি সারা জীবন ছাত্র থাকতে চাই। সবার ভালবাসা কাড়বো আর শিখবো। আনন্দ!!
কম্পিউটারের মাধ্যমে কোন সমস্যা সমাধানের জন্য প্রয়োজনীয় নির্দেশমালার সমষ্টিকে প্রোগ্রাম (program) বলা হয়। আর এই ধারা বর্ণনা বা প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রাম পদ্ধতি বা প্রোগ্রামিং (programming) বলা হয়। অন্য কথায়, কোন সমস্যা অল্প সময়ে এবং সহজে সমাধানের উদ্দেশ্যে সম্পাদনের অনুক্রমে নির্দেশাবলী সাজানোর কৌশলকে প্রোগ্রামিং বলা হয়।
কমপিউটারের মাধ্যমে কোন সমস্যা সমাধানের জন্য প্রয়োজনীয় নিদের্শমালার সমষ্টিকে প্রোগ্রাম (program) বলা হয়। আর এই ধারা বণর্না বা প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রাম পদ্ধতি বা প্রোগ্রামিং (programming) বলা হয়। অন্য কথায়, কোন সমস্যা অল্প সময়ে এবং সহজে সমাধানের উদ্দেশ্যে সম্পাদানের অনুক্রমে নিদের্শাবলী সাজানোর কৌশলকে প্রোগ্রামিং বলা হয়।
কম্পিউটারের মাধ্যমে কোন সমস্যা সমাধান তথা প্রোগ্রাম রচনার জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রাম ভাষা (Programming Language) বলা হয়। বিভিন্ন ধরনের প্রোগ্রাম রচনার জন্য বিভিন্ন ধরনের প্রোগ্রাম ভাষা ব্যবহৃত হয়। পৃথিবীতে কোটি কোটি মানুষ অনেক ধরনের ভাষা ব্যবহার করে। কিন্তু কম্পিউটার এই সব ভাষা বোঝে না, সে শুধু বুঝে (1 , 0) যাকে বাইনারি সংখ্যা বলে । মেশিন ল্যাঙ্গুয়েজ নামেই বেশি পরিচিত। সুতরাং এখানে স্পষ্ট যে কম্পিউটার এর ভাষা মেশিন ল্যাঙ্গুয়েজ আর প্রোগ্রামিং ল্যাঙ্গুয়েজ হচ্ছে C, C++, C#, Python, Perl , Ruby ইত্যাদি, যা নিয়ে পোস্ট এর শেষ দিয়ে আমি আলোচনা করব।
সাধারণ ভাবে বলা যায় এভাবে, “যে বা যিনি কম্পিউটার এর জন্য সফটওয়্যার তিরি করেন, সমস্যা সৃষ্টি ও সমাধান করে, ওয়েব ডেভেলপ করে, কোড লিখে এবং কোড বিশ্লেষণ করে, সেই প্রোগ্রামার।”
“The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software.”
“The term programmer can be used to refer to a software developer, Web Developer, Mobile Applications Developer, Embedded Firmware Developer, software engineer, computer scientist, or software analyst.”
“টাচ লাইন থেকে”: “web developer, Analysis, computer scientist(engineer) Coder / Programmer এর সংজ্ঞার মধ্যে রয়েছে সূক্ষ্ম পার্থক্য এবং রয়েছে যথা রীতি অনেক বেশি বিতর্ক .
পিছনের কথা: ব্রিটিশ অঙ্কশাস্ত্রবিদ অ্যাডা লাভলেস ইতিহাসের প্রথম প্রোগ্রামার হিসেবে সমধিক পরিচিত। তিনিই প্রথম অ্যালগরিদম বিষয়টা ব্যাখ্যা করেন। ১৮৪২ সালে চার্লস ব্যাবেজের analytical engine ব্যবহার করে কাজ শুরু করেন।
প্রথমত আপনি প্রোগ্রামার হতে চান। বিভিন্ন প্রোগ্রামে যোগ দিয়ে নিজের মেধার সাক্ষর রাখতে চান। নতুন কিছু সৃষ্টি করতে চান, যা কেউ আজও করেনি । ধরেন আপনি এমন একটা সফটওয়্যার তৈরি করতে চান, যা কীবোর্ড ছাড়াই শুধু ভয়েস পরিবর্তন করে স্ক্রিন এ লিখতে পারে। তাহলে কেমন হবে বলুন তো? জোশ না? যদি কাজটি সহজ নয়, কিন্তু চেষ্টা করতে দোষ কি! দেখা গেল অনেক চেষ্টা করেছেন কিন্তু যতটুকু অভিজ্ঞতা থাকলে একজন ভাল প্রোগ্রামার হওয়া যায়, আপনি টা হতে পারলেন না । তাহলে কি আপনার এত দিনের শিক্ষা বৃথা? না। সে ক্ষেত্রে আপনি ওয়েব ডেভেলপার হিসেবে কাজ শুরু করতে পারবেন (ওয়েব ডিজাইন আর ওয়েব ডেভেলপার এক জিনিস নয়, গুলিয়ে ফেলবেন না যেন) বর্তমানে এক জন ওয়েব ডেভেলপার দাম ও কিন্তু একজন প্রোগ্রামারের থেকে কম না (Inspiration Only !)। আশা করছি বুঝতে পেরেছেন।
এত প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকে সি কেন? কারণ সহজ প্রোগ্রামিং (PROGRAMMING ANSI C ) প্রোগ্রামিং এর রাজা । প্রোগ্রামিং সি কে "MOTHER OF PROGRAMMING" বলা হয়। সুতরাং বুঝতেই পারতেছেন , প্রোগ্রামিং এর "মা" কে শিখতে পারলে তার পরের প্রজন্ম এমনিতেই আপনার কাছে সহজ হয়ে ধরা দিবে। অনেক যুক্তি তর্ক দিয়ে কেন ব্যাখ্যা করা যেত কিন্তু “কথায় কথা বাড়ে, কাজের কাজ কিছুই হয় না”। আমি শুধু আমার মত করে লিখতে চাই, যাতে করে আমি বুঝি। যদি কেউ না বুঝেন, প্রশ্ন করলে উত্তর দেয়ার চেষ্টা করব।
চিত্রটি দেখলে অনেক কিছু পরিষ্কার হবে.........
সি হল অপারেটিং সিস্টেম লেখার জন্য সবচেয়ে বেশী ব্যবহৃত প্রোগ্রামিং ভাষা। ইউনিক্স সি ভাষায় লেখা প্রথম অপারেটিং সিস্টেম। উত্তরকালের Microsoft উইন্ডোজ , ম্যাক ও এস এক্স , নু/লিনাক্স সবগুলোই সি প্রোগ্রামিং ভাষায় লেখা। সি শুধু অপারেটিং সিস্টেমের ভাষাই নয়, বর্তমানকালে জনপ্রিয় প্রায় সকল প্রোগ্রামিং ভাষার প্রেরণা সি প্রোগ্রামিং ভাষা। প্রকৃতপক্ষে পার্ল, পিএইচপি, পাইথন, রুবি প্রত্যেকটা ভাষাই সি তে লেখা। ধরুন আপনি স্প্যানিশ, ইটালিয়ান , ফ্রেঞ্চ বা পর্তুগিজ ভাষা শিখতে চাচ্ছেন। তার আগে ল্যাটিন শেখা কি আপনার কাজে আসবে নাকি না? যেহেতু ল্যাটিন ভাষা থেকেই এসকল ভাষার উৎপত্তি। সি শেখা আপনাকে সি ভাষায় তৈরি করা পুরো প্রোগ্রামিং ভাষার পরিবারকে বুঝতে সাহায্য করবে – আপনাকে দেবে স্বাধীনতা। মার্টিন রিটির তৈরিকৃত BCPL (বেসিক সিপিএল) থেকে প্রোগ্রামিং ভাষা খেকে B প্রোগামিং ভাষা ডেভেলপ করা হয় এবং সেখান থেকে ১৯৭০ সালে আমেরিকার বেল ল্যাবরেটরিতে ডেনিস রিচি নামক প্রোগ্রামার এই C ভাষাটি ডেভেলপ করেন। ১৯৮৩ সালে আমেরিকার National Standard Ins সে সময়ে প্রচলিত ইউনিক্স সি এর জন্যে মান (Standard) নির্ধারণ করে দেন। সি প্রোগ্রামিং এর ক্ষেত্রে অনেকগুলো পথ রয়েছে। যেমন: আনসি সি, বোরল্যান্ড সি, টার্বো সি, Microsoft সি ইত্যাদি। এগুলোর মধ্যে ১ম টি হলো Standard এবং বাকিরা এই Standard অনুসরণ করে। আবার এরা প্রত্যেকে এক একটি কম্পাইলার।
পিডিপি-১১ এ ইউনিক্স অপারেটিং সিস্টেমের নিয়ন্ত্রণে এ ভাষার প্রয়োগ শুরু হয়েছিল। বর্তমানে অত্যন্ত শক্তিশালী এবং জনপ্রিয় উচ্চতর ভাষা হিসেবে সি পরিচিত। সি না থাকলে আমরা পেতাম না ইউনিক্সের মত অপারেটিং সিস্টেম, পেতাম না লিনাক্স কিংবা ম্যাক ওএস। সি দিয়ে তৈরি করা হয় অপারেটিং সিস্টেমের কার্নেল, হার্ডওয়্যার নিয়ন্ত্রকসহ আরো কত কি! কম জায়গা ও রিসোর্স নিয়ে কাজ করা সফটওয়্যার তৈরিতে সি এর জুড়ি নেই।
ডেনিস Ritchie
১৯৭২ সালে ডেনিস রিচি বেল ল্যাবরেটরিতে উদ্ভাবন করেন প্রোগ্রামিং ল্যাঙ্গুয়েজ সি। প্রোগ্রামিং সি এর নীতি ও ধারণা অনেক আগে ভাষা বি এবং B এর আগে পূর্বপুরুষদের BCPL এবং CPL থেকে নেওয়া হয়েছে. CPL (Combine Programming Language - সংযুক্ত প্রোগ্রামিং ভাষা ) ও BCPL উভয় ভাষাই ছিল খুব উচ্চ স্তরের, প্রোগ্রামিং সি তৈরির উদ্দেশ্য ছিল, মেশিন ভাষা স্বাধীন ভাবে প্রোগ্রামিং এ সক্ষম এবং প্রোগ্রামারদের তথ্য, ব্যক্তিগত বিট ব্যবহার নিয়ন্ত্রণের মান উন্নত। CPL প্রধান অসুবিধা ছিল যে এটা অনেক অ্যাপ্লিকেশন ব্যবহারের জন্য খুব বড়. ১৯৬৭ সালে, BCPL একটি পরিবর্তিত CPL হিসাবে তার মৌলিক বৈশিষ্ট্য ধারণকারী হিসেবে নির্মিত করা হয়েছিল। ১৯৭০ সালে, কেন থম্পসন, বেল ল্যাবস এ কাজ করে বি ভাষা উন্নয়নশীল প্রক্রিয়া শুরু করেছিলেন। বি ছিল একটি পরিবর্তিত BCPL এর প্রোগ্রামিং এর জন্য সিস্টেম প্রোগ্রামিং জন্য নির্দিষ্টভাবে লিখিত রূপ। অবশেষে ১৯৭২ সালে, একটি কেন থম্পসন, ডেনিস রিচি, এর সহ – কর্মী সি কিছু সর্বজনীনতা বি ভাষা থেকে পাওয়া ল্যাঙ্গুয়েজ , আজকের প্রোগ্রামিং সি।
কেন থম্পসন
ভাষাটি তৈরির প্রথম উদ্দেশ্য ছিল ইউনিক্স অপারেটিং সিস্টেম-এর কোড লেখায় এর ব্যবহার, কিন্তু অচিরেই এটি একটি বহুল ব্যবহৃত ভাষায় পরিণত হয়। পরে সি ভাষার থেকে ধার নিয়ে প্রত্যক্ষ বা পরোক্ষভাবে, যেমন: C#, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python, and Unix's C Shell সহ পরবর্তীকালের অনেক প্রোগ্রামিং ভাষার উপর সি'র গভীর প্রভাব পড়েছে। সি এর সবচেয়ে আকর্ষণীয় দিক হচ্ছে এর বহনযোগ্যতা। সি দিয়ে রচিত প্রোগ্রাম যেকোনো অপারেটিং সিস্টেমের কম্পিউটারে চালানো যায়। ৭০ এবং ৮০ দশকের দিকে সি এর জনপ্রিয়তা বাড়ার সাথে সাথে এর অনেকগুলো ভার্সন তৈরি হয়। ১৯৮৩ সালে আমেরিকান মাননিয়ন্ত্রক ANSI (American National Standards Institute - ANSI ) এর ১টি আদর্শ ভার্সন তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা ANSI - C (American National Standards Institute C- ANSI C)নামে পরিচিত। পরবর্তীতে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯০ সালে সি এর এই আদর্শ ভার্সনটি গ্রহণ করে, যা সি৯০ নামে পরিচিত। মূলত "সি৮৯" এবং "সি৯০C89" একই ভাষা।
আমার মত বলি, প্রোগ্রামিং সি সহজ, সব থেকে সহজ। আমার যুক্তি, আমি সি ভাল ভাবে শিখবো এই প্রতিজ্ঞা করে মাঠে নেমেছি। যা আমাকে শিখতেই হবে, তাকে কঠিন ভাবার কোন কারণ আমি দেখি না, তাই আমার কাছে প্রোগ্রামিং সি। এবার আপনার কথা বলি, আপনার কাছেও কি সি সহজ মনে হবে? আপনার প্রশ্ন, “আমি কি সি শিখতে পারবো?” “আমি তো প্রোগ্রামিং Background এর না? ” আপনার প্রশ্নের পর আমার প্রশ্ন হল, “আপনি কি প্রোগ্রামিং শিখতে চান?” যদি উত্তর হ্যাঁ হয়। তাহলে আপনার জন্য বলছি, এই পৃথিবীতে এমন একটা কাজ দেখান যেটা সহজ? বা খুব সহজ?? একটিও নেই। আমার কাছে কঠিন এর সংজ্ঞা টা এমন, “আমি যা না পারি, তাই সব থেকে কঠিন। আমি যা না জানি – তাই আমার কাছে সব থেকে কঠিন” একটু এভাবে চিন্তা করুন, এক ব্যক্তি আপনাকে একটি প্রশ্ন করল যে, উসাইন বোল্ট পর্যন্ত কত গুলো অলিম্পিক গোল্ড পেয়েছে? যদি বলতে পারেন তাহলে আপনাকে ১ কোটি টাকা দিবে। কিন্তু আপনার এর উত্তর জানা নেই। তাহলে কি হল। এটাই সারা জীবন আপনার কাছে কঠিন প্রশ্ন (উত্তর) হয় থাকবে।
তার মানে কঠিন বলে কিছু নেই। আপনার ইচ্ছা আপনাকে পথ দেখাবে। যত বেশি ভাবেন ততই ভয় পাবেন। আবার যদি এমন হয়, যে প্রোগ্রামিং করতে গিয়ে ভয় চলে এসেছে তার কাছে বুদ্ধি জিজ্ঞেস করেন, তাহলে আর কিছুই করতে হবে না। ঐখানেই প্রোগ্রামার হওয়ার ইচ্ছা মাটি চাপা দিয়ে আসবেন।
প্রোগ্রামিং সি কিভাবে কাজ করে, তার বিস্তারিত পরে কোন এক পোস্ট লিখব। আজ শুধু একটা চিত্র দেখে রাখুন। যা পরবর্তীতে কাজে লাগবে।
প্রোগ্রামিং সি গুরুত্বপূর্ণ ১০ টি ইবুক
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/
এখানে শুধু একটা প্রোগ্রাম সাজানো আছে। এর প্রতিটি অংশ পরবর্তী এক পোস্ট এ বিস্তারিত দেখানোর চেষ্টা করব। আপাতত ছবিটা দেখুন । ভবিষ্যতে কাজে দিবে।
শেষে কিছু কথা
একটি কথা, যদি আপনি প্রোগ্রামিং ভিতর থেকে না শিখতে চান, তাহলে শুধু শুধু সময় নষ্ট না করে অন্য কিছু জন্য সময় ব্যয় করুন। আর এই লাইন থাকতে চাইলে ধৈর্য পরীক্ষা দিতে হবে অসংখ্য বার।
প্রশ্ন : internet এই রকম অনেকেই দেখা যায় শুরু করে কিন্তু শেষ করেন না? আপনি কত দূর যাবেন?
উত্তর : কাঙ্ক্ষিত প্রশ্ন। আমি সহ অনেকেই বিষয়টা লক্ষ্য করি বা করছি। সত্যি এমন হয়। কারণ টা আর কিছুই না। জারাই এই ধরনের লেখা লেখে বেশির ভাগ ছাত্র। সবার ই পরশু না আছে? ফ্রি সময়ে লেখে। সুতরাং যখন সে ব্যস্ত হয়ে যায় তখন লেখা ছেরে দেয়।
সব থেকে বড় কারণ হল অন্য টা, আমার মতে।
প্রোগ্রামিং এর জানা-অজানা ইতিহাস
প্রোগ্রামিং কনটেন্টের গল্প বা একটি ইতিকথা
প্রোগ্রামিং শুরু করবেন যেভাবে : পরিপূর্ণ গাইডলাইন
প্রোগ্রামিং সি এর সেরা ২০ টি ই-বুক ডাউনলোড করুন
এবার ডাউনলোড করুন প্রোগ্রামিং সি ++ এর ২০ টি সেরা ইবুক
প্রোগ্রামিং ও ওয়ার্ডপ্রেস পরিপূর্ণ টিউটোরিয়াল কেন লিখব,কি লিখব? পিছনের কারণ
=========================================================================
=========================================================================
তথ্য সূত্র: উইকিপিডিয়া, ইবুক, বিভিন্ন বাংলা - ইংলিশ ব্লগ, ইউটিউব ইত্যাদি।
আমি আরিয়ান আরিফ। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 3 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 3 টি টিউন ও 28 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
বাম্পার হইছে, ধন্যবাদ