আমার কম্পিউটার প্রোগ্রামিং (যেটি পরবর্তী সময়ে কম্পিউটার প্রোগ্রামিং ১ম খণ্ড নামে প্রকাশ করা হয়) বইটি প্রকাশ হওয়ার পরে দেখতে দেখতে পাঁচ বছরেরও বেশি সময় অতিবাহিত হয়ে গেল। এই সময়ে আরও বেশ কয়েকটি বই লিখলেও কম্পিউটার প্রোগ্রামিং ২য় খণ্ড লেখার কাজ অনেক ধীরগতিতে হয়েছে। শেষ পর্যন্ত বইটি আলোর মুখ দেখতে যাচ্ছে। আশা করি, ১ম খণ্ড পড়ার পরে এই বইটিকে ঘিরে শিক্ষার্থীদের যেই প্রত্যাশা, সেটি পূরণে বইটি সক্ষম হবে।
এক সদস্য বিশিষ্ট বলদ তদন্ত কমিটির রিপোর্ট থেকে জানা যায়- বলদ তিন প্রকার। ফাঁকিবাজ বলদ, কনফিউজড বলদ ও চুপা বলদ। এসব বলদরা আড্ডা দেওয়া, ঘুরতে যাওয়া, প্রেম খোঁজা, এমনকি স্যারদের বাঁশ খাওয়ার মতো কাজগুলো নিষ্ঠার সাথে পালন করার পরেও পরীক্ষার খাতায় সামান্য কয়েকটা নম্বরের জন্য এদেরকে হাবলু, বলদ বা গাধা হিসেবে সম্মোধন করা হয়। বেশিরভাগ বলদরা বাইরে চাল্লু ভাব ধরে রাখলেও তাদের ভিতরে থাকে- না পারার ভয়, সামর্থ্য নিয়ে সংশয়, ফাঁকিবাজির আশ্রয়। এরা প্রোগ্রামার হওয়ার স্বপ্ন দেখে, রুটিন বানিয়ে নাকে তেল দিয়ে ঘুমিয়ে পড়ে, ছোটখাটো জিনিসে আটকে গেলে হতাশার বড়ি গিলে। কেউ কেউ আবার কয়েকদিন শিখে এক প্রোগ্রামিং ল্যাগুয়েজ, কয়েকদিন পর ধরে অন্য আরেক প্রোগ্রামিং ল্যাঙ্গুয়েজ। তাতে না শিখে প্রোগ্রামিং ল্যাঙ্গুয়েজ, না শিখে প্রোগ্রামিং। তবে সব বলদই সুযোগ পেলে ছুটে যায় চা দোকানে। আড্ডা দিতে। সেজন্যই চা দোকানের আড্ডার ভাষা দিয়ে প্রোগ্রামিংকে উপস্থাপন করা হয়েছে এই বইতে। যাতে বলদেরাও পুচকা লেভেলের প্রোগ্রামার হিসেবে ফুল টাইম, পার্ট-টাইম বা ইন্টার্ন এ এপ্লাই করার জন্য যে জিনিসগুলা শিখা দরকার সে জিনিসগুলা আড্ডাবাজি করতে করতে শিখে ফেলতে পারে।
পাইথন অত্যন্ত শক্তিশালী, আধুনিক, সহজে বোধগম্য ও পরিচ্ছন্ন একটি প্রোগ্রামিং ভাষা। ওয়েব প্রোগ্রামিংয়ে পাইথন বেশ জনপ্রিয়। ডাটা সায়েন্সেও এর ব্যবহার বাড়ছে দিন দিন। উন্নত দেশগুলোতে উচ্চশিক্ষা ও গবেষণায় প্রোগ্রামিংয়ের কাজে পাইথন যেমন ব্যবহৃত হচ্ছে, তেমনি প্রোগ্রামিং শেখার জন্যও পাইথন ব্যবহার করা হচ্ছে। বাংলাদেশও পিছিয়ে থাকবে না। এই বইটি পাঠকদের পাইথন নামক চমৎকার প্রোগ্রামিং ভাষার সাথে পরিচয় করিয়ে দেওয়ার দায়িত্বটি ভালোভাবেই পালন করবে। যারা মোটামুটি প্রোগ্রামিং পারে কিন্তু পাইথন ভাষায় কখনো কোড করে নি, এই বই তাদের জন্য উপযোগী।
গ্রাফ অ্যালগরিদমে আমার দুর্বলতা গোপন কিছু নয়। তাই লেখকের কাছ থেকে যখন তার বইয়ের মুখবন্ধ লেখার প্রস্তাব পেলাম তখন খুশি আর আমার ধরে না। কারণ এরকম প্রস্তাব এই প্রথম, বিনামূল্যে গ্রাফ অ্যালগরিদম শিখে ফেলা যাবে। সর্বোপরি এই বই দেখিয়ে নিজেকে গ্রাফ বিশেষজ্ঞ প্রমাণ করা যাবে। আরেকটি কারণ হলো আমি এবং শাফায়েত প্রোগ্রামিং কনটেস্টের দুই ঘরানার লোক (DU-BUET অথবা Codemarshal-Hackerrank যেভাবেই দেখি না কেন)। কিন্তু সবকিছুর আগে আমরা বাংলাদেশের ভালো চাই এবং আমাদের কাজে সেটাই ফুটে ওঠা উচিত। সেই ফুটিয়ে উঠানোর কাজটা সবচেয়ে ভালোভাবে করা সম্ভব এই বই এর মুখবন্ধ লেখার মাধ্যমে। পুরো বইটি পড়ার সময় হয়নি এখনো, কিন্তু যতদুর দেখেছি তাতেই মনে করি বইটি বোঝা বেশ সহজ, অযথা গাণিতিক প্রতীক / চিহ্ন ইত্যাদি ব্যবহার করে লেখক পান্ডিত্ব দেখানোর চেষ্টা করেননি এবং অনেক বেশি টপিক নিয়ে আলোচনারও চেষ্টা করেননি। আমাদের দেশের ছেলে মেয়েদের ইংরেজিতে দুর্বলতা অনেক বেশি, কিন্তু এই দুর্বলতা ভালো প্রোগ্রামার হওয়ার পথে কোনো অন্তরায় হওয়া উচিত নয়। যদি তাই হতো তাহলে রাশিয়া, চীন থেকে বিশ্বের সব ভালো ভালো প্রোগ্রামাররা বের হয়ে আসত না আর আইসিপিসিতে ইংরেজিভাষী দেশগুলোকে মেডেলের জন্য হা-হুতাশ করতে হতো না। কাজেই কম্পিউটার বিজ্ঞানের বিভিন্ন বিষয়ের ওপর আরও বাংলা বই বের হওয়া উচিত এবং সেদিক দিয়ে এই বইটি একটি ভালো সংযোজন। এ ধরনের বই পড়ে আমাদের দেশের ছেলেমেয়েরা অনেক কম বয়সেই খুব ভালো প্রোগ্রামার হয়ে উঠতে পারবে।
কম্পিউটার প্রোগ্রামিংকে ক্যারিয়ার হিসেবে নিয়ে সাফল্য অর্জন করেছেন এমন বারোজন বাংলাদেশি প্রকৌশলির সাক্ষাৎকার সংকলন করে প্রকাশ করা হয়েছে বইটি। এই বইটি কম্পিউটার প্রোগ্রামিংয়ে ক্যারিয়ার করতে আগ্রহী তরুন প্রজন্মকে উৎসাহ ও উদ্দীপনা যোগানোর পাশাপাশি বিভিন্ন ধরনের ভুল ধারনা ভাঙ্গাতে সাহায্য করবে। বইটির সবগুলো সাক্ষাৎকার গ্রহণ করেছেন তামিম শাহরিয়ার সুবিন।
“জাভা প্রোগ্রামিং” লেখার গোড়া থেকেই বিভিন্ন বিষয়ে আমার সাথে পরামর্শ করেছেন রোকন, সব ক্ষেত্রে দুজনে একমত না হতে পারলেও, বেশিরভাগ পরামর্শই গ্রহণ করেছেন তিনি। বিশেষত অধ্যায়ান্তে অনুশীলনী সংযোজনের ফলে পড়া শেষে পাঠকের জন্য চিন্তা ও চর্চার খোরাক জুটেছে এই গ্রন্থটিতে, সেটি শিক্ষার্থীদের জন্য সহায়ক হবে নিঃসন্দেহে। গ্রন্থটির ভবিষ্যতের সংস্করণে অনুশীলনীগুলোকে আরো সমৃদ্ধ করা হবে বলে আশা রাখি। ঢাকার নাগরিক জীবন, সময় ও দৈনন্দিন জীবনের কাজের চাপ গ্রন্থ রচনার ক্ষেত্রে অনুপযোগী হলেও নিজের সেরাটা দেয়ার চেষ্টা করেছেন রোকন। বাংলা ভাষায় জাভা, প্রোগ্রামিং সহ কম্পিউটার বিজ্ঞানের বিষয়াদির ক্ষেত্রে সার্থক ও নির্ভুল গ্রন্থপ্রকাশ নানা কারনেই বেশ কঠিন। সঠিক পরিভাষা বিনির্মাণ ও তার প্রয়োগের যথার্থ প্রয়াস এখনো নেয়া হয় নি। বাংলাদেশ কম্পিউটার কাউন্সিল বা বাংলা একাডেমী এই বিষয়ে যথাযথ উদ্যোগ না নেওয়া পর্যন্ত এ অসুবিধা দূরীকরণ সম্ভব বলে মনে হয় না। প্রোগ্রামিংয়ের আলোচনায় কিছু ইংরেজি শব্দ চলে আসা স্বাভাবিক।
স্কুল কলেজ পড়ুয়া শিক্ষার্থীরা যখন আরো উৎসাহী হবে এবং ছোটোবেলা থেকেই প্রোগ্রামিং এ অনেক পারদর্শী হবে তখন এরাই বাংলাদেশকে পরিবর্তন করে দিতে পারবে এই প্রত্যাশায় আমার এই বইটি লেখার কাজ শুরু করি। বইটি স্কুল-কলেজ পড়ুয়া শিক্ষার্থীদের জন্য সহজ এবং সাবলীল ভাবে উপস্থাপনের চেষ্টা করেছি। বইটিতে স্কুল-কলেজের পাঠ্যের কিছু গণিত, পদার্থ বিজ্ঞানের বিষয় গুলো প্রোগ্রামিং এর সাহায্যে দেখানো হয়েছে। বইটি ছোট আকারে রাখার চেষ্টা করেছি যাতে বইটি পড়ে একঘেয়েমি না আসে। স্কুল, কলেজ ও বিশ্ববিদ্যালয় পর্যায়ে বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায় ভালো করার জন্য এবং পাঠ্যসূচির প্রোগ্রামিং বিষয়টি সহজে আয়ত্ত করার জন্য প্রতিটি অধ্যায়ে যুক্ত করা হয়েছে অসংখ্য উদাহরণ এবং তার ব্যাখ্যা। আশাকরি বইটি স্কুল-কলেজ এবং বিশ্ববিদ্যালয়ের প্রথম বর্ষের শিক্ষার্থীদের সি প্রোগ্রামিং এর মৌলিক ধারণা দিতে পারবে।
কমপিউটারকে বিভিন্ন ক্ষেত্রে ব্যবহার উপযোগী করে যে উপাদানটি তা হল এর জন্য লেখা প্রোগ্রাম। আর এই প্রোগ্রাম লেখার জন্য প্রোগ্রামাররা বিভিন্ন প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করেন। তেমনেই একটা ল্যাংগুয়েজ হল C. আমি আমার অভিজ্ঞাতা থেকে উপলদ্ধি করেছিলাম যে, C এর উপর বাংলায় একটি ভাল বইয়ের খুব দরকার। আর এই উপলদ্ধিরই বাস্তরুপ ছিল এই বইটি।পুর্বের সংস্করণগুলোতে বইটি লেখার সময় যথাসম্ভব সহজ, সরল ও বোধগম্য করার চেষ্টা করেছিলাম এবং এতে তুলনামুলকভাবে প্রয়োজনীয় ও মূল্যবান নতুন নতুন উপাদান সংযোজন করেছিলাম। কিন্তু তারপরও বইয়ের পূর্বের সংস্করণগুলোতে কিছু ভুল-ভ্রান্তি ছিল এবং কিছু কিছু ক্ষেত্রে আলোচনায় ঘাটতি ছিল। এই সংস্কৃরনে তা কিছুটা হলেও পুরণ করার চেষ্টা করেছি। এই সংস্করণে প্রায় সকল অধ্যায়গুলোকেই নতুন করে লেখা হয়েছে। বিশেষ করে হলেও পূরণ করার চেষ্টা করেছি। এই সংস্করণে প্রায় সকল অধ্যায়গুলোকেই নতুন করে খেলা হয়েছে। বিশেষ করে array এবং Pointer অধ্যায়সহ অন্যান্য অধ্যায়গুরো নতুন করে সাজিযেছি, যাতে প্রতিটি বিষয় আর ও সহজে বোঝা যায়।
বাংলাদেশের অর্থনীতি তিনটি পিলারের ওপর দাঁড়িয়ে আছে। প্রথমটি পোশাকশিল্প, দ্বিতীয়টি কৃষি ও তৃতীয়টি হচ্ছে প্রবাসী বাংলাদেশিদের শ্রম। কিন্তু চতুর্থ পিলারটি অনুপস্থিত। সেই পিলারটি হতে পারত তথ্যপ্রযুক্তি। কিন্তু সঠিক দিকনির্দেশনা ও চেষ্টার অভাবে বাংলাদেশ এই খাতে এখনো অনেক অনেক পেছনে। তথ্যপ্রযুক্তি নিয়ে যে যতই কথা বলুক, যত শর্টকাটে বড়লোক হওয়ার স্বপ্নই দেখাক, এতে কাজের কাজ কিছু হবে না। তথ্যপ্রযুক্তির মূল বিষয় হচ্ছে প্রোগ্রামিং আর সেটাকে ধরেই আমাদের আগাতে হবে। অনেক দেরিতে হলেও বাংলাদেশের অনেকেই সেটা বুঝতে শুরু করেছে, আর তাই স্কুল-কলেজের শিক্ষার্থীরাও তাদের নিয়মিত পড়াশোনার বাইরে প্রোগ্রামিং শেখার চেষ্টা করে যাচ্ছে, বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায়ও অংশগ্রহণ করছে। বিষয়টি আমার জন্য অত্যন্ত আনন্দের ও গর্বের যে, বাংলাদেশের স্কুল-কলেজ পর্যায়ের শিক্ষার্থীদের অধিকাংশই প্রোগ্রামিং শেখা শুরু করে আমার লেখা কম্পিউটার প্রোগ্রামিং ১ম খণ্ড বইটি দিয়ে। বইটিতে সি (C) প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামিংয়ের সঙ্গে শিক্ষার্থীদের পরিচয় করানোর চেষ্টা করেছি।
আর বলে দিয়েছেন বইটি পড়ার কৌশল ।তার পরের অধ্যায়েই কোডব্লকস্ সফটওয়ার কিভাবে ইন্সটল করতে হয় সেটা জানতে পারবেন ।আর হ্যাঁ ,এ অধ্যায়ের মাধ্যামেই আপনার প্রোগ্রামিং জীবনের শুরু হবে ।(আহা !কি আনন্দ আকাশে বাতাসে ) বইটির যে লিখন কৌশলটা আমার সবচেয়ে ভালো লেগেছে তা হল -প্রথমে প্রোগ্রামিং কোড দিয়ে ,তারপর সেই কোডগুলো ব্যাখ্যা করা হয়েছে ।এতে করে ঐ কোডগুলো নিয়ে চিন্তা করার মানসিকতা তৈরি হবে যেটা প্রোগ্রামিং এ সব থেকে বেশি জরুরি ।লেখক সুবিন ভাইয়া এই চিন্তা করার প্রতি কতটা গুরুত্ব দিতে বলেছেন সেটা বইটা পড়লেই বুঝতে পারবেন । আপনি হয়তো অনেক লেখাপড়া করে থাকবেন কিন্তু আপনি কি প্রাইমারি স্কুলের সেই মাস্টার বাবুর কথা কখনও ভুলতে পারবেন ?
আমার পাশের টেবিলে চা খাচ্ছে আমার ছেলে। ও মোটামুটি পাইথন পারে। ওর স্কুলে ও একটা পাইথন ক্লাব চালায়। কথা বলতে বলতে বললো- পাইথনটা শিখে ফেলা কিন্তু খুবই সহজ। কাজের শুরুতে যদি পাইথন শেলকে ক্যালকুলেটর হিসাবে ব্যবহার করা যায়, তাহলে শুরু থেকে একটা মজার অনুভূতি থাকে। সেটি পুরোটা সময় জুড়েই থাকে। অর্থাৎ প্রতিটি ধারণা ও নিয়মকানুন জানার সঙ্গে সঙ্গে তা হাতে কলমে করে দেখার পদ্ধতি মাটিন বাতলে দিয়েছে। এ হচ্ছে লার্নিং বাই ডুইং। এই বইতে ধারাবাহিকভাবে আলোচনা করা হয়েছে পাইথনের ভিত্তি তথা মূল সিনট্যাক্স এবং পর্যায়ক্রমে লজিক, ফাংশন, ক্লাস, অবজেক্ট ইত্যাদি। কিছুটা ডেটা স্ট্রাকচার ও এলগরিদমও আলোচনা হয়েছে।
মাইক্রোকন্ট্রোলার দিয়ে কি হয়?
এই প্রশ্নের উত্তর একটি উদাহরণ দিয়ে বােঝানাে যাক। ধরা হল, আমরা একটি রিজার্ভ ট্যাঙ্ক থেকে পানি ছাদে উঠানাের প্রক্রিয়াটি স্বয়ংক্রিয় করতে চাই। নিচের ট্যাংকের পানির পরিমাণ একটি নির্দিষ্ট লেভেলের উপরে থাকলে এবং ছাদের উপরের ট্যাংক এর পানির পরিমাণ একটি নির্দিষ্ট লেভেলের নিচে থাকলে মােটর নিজে নিজে চালু হয়ে যাবে এবং এই ঘটনার উল্টোটি হলে মােটর বন্ধ হয়ে যাবে। এই কাজটি আমরা মাইক্রোকন্ট্রোলার দিয়ে করতে পারি। সে ট্যাংক থেকে নির্দেশ গ্রহণ করে নেবে এবং প্রয়ােজন অনুযায়ী মােটরে খুব সহজেই নির্দেশ দিতে পারবে। এই নির্দেশ হল প্রকৃতপক্ষে এক ধরনের ইলেকট্রিক সিগন্যাল।
ভালো প্রোগ্রামার হতে গেলে দরকার হচ্ছে অনুসন্ধিৎসু মন। এটি অবশ্য কেবল প্রোগ্রামিংয়ের ক্ষেত্রেই নয়, বরং আরো অনেক ক্ষেত্রেই দরকার। বাংলাদেশে থাকার সময় যখন গণিত অলিম্পিয়াডের স্বেচ্ছাসেবক হিসেবে বিভিন্ন জায়গায় ঘুরে বেড়াতাম, সেখানে স্কুল-কলেজপড়ুয়া ছেলেমেয়েরা আমার কাছে প্রোগ্রামিং নিয়ে জানতে চাইত। তাদের সেই জানার আগ্রহ আমাকে মুগ্ধ করলেও তারা ঠিক কোন বই পড়ে প্রোগ্রামিং শুরু করবে, সেই প্রশ্নের সঠিক উত্তর আমার জানা ছিল না, কারণ আমাদের দেশের স্কুলের শিক্ষার্থীদের পক্ষে একটি ইংরেজি বই দিয়ে প্রোগ্রামিং শেখাটা বেশ কঠিনই বটে। তাই তাদের জন্য ২০০৯ সালে একটি বই লেখা শুরু করি এবং ২০১১ সালে সেটি প্রকাশিত হয়, কম্পিউটার প্রোগ্রামিং নামে। তার কয়েক মাস পরে http://cpbook.subeen.com ওয়েবসাইটে আমি বইটি সবার জন্য উন্মুক্ত করে দিই। কিন্তু শিক্ষার্থীদের জানার ও শেখার আগ্রহ যেন আরো বেড়ে গেল। প্রোগ্রামিংয়ের বেসিক তো শিখলাম, কিন্তু আরো ভালোভাবে সি শিখব কীভাবে? এই প্রশ্নের উত্তর দেওয়ার জন্য লিখে ফেললাম, কম্পিউটার প্রোগ্রামিং ২য় খণ্ড। বইটি ২০১৬ সালে প্রকাশিত হয়।
এর মধ্যে বাংলাদেশের স্কুল-কলেজের শিক্ষার্থীদের মধ্যে প্রোগ্রামিং ধীরে ধীরে জনপ্রিয় হয়ে উঠছে। তারা বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায় অংশগ্রহণ করে। প্রোগ্রামিং প্রতিযোগিতার অনেক সমস্যার সমাধান করতেই ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টি জানা প্রয়োজন। তাই আমার কম্পিউটার প্রোগ্রামিং ১ম খণ্ড ও ২য় খণ্ড বইয়ের পাঠকদের ডেটা স্ট্রাকচার ও অ্যালগরিদম-এর সঙ্গে পরিচয় করিয়ে দেওয়ার জন্যই এই বইটি লিখলাম। আশা করি, বইটি পড়লে প্রোগ্রামিংয়ের সৌন্দর্য শিক্ষার্থীদের মধ্যে নতুনভাবে ধরা দেবে, তাদের মধ্যে যৌক্তিক চিন্তাভাবনার ভিত গড়ে উঠবে এবং তারা একটু অন্যভাবে ভাবতে শিখবে। আমি যেহেতু বইটি স্কুল-কলেজের শিক্ষার্থীদের জন্য লিখেছি, তাই বইটি যারা পড়বে, তারা যে সবাই ভবিষ্যতে কম্পিউটার বিজ্ঞান বিষয়ে পড়বে এমনটি আমি আশা করি না, চাইও না। বিভিন্ন শিক্ষার্থী বিভিন্ন বিষয়ে উচ্চশিক্ষা গ্রহণ করবে, তাদের নিজেদের পছন্দ বিবেচনা করে ও অভিভাবকের সঙ্গে আলোচনা সাপেক্ষে। কিন্তু তারা ভবিষ্যতে যে বিষয়েই লেখাপড়া করুক না কেন, প্রোগ্রামিংয়ের এই জ্ঞান ও চর্চা তাদের নিঃসন্দেহে অন্যরকম মানুষ হিসেবে গড়ে তুলবে। তবে একথা বলে নেওয়া দরকার যে, ডেটা স্ট্রাকচার ও অ্যালগরিদম বিষয়টির ব্যাপ্তি অনেক বেশি। এই বইতে কেবল খুব প্রচলিত ও সহজ কিছু ডেটা স্ট্রাকচার ও অ্যালগরিদমের সঙ্গে শিক্ষার্থীদের পরিচয় করিয়ে দেওয়ার চেষ্টা করেছি। ভবিষ্যতে তারা কম্পিউটার বিজ্ঞান বিষয়ে আরো লেখাপড়া করলে, আরো অনেক ডেটা স্ট্রাকচার ও অ্যালগরিদম সম্পর্কে জানতে পারবে।
বিশ্বের প্রোগ্রামিং ভাষাগুলোর মধ্যে নানান রকমের র্যাংকিং করা হয়। যেসব গ্রহণযোগ্য র্যাংকিং আছে, সবগুলোতেই প্রথম তিনটি প্রোগ্রামিং ভাষার একটি হচ্ছে পাইথন। গত এক দশকে প্রোগ্রামিং শেখা ও প্রফেশনাল জগতে পাইথনের ব্যবহার অনেক বেড়েছে। আগামী দশকেও পাইথন বিশ্বব্যাপী একটি শীর্ষস্থানীয় প্রোগ্রামিং ভাষা হিসেবেই থাকবে বলে আমার দৃঢ় বিশ্বাস। ইতিপূর্বে সবাইকে পাইথন দিয়ে প্রোগ্রামিংয়ের সঙ্গে পরিচয় করিয়ে দেওয়ার জন্য ‘পাইথন দিয়ে প্রোগ্রামিং শেখা’ নামে একটি বই লিখেছি। আর এই বইতে আমরা পাইথন দিয়ে কিছু বাস্তব সমস্যা সমাধানের চেষ্টা করব এবং সেটি করতে গিয়ে আরো বেশি পাইথন শিখব।
বইটি রিভিউ করেছেন তাহমিদ রাফি ও আবু আশরাফ মাসনুন। তাঁদের প্রতি অশেষ কৃতজ্ঞতা। এ ছাড়া যেসব পাঠক আমাকে উৎসাহ দিয়েছে, তাদের জন্য ভালোবাসা রইল। আমরা সবাই মিলে বাংলাদেশকে প্রোগ্রামিংয়ের পথে অনেকদূর নিয়ে যাব।
ভূমিকা
কম্পিউটারের জন্ম হয়েছিল কম্পিউট বা হিসাব করার জন্য। এখন কম্পিউটারে মানুষ গান শোনে, সিনেমা দেখে, চিঠি লেখে, ফেসবুক করে, ইন্টারনেট ঘাঁটাঘাঁটি করে, এমনকি চুরিচামারি পর্যন্ত করে কিন্তু হিসাব করে না! অথচ কম্পিউটারে কম্পিউট করার মতো আনন্দ আর কিছুতে নয়, সেটি করার জন্য যেটি জানা দরকার, সেটি হচ্ছে একটুখানি প্রোগ্রামিং।
ইউনিভার্সিটিতে বা বড়ো বড়ো শিক্ষাপ্রতিষ্ঠানে প্রোগ্রামিং শেখানো হয় কিন্তু স্কুল-কলেজের ছেলেমেয়েরাও যে খুব সহজে প্রোগ্রামিং করতে পারে, সেটি অনেকেই জানে না। আমি অনেক দিন থেকেই ভাবছিলাম, স্কুলের ছেলেমেয়েদের জন্য এরকম একটি বই লিখি; কিন্তু কিছুতেই সময় করে উঠতে পারছিলাম না।
ঠিক এরকম সময় আমার ছাত্র সুবিনের এই পাণ্ডুলিপিটি আমার চোখে পড়েছে। আমি অবাক হয়ে লক্ষ করলাম, আমি যে জিনিসটি করতে চেয়েছিলাম, সুবিন ঠিক সেটিই করে রেখেছে! স্কুল-কলেজের ছেলেমেয়েদের জন্য একটি প্রোগ্রামিংয়ের বই লিখেছে, খুব সহজ ভাষায়, খুব সুন্দর করে গুছিয়ে।
আমি তার এই চমৎকার বইটির সাফল্য কামনা করি। ছেলেমেয়েরা গান শোনা, সিনেমা দেখা, চিঠি লেখা, ফেসবুক করা, ইন্টারনেট ঘাঁটাঘাঁটি করার পাশাপাশি আবার কম্পিউটারের মূল জায়গায় ফিরে আসুক – সেই প্রত্যাশায় থাকলাম।
মুহম্মদ জাফর ইকবাল,
অধ্যাপক, শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়
লেখক ও শিক্ষাবিদ
সূচীপত্র
ভূমিকা
লেখক পরিচিতি
লেখকের কথা
বইটি সম্পর্কে মতামত ও রিভিউ
অধ্যায় শূন্য : শুরুর আগে
অধ্যায় এক : প্রথম প্রোগ্রাম
অধ্যায় দুই : ডেটা টাইপ, ইনপুট ও আউটপুট
অধ্যায় তিন : কন্ডিশনাল লজিক
অধ্যায় চার : লুপ (Loop)
অধ্যায় পাঁচ : একটুখানি গণিত
অধ্যায় ছয় : অ্যারে
অধ্যায় সাত : ফাংশন
অধ্যায় আট : বাইনারি সার্চ
অধ্যায় নয় : স্ট্রিং (string)
অধ্যায় দশ : মৌলিক সংখ্যা
অধ্যায় এগারো : আবারও অ্যারে
অধ্যায় বারো : বাইনারি সংখ্যা
অধ্যায় তেরো : কিছু প্রোগ্রামিং-সমস্যা
অধ্যায় চোদ্দো : শেষের শুরু
পরিশিষ্ট শূন্য : অ্যালগরিদম ও ফ্লোচার্ট
পরিশিষ্ট এক : প্রোগ্রামিং প্রতিযোগিতা
পরিশিষ্ট দুই : প্রোগ্রামিং ক্যারিয়ার
পরিশিষ্ট তিন : বই ও ওয়েবসাইটের তালিকা
পাইথন একটি অত্যন্ত জনপ্রিয় ও শক্তিশালী প্রোগ্রামিং ভাষা। বিভিন্ন রকমের সফটওয়্যার তৈরিতে যেমন পাইথনের ব্যবহার আছে, তেমনি বিশ্বজুড়ে বিভিন্ন শিক্ষাপ্রতিষ্ঠানে প্রোগ্রামিং শেখানোর জন্যও পাইথন বেশ জনপ্রিয়। বাংলাদেশে পলিটেকনিক ইনস্টিটিউটগুলোতে প্রোগ্রামিং এসেনশিয়ালস কোর্সে পাইথন দিয়ে শিক্ষার্থীদের প্রোগ্রামিংয়ের সঙ্গে পরিচয় করিয়ে দেওয়ার কাজটি নিঃসন্দেহে প্রশংসার দাবিদার।
কম্পিউটার বিজ্ঞানের শিক্ষার্থীদের জীবনে প্রথম প্রোগ্রামিং কোর্সটির গুরুত্ব অপরিসীম। এই কোর্সে পিছিয়ে পড়লে কিংবা প্রোগ্রামিংয়ের নেশায় না মাতলে শিক্ষার্থীদের বাকী শিক্ষা জীবন খুব বেশি আনন্দময় হয় না। অন্যদিকে প্রোগ্রামিংয়ের মজাটা একবার পেয়ে গেলে এবং বেসিক জ্ঞান ও দক্ষতাটুকু অর্জন করে ফেললে সামনে চলার পথটুকু অপেক্ষাকৃত মসৃণ হয়। তাই শিক্ষার্থীদের সঠিকভাবে প্রোগ্রামিংয়ের জগতে প্রবেশ করানোর দায়বদ্ধতা থেকেই বইটি লেখা। বইটি ঠিকভাবে অনুসরণ করলে এবং সেই সঙ্গে প্রোগ্রামিংয়ের পেছনে সময় দিলে শিক্ষার্থীদের মধ্যে প্রোগ্রামিংয়ের প্রতি কোনো ভীতি তো থাকবেই না, বরং তারা আরো বেশি প্রোগ্রামিং চর্চা করতে উৎসাহিত হবে।
দেশ হিসেবে আমরা বিভিন্ন মাপকাঠিতে অন্যান্য অনেক দেশ থেকে পিছিয়ে থাকলেও, একটি দিকে আমরাও এগিয়ে এসেছি অনেকখানি। আর সেটি হলাে তথ্য ও যােগাযােগ প্রযুক্তির প্রসার। দেশের আনাচকানাচে মানুষের হাতে হাতে পৌঁছে গেছে উন্নত ইলেকট্রনিক ডিভাইস ও ইন্টারনেট সেবা। এরকম একটা সময়ে পৃথিবীর সবার সঙ্গে পাল্লা দিয়ে এগিয়ে যাওয়ার জন্য সব স্তরের মানুষের জন্যই নতুন যে বিদ্যাটি জানা নিতান্ত প্রয়ােজন হয়ে দাঁড়িয়েছে তা হলােকম্পিউটার প্রােগ্রামিং। বয়স, ক্যারিয়ার ও শিক্ষাগত যােগ্যতা নির্বিশেষে প্রােগ্রামিংয়ের জ্ঞান ছাড়া বর্তমান বিশ্বে টিকে থাকা প্রতিদিনই ‘গতকালের চেয়ে কঠিন’ হচ্ছে। সাম্প্রতিক সময়ে বিভিন্ন সরকারি ও বেসরকারি উদ্যোগে বাংলাদেশে প্রােগ্রামিং শিক্ষার প্রসারও হচ্ছে ধীরে ধীরে। দেশে জেলা-উপজেলা পর্যায়ে আয়ােজিত হচ্ছে। প্রােগ্রামিং ওয়ার্কশপ, সেমিনার ও প্রতিযােগিতা। প্রতিবছর বিপুল পরিমাণ শিক্ষার্থী প্রােগ্রামিং শিখতে আগ্রহী হয়ে উঠছে। তবে, এই বিপুল পরিমাণ শিক্ষার্থীর জন্য যথাযথ গাইডলাইন পাওয়া যেমন কঠিন, ভুল পথে পরিচালিত হওয়াটা তেমনই সহজ। সবার মনেই প্রথমে যেসব প্রশ্ন জাগে তা হলাে, কেন শিখব? কী কাজে লাগবে? কীভাবে শিখব?কতটুকু শিখব? কোথা থেকে শিখব? শেখার পরে কী করব? ইত্যাদি। এই বইয়ে লেখক তামিম শাহরিয়ার সুবিন এই বিষয়েই দিকনির্দেশনা দিয়েছেন। সুবিন ভাইয়ের সঙ্গে আমার পরিচয় প্রায় এক দশকের। দীর্ঘদিন তাঁর সান্নিধ্যে থেকে কাজ করেছি আমি। তাঁর কাছ থেকে শিখেছি অনেক কিছু। জটিল বিষয় সাবলীল ও স্বতঃস্ফূর্তভাবে আলােচনা করার অদ্ভুত গুণ রয়েছে তাঁর। সম্প্রতি শিক্ষার্থীদের মধ্যে বিগ ডেটা, মেশিন লার্নিং, আইওটি, আর্টিফিশিয়াল ইনটেলিজেন্স রােবটিক্স ইত্যাদি বিষয় নিয়ে ব্যাপক আগ্রহ দেখতে পাই। আবার কিছু শিক্ষার্থীর মধ্যে ব্যাপক অস্থিরতা দেখি ফ্রিল্যান্সিং ও আউটসাের্সিং বিষয়ে।
সূচীপত্র
* ভূমিকা
* লেখক পরিচিতি
* অধ্যায় এক : আর্টিফিশিয়াল ইন্টেলিজেন্স এবং মেশিন লার্নিং
* অধ্যায় দুই : বিভিন্ন ধরনের লার্নিং এবং অন্যান্য
* অধ্যায় তিন : লিনিয়ার রিগ্রেশন
* অধ্যায় চার : লজিস্টিক রিগ্রেশন
* অধ্যায় পাঁচ : সাপোর্ট ভেক্টর মেশিন – SVM
* অধ্যায় ছয় : কে-নিয়ারেস্ট নেইবর
* অধ্যায় সাত : কে-মেনস ক্লাস্টারিং
* অধ্যায় আট : নেটিভ বাইস ক্লাসিফিকেশন
* অধ্যায় নয় : ডিসিশন ট্রি
* অধ্যায় দশ : প্রিন্সিপাল কম্পোনেন্ট এনালাইসিস – PCA
* অধ্যায় এগারো : প্রিসেপশন
* অধ্যায় বারো : একটু খানি নিউরাল নেটওয়ার্ক
* অধ্যায় তেরো : পারফরমেন্স
* অধ্যায় চোদ্দো : এরপর কি?
হ্যাকিং হচ্ছে এক ধরনের আর্ট যেটা অনুশীলন করলে Log in access details বা password ছাড়াই অন্য কারাে কম্পিউটার, স্মার্টফোন অর্থাৎ ইন্টারনেট সংযুক্ত যেকোনাে ডিভাইস, ওয়েবসাইট, নেটওয়ার্কের সিকিউরিটি সিস্টেম ভেঙে অনৈতিকভাবে প্রবেশ করে নিজের প্রয়ােজনমত ব্যবহার করা যায় । অথবা বিভিন্ন পদ্ধতি অবলম্বন করে ভিক্টিমের Log in details বের করে তারপর সেটা দিয়ে ভিক্টিমের অ্যাকাউন্টে অ্যাক্সেস নেয়ার প্রক্রিয়াই হচ্ছে হ্যাকিং।
সি একটি জনপ্রিয় প্রােগ্রাম ভাষা। বর্তমানে অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং নামে নতুন প্রােগ্রাম কৌশলের বিকাশ ঘটে চলেছে। সি++ একটি অবজেক্ট অরিয়েন্টেড প্রােগ্রাম ভাষা, এ ভাষা সি এর বর্ধিত রূপ। সি++ কে বলা হয় আগামী দিনের ভাষা। বর্তমানে আমাদের দেশে সি এবং সি++ প্রােগ্রামিং এর দ্রুত প্রসার ঘটে চলেছে। এই পুস্তকে সি, সি++ এবং অবজেক্ট অরিয়েন্টেড প্রােগ্রামিং বিষয়ে বিশদভাবে আলােচনা করা হয়েছে।
ASP.Net সার্ভার প্রােগ্রামটি যে কমপিউটারটিতে থাকে সেই কমপিউটারটিও কিন্তু ওয়েব সার্ভার নামে পরিচিত। সুতরাং আমরা বলতে পারি ওয়েব সার্ভার কথাটি, কোন সার্ভার প্রােগ্রাম এবং, যে কমপিউটারে এটি রান করে সেই কমপিউটার এই উভয়কেই প্রতিনিধিত্ব করে। ওয়েব সার্ভারের বৈশিষ্ট্যসমূহ ঃ একটি ওয়েব সার্ভার কমপিউটার কিন্তু আর দশটা কমপিউটারের মতােই। এর যে সব বেসিক বৈশিষ্ট্যগুলাে রয়েছে সেগুলাে হলাে, • একে সবসময় ইন্টারনেটের সাথে কানেক্টেড থাকতে হয় যেন ক্লায়েন্ট চাওয়া মাত্র এতে হােষ্ট করা ওয়েব সাইটটি প্রদর্শিত হয়। • একই সাথে এটি কেবল ইন্টারনেটে কানেক্টেড থাকলেই চলবে এতে সবসময় ওয়েব সার্ভার প্রােগ্রামটিও রান করা অবস্থায় থাকতে হবে। সংক্ষেপে বলা যায় কোন ওয়েব সাভার হচ্ছে একটি কমপিউটার যা সর্বদা ইন্টারনেট বা ইন্ট্রানেটের সাথে সংযুক্ত থাকবে এবং এতে ওয়েব সার্ভার নামেরই একটি সফটওয়্যার থাকতে হবে, যা ঐ পিসিতে সর্বদা রানিং অবস্থায় থাকতে হবে। ঐ ওয়েব সার্ভার কর্তৃক হােষ্টকৃত কোন ওয়েব সাইটকে যখনই কোন ওয়েব ব্রাউজার এক্সেস করার চেষ্টা করবে তখন ওয়েব সার্ভার নামের ঐ প্রােগ্রামটি আসলে ক্লায়েন্টের চাহিদামতাে সঠিক ওয়েব পেজটিকে সার্ভ করবে। ইন্টারনেটের সমস্ত ওয়েব সাইটগুলাে পৃথিবীর বিবিন্ন প্রান্তে থাকা কতিপয় ওয়েব সার্ভার দ্বারা হােষ্টেড হয়ে থাকে।
ডেটাবেজ ডিজাইন। নির্দিষ্ট ডেটাবেজের একটি ‘blueprint' বা খসড়া অথবা একটি conceptual model' বা ধারণাগত মডেল তৈরির জন্য ডেটাবেজ ডিজাইন খুবই গুরুত্বপূর্ণ। ডেটাবেজ মডেল এমনভাবে ডিজাইন করতে হবে যেন তা প্রতিষ্ঠানের বর্তমান এবং ভবিষ্যতের প্রয়ােজনীয় তথ্যসমূহ সংরক্ষণ করতে সক্ষম হয়। ডেটাবেজ এনালাইসিস প্রকৃতপক্ষে, ডেটা এনালাইসিস ডেটার প্রকৃতি এবং ব্যবহারের উপর নির্ভর করে। এতে অন্তর্ভুক্ত রয়েছে ডেটা উপাদানের সনাক্তকরণ, যাতে প্রতিষ্ঠানের ডেটা প্রক্রিয়াকরণ সিস্টেমে এসব উপাদান লজিক্যাল উপস্থাপন এবং রেজাল্টিং গ্রুপের মধ্যে সম্পর্ক স্থাপন সাপাের্ট প্রয়ােজন।
অন্যান্য এপ্রােচের মধ্যে রয়েছে D.E.Ds এবং ফ্লোচার্ট যা ডেটার ফ্লো- ডেটাফ্লো মেথােলডজিস-এর সহিত সম্পৃক্ত। ডেটা এনালাইসিস কতকগুলি ডেটা স্ট্রাকচার যা মেথােলজিস এর উপর প্রতিষ্ঠিত। সিস্টেম এনালাইসিস সরাসরি ইমপ্লিমেন্টেশন বা কার্যকর করার ক্ষেত্রে ডেটা এনালাইসিস এর উপর নির্ভরশীল। ডেটাবেজ ম্যানেজমেন্ট সিস্টেম (DBMS) উচ্চ লেভেলে এনালাইসিস উৎসাহিত করে যেখানে ডেটা উপাদান লজিক্যাল মডেল অথবা স্কীমা দ্বারা নির্ধারণ করা হয় (Conceptual schema)। আমরা যদি ডেটা রিলেশনশীপ, এর ব্যবহার এবং প্রােপারটিস এর বিষয় বিবেচনা করি তাহলে তা বিজনেসের জন্য গুরুত্বপূর্ণ বটে! কম্পিউটারাইজড সিস্টেম ডিজাইন করতে ডেটা এনালাইসিস কিভাবে কাজ করবে তা প্রশ্ন হতে পারে। ডেটা এনালাইসিস সময় সাপেক্ষ বিষয়। এতে পর্যায়ক্রমে আরাে প্রশ্ন আসতে পারে। আর এসব প্রশ্নের উত্তরের উপর ইমপ্লিমেন্টেশন বা কার্যকর করার গতি নির্ভর করে। ডেটা এনালাইসিস বর্তমান ও ভবিষ্যতের চাহিদা সাপেক্ষে ডেটাবেজ ডিজাইন হওয়া আবশ্যক। তবে ব্যবসায়িক কারণে সহজে পরিবর্তন করা যায় এমন হওয়া বাঞ্ছনীয়। ডেটা এনালাইসিস ‘quick and dirty' অর্থাৎ দ্রুত ও অগােছালাে হওয়ার চেয়ে ‘slow and careful” অর্থাৎ ধীর ও যত্নবান হওয়াই শ্রেয়। অন্য দৃষ্টিকোণ থেকে ডেটা এনালাইসিস সাধারন ডিজাইনের নিয়ম-নীতি সংক্রান্ত প্রয়ােজনীয় বিষয় প্রােভাইড করে যা ট্রেনি এনালিস্টদের সহায়তা করবে নতুবা তারা ‘quick and dirty' অর্থাৎ দ্রুত ও অগােছালাে সলিউশন বেছে নিবে। ডেটা এনালাইসিস-এর ডেভেলপমেন্ট টেকনিক বা কৌশল স্ট্রাকচার বুঝতে সহায়তা করে। এর অর্থ ডেটা অর্গানাইজেশন বা উপাত্ত সুসংগঠিত করা। ডেটা এনালাইসিস টেকনিক প্রথম ধাপে প্রকৃত জটিলতাকে অনুধাবন করে একটি মডেলে উপস্থাপিত করে যা বিভিন্ন ইউজার বা ব্যবহারকারী দ্বারা এক্সেস হয়। ডেটা বা উপাত্ত কনভেনশনাল মেথডে সংরক্ষিত হতে পারে যেমন প্রতিষ্ঠানের লােকদের সাক্ষাৎকার গ্রহণ এবং ডকুমেন্ট পর্যালােচনার মাধ্যমে। আর তা উপস্থাপিত হতে পারে অবজেক্ট হিসেবে। ডেটা এনালাইসিস-এর ক্ষেত্রে কতকগুলি ডকুমেন্টেশন টুলস বিদ্যমান।