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

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

কেন?

এখন যদি কাউকে জিজ্ঞেস করা হয় তুমি কেন ক্রিকেট খেল? অথবা তুমি কেন গল্পের বই পড় ? সে বলবে যে “আনন্দের জন্য”। হ্যা ঠিক! প্রোগ্রামিং আনন্দের জন্য করা হয় কারন আগেই বলেছি এটি একটা খেলা “ যুক্তির খেলা”(তবে একে শুধু আনন্দের জন্য করা হয় বললে ভুল হবে কারন এর অনেক বাণিজ্যিক সম্পর্ক ও রয়েছে ……তবে শুরুতে প্রায় সবাই একে আনন্দ হিসেবেই নিয়ে থাকে।) । তাছাড়া যে কেউ ই চাইবে যে তার কম্পিউটার তার কথামত কাজ করুক। তাহলে এর জন্য “প্রোগ্রামিং” এর বিকল্প নেই। এই যে তোমরা এখন যে অপারেটিং সিস্টেমে বসে ব্রাউজার দিয়ে এই পোস্টটি পড়ছ এখানেও রয়েছে প্রোগ্রামিং। আসলে আইটি জগতটাই “প্রোগ্রামিংময়”।
অনেকেই আছে যারা প্রোগ্রামিং সম্পর্কে ইন্টারেস্টেড কিন্তু কিভাবে শুরু করলে ভালো হয় তা হয়তো জানে না। এখন প্রশ্ন আসতেই পারে যে , প্রোগ্রামিং জানতে হলে কি সায়েন্সের স্টুডেন্ট হতে হবে কিনা? অথবা ছোট হলে প্রোগ্রামার (এতক্ষনে প্রোগ্রামার শব্ধটি ব্যবহার করা হয়েছে! বুঝতেই পারছ যে প্রোগ্রামার কি বা কে? :p ) হওয়া যাবে না আবার প্রোগ্রামিং ভারসিটি তে উঠে তারপর শিখতে হয় ইত্যাদি ইত্যাদি …..এমন কিছুই না পড়াশুনার যেমন বয়স নেই তেমনি প্রোগ্রামিং শিখার কোনো বয়স থাকতে পারে বলে অন্তত আমার মনে হয় না। এটা তো এক ধরনের খেলা আগেই বলা হয়েছে। এর আবার বয়স কিসের? 😉
( বিশ্বাস না হলে নিজে একটু গুগল করলেই দেখা যাবে খুব অল্প বয়সে অনেক ছেলে মেয়ে IOI (International Informatics Olympiad) তে অংশগ্রহন করে খুব ভালো ফলাফল করেছে। তারা সবাই কিন্তু ছোটবেলা থেকেই প্রোগ্রামিং সহ বিভিন্ন পছন্দের বিষয় চর্চা করে আসছে 😀 )
Mjc5MjI0Ng.png
ব্যবহারের দিক থেকে বিভিন্ন প্রোগ্রামিং ভাষার  একটি তালিকা
আরেকটি ব্যাপারে দৃষ্টি আকর্ষণ না করলেই নয় যে পেশা হিসেবেও অনেকের কাছে প্রোগ্রামার খুব আকর্ষণীয় । এমনকি অধিকাংশ বেস্‌বল খেলোয়াড়দের চেয়ে  প্রোগ্রামারদের মোট আয় অনেক বেশি !!! তবে কেবল টাকা কামাই করার চিন্তা করে প্রোগ্রামিং করলে সাফল্য পাওয়া ভার ।
Best Programming Languages
গড় বার্ষিক আয়ের দিক থেকে বিভিন্ন প্রোগ্রামিং ভাষার তুলনা

এখন আসা যাক কিভাবে প্রোগ্রামিং শিখা যেতে পারে এবং কি কি জানতে হয়…

প্রোগ্রামিং পুরোটাই লজিক। তুমি যখন প্রোগ্রামিং করবে দেখবে যে তুমি ম্যাথ এর অনেক সূত্র ব্যবহার করছো , যেসব সুত্র এতদিন মুখস্ত করতে করতে মুখে ফ্যানা তুলে ফেলেছো তখন সেগুলো ব্যবহার করে কি সুন্দর সুন্দর কোড করে ফেলছো! তখন কতই না শান্তি পাবে।
অংক পারতে হলে যেরকম কিছু সূত্র এবং লজিক দরকার তেমনি প্রোগ্রামিং লিখতে হলে নির্দিষ্ট “ল্যাঙ্গুয়েজ” এবং “সুডোকোড’’ শিখা প্রয়োজন। প্রোগ্রামিং ল্যাঙ্গুয়েজ হচ্ছে কম্পিউটার এবং প্রোগ্রামার এর মধ্যকার বোধগম্য ভাষা। আর সুডোকোড হচ্ছে কোন কোডের এর সরলকৃত অংশ। তবে হ্যা , শুধু ল্যাঙ্গুয়েজ(সিনট্যাক্স) শিখলেই হয় না পাশাপাশি প্রচুর  প্রবলেম সল্ভ কতে হবে এবং তা অবশ্যই বুঝে…কেননা অনেকে  না বুঝে অনেক প্রব্লেম সল্ভ করে কিন্তু আসলে তার মধ্যে বেসিকের অভাব থেকে যায়।
অনেক ধরনের ল্যাঙ্গুয়েজ রয়েছে ( সি,সি++,জাভা,রুবি,পাইথন,জাভাস্ক্রিপ্ট ইত্যাদি) তবে এর মধ্যে সি এবং সি++ অনেক জনপ্রিয়। কেউ চাইলে যেকোন  লাঙ্গুয়েজ এ প্রোগ্রামিং শিখতে পারে বা শুরু করতে পারে।
প্রথমে তোমাকে বুঝতে হবে যে তুমি কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে চাও। সেভাবে শিখা শুরু করলে আনন্দ পাবে। “কারন ছাড়া কিছুই হয় না” তেমনি বিভিন্ন কাজের জন্য বিভিন্ন ল্যাঙ্গুয়াজ রয়েছে।
এন্ড্রয়েড এপ্লিকেশন এবং প্রোগ্রাম ডেভেলপমেন্ট ঃ
তোমরা অনেকেই  এন্ড্রয়েড সম্পর্কে জানো। এখন, তুমি চাচ্ছ নিজের একটা এপ্লিকেশন বানাতে সে জন্য  ইউনিক একটা আইডিয়া মাথায় রয়েছে কিন্তু তুমি জানো না কিভাবে এপ্লিকেশন বানাতে হয়। সেক্ষেত্রে তোমাকে Java,C,C++,#C শিখতে হবে ।
Temple_run_tree_root.jpg
Temple Run এর মতো নানা জনপ্রিয় গেম তৈরি হয় জাভা ব্যবহার করে !!
যেখানে শিখতে পারবেঃ যেমনঃ Learn-C , Introduction To ProgrammingLynda.comCProgramming.comLearn C The Hard WayUdemyLynda.comOracle.comLearnJavaOnline.org


কৃত্রিম বুদ্ধিমত্তা ডেভেলপমেন্টঃতুমি ভাবছ তুমি নিজে একটা রোবট বানিয়ে সবাইকে তাক লাগিয়ে দিবে । তাই  যদি রোবটিক্স বা AI(Artificial intelligence) এ কাজ করতে চাও তাহলে তোমাকে  AIML,C,C++,Python,#C,Prolog শিখতে হবে।
যেখানে শিখতে পারবেঃ UdemyCodecademy,  LearnPython.orgPython.org,learn AIML – TutorialsPointLearn Prolog Now!
ডাটাবেস ডেভেলপমেন্টঃ
কেউ যদি ডাটাবেসের কাজে এক্সপার্ট হতে চায় তাহলে তাকে
যেখানে শিখতে পারবেঃ SQLCourse.comTutorialsPoint.com,SQLZoo.net,DBASE,FoxPro,Visual FoxPro
গেম ডেভেলপমেন্টঃ
ধরো তুমি গেমসের পোকা! সারাদিন গেমস নিয়েই থাকো। একদিন ভাবলে ধুর অন্যের তৈরি গেমস এর থেকে নিজে একটা গেমস বানিয়ে খেললে মন্দ হয় না( এরকম যদি ভেবে থাকো তাহলে তোমাকে অভিনন্দন কেননা এরকম ভাবনা অল্প কয়েকজনই ভাবে 😀 ) তাহলে তোমাকে গেমস বানাতে হলে যেসব প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে হবে তা হল ঃ #C,Java,C++,Objective C
যেখানে শিখতে পারবেঃ JavaUdemyLynda.comOracle.comLearnJavaOnline,CPlusPlus.comMicrosoft Virtual AcademyMac Developer Library.
ইন্টারনেট এবং ওয়েবপেইজ ডেভেলপমেন্টঃ তোমার অনেকদিনের শখ তোমার নিজের একটা ওয়েবসাইট থাকবে। তুমি সেখানে বিভিন্ন পোস্ট লিখবে, অনেকে সেটা পড়বে। তুমি যা জানাতে চাও তা জানাবে। কিন্তু সমস্যা হচ্ছে যে কিভাবে একটা ওয়েবসাইট বানাবে সেটা জানো না। তাহলে তোমাকে সে ক্ষেত্রে
  • HTML
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • জানতে হবে। উপরের সবগুলোই যে জানতে হবে এমন নয় তুমি যদি  HTML আর CSS
    শিখো তাহলে একটা ওয়েবসাইট বানাতে পারবে এবং চালাতেও পারবে তবে যদি পেজটিকে আর মডিফাইড করতে চাও তাহলে তোমাকে PHP এবং  Javascript শিখতে হতে পারে।
যেখানে শিখতে পারবেঃ UdemyCodecademyLearn-JS.orgHTML Tutorial – W3Schools.
maxresdefault
Codeacademy এর মতো নানা ওয়েবসাইটে HTML শিখা যায় খুব সহজে
এখন আসা যাক কিছু প্রয়োজনীয়  বই এবং ওয়েব সাইটের নাম …………( এই অংশটুকুতে Competitive programming এ বেশি ফোকাস করা হয়েছে)
প্রথমে বাংলায় প্রোগ্রামিং শিখতে হলে তামিম শাহরিয়ার সুবিন এর “কম্পিউটার প্রোগ্রামিং” বইটি সংগ্রহ করে পড়ে ফেলতে পারো। বইটাতে খুব সহজ ভাবে (সি এর মাধ্যমে) প্রোগ্রামিং কে তুলে ধরা হয়েছে। তারপর কেউ চাইলে এর পাশাপাশি Herbert Schildt এর “Teach yourself C” বইটি পড়তে পারো। আবার Brian Kernighan ও Dennis Ritchie  এর লেখা “The C programming Language”  বইটি পড়তে পারো। আবার Stephen G. Kochan  এর  “Programming with C” এর বইটিও দেখতে পারো। বইটিতে সি খুব সুন্দর ভাবে উপস্থাপিত হয়েছে।
সি শেখার পর চাইলে সি++ শিখতে পারো। সি আর সি++ এর মিল রয়েছে। সি++ এর জন্য Teach yourself C++(Herbert Schildt) বইটি ভালো। আবার কেউ যদি ভাল প্রোগ্রামার হতে চাও বা বিভিন্ন কন্টেস্ট এ অংশগ্রহণ করতে চাও তাহলে তাদের Discrete Mathematics করে শিখতে হবে। এর জন্য Kenneth H. Rosen এর  “Discrete Mathematics” বইটি ভাল। তারপর শিখতে হবে Algorithm এর জন্য মাহবুবুল হাসান এর “প্রোগ্রামিং কন্টেস্ট  ডাটা স্ট্রাকচার ও অ্যালগরিদম” বইটি দেখতে পারো। সেখানে সি নিয়ে কিছু আলোচনা রয়েছে।তাছাড়া ইংরেজী তে “Introduction to Algorithms- by Thomas H. Cormen” বইটিও দেখতে পার। তাছাড়া “Data Structure and Algorithm Made Easy by Karumanchi” বইটিও ভালো।
তবে বই দিয়ে ডাটা স্ট্রাকচার এবং এলগোরিদম শিখার আগে এই বিষয়ের উপর অনলাইনে কোর্স করে নিলে খুব সুবিধা পাওয়া যায়। সেজন্য Coursera , Khan Academy , edX থেকে বিনামুল্যে কোর্স নেওয়া যেতে পারে।
প্রয়োজনীয় ওয়েবসাইটঃ
  • http://www.codeblocks.org/ – এখানে কোডব্লক্স(সি/সি++)কম্পাইলার পাওয়া যাবে। ডাঊনলোড (http://www.cprogramming.com/code_blocks/) এবং ইন্সটলেশন প্রসেস জানতে উল্লিখিত ওয়েব সাইট দেখতে পারো।
{
}
দ্বিতীয় বন্ধনীর মাঝের সাইটগুলো প্রোগ্রামিং প্রবলেম প্র্যাক্টিস এর জন্য।
মনে রাখতে হবে যে প্রোগ্রামিং একদিনের বিষয় না। এর জন্য প্রয়োজন চেষ্টা আর লেগে থাকার মানসিকতা!! অনেকেই একে এক খাবারের মতো মনে করে যে নতুন খাবারের নাম শুনলাম আর খেয়ে দেখি কেমন …ভালো না লাগলে বাদ। এটা হয়ে থাকে ধৈর্যের আর লেগে থাকার মানসিকতার অভাবে। Peter Norvig এর একটা আর্টিকেল রয়েছে যে  “Teach Yourself Programming in Ten Years!” তবে বুঝতেই পারছ যে দু’ একদিনে প্রোগ্রামিং শিখা হয় না…তবে হ্যা যদি ২-৩ সপ্তাহ প্রোগ্রামিং নিয়ে বসে থাকার পরও যদি এটাকে “তিতা মনে হয়” তবে বুঝে নাও যে “প্রোগ্রামিং” তোমার জন্য না। সবার জন্য সব হতে হবে এমন তো না!!!
যারা এতক্ষন মন দিয়ে পোস্টটি পড়ছো আর ভাবছ যে প্রোগ্রামিং টা নাহয় শিখেই ফেলি তাদের উদ্দেশ্যে বলছি 😉 একবার এতে মজা পেয়ে গেলে দেখবে এটিই তোমার একমাত্র আনন্দের খোরাক হয়ে দাঁড়াবে। আর হ্যা! তোমাদের জন্য রইল শুভকামনা। তোমাদের প্রোগ্রামিং যাত্রা শুভ হঊক। হয়ত একদিন আমরা ও প্রোগ্রামিং এ  দাপিয়ে বেড়াবো !!!!!!
(বি দ্রঃ প্রোগ্রামিং এর জগতটা অনেক বিশাল। গুটিকয়েক বই পড়লেই এতে ভালো হওয়া যায় নাহ। তাই নতুন কিছু শিখতে হলে গুগল করার অভ্যাস থাকতে হবে। কেননা ইন্টারনেট বা বই থেকে দ্রুত শিখার অভ্যাস ই তোমাকে ভালো প্রোগ্রামার হতে সাহায্য করবে)
এই ওয়েবসাইটের কিছু আর্টিকেলের লিঙ্ক নিচে দেওয়া হলো আরো বিস্তারিত জানার সুবিধার্থে 😉

*প্রোগ্রামিং শিখা ও সমস্যা সমাধানে সহায়ক কিছু বই এবং ও ওয়েবসাইট :

*প্রোগ্রামিং কন্টেস্টে উত্তর প্রদানের নিয়ম এবং অনলাইন বিচারক :

https://ktechweb.org/2016/07/15/online-judge-answer-submission-system/

*প্রোগ্রামিং কন্টেস্টঃ রুলস্‌ অ্যান্ড পয়েন্ট সিস্টেম:

https://ktechweb.org/2016/06/30/contestrules/

*বিভিন্ন প্রোগ্রামিং এরর এবং তা সমাধানের উপায়:

https://ktechweb.org/2017/01/16/programming-errors-and-their-solutions/