প্যারাডক্সিক্যাল সাজিদ,
প্রোগ্রামিংয়ের বলদ টু বস,
বৈজ্ঞানিক কল্পকাহিনী : রিটিন,
জাভা প্রোগ্রামিং (দ্বিতীয় সংস্করণ)
‘ইচ্ছা পূরণ’ বইয়ের ফ্ল্যাপের কথাঃ
টিকটিকিকে ধরার চেষ্টা করলে তাদের লেজটা খুলে আসে এবং তিড়িং তিড়িং করে নড়তে থাকে। সেটা দেখে টুটুল এতো মজা পেলো যে সে একটা একটা করে সবগুলো টিকটিকির লেজ খসিয়ে ফেলল, তাদের বাসার কোনো টিকটিকির এখন কোনো লেজ নাই।
‘ইচ্ছা পূরণ’ বইটির সামারিঃ
২০১৭ সালের বইমেলায় প্রকাশ হওয়া ১০ বছর বয়েসি ছেলে বাচ্চাকে নিয়ে লেখা বইটি কিছুটা ছোটদের অ্যাডভেঞ্চার এর মত। এখানে টুটুল প্রতিমুহুর্তেই কিছু না কিছু এক্সপেরিমেন্ট করে এবং নিশ্চিত ভাবে সেটা ভুল হয় কিন্তু তাই বলে তাঁর কাজ থেমে থাকে না। বইটি রঙিন ছবিসহ এবং বাচ্চাদের উত্তাল আনন্দের মধ্যে বড় করে তোলার দিকটি লেখক জাফর ইকবাল সুন্দর করে তুলে এনেছেন।
"জাভা প্রোগ্রামিং" ভূমিকা
তৃতীয় দশকে পদার্পণ করেছে জাভা। ১৯৯৫ সালে যাত্রা শুরু করে গত ২২ বছরে ক্রমাগত উন্নতি, প্রসার ও জনপ্রিয়তা অর্জন করেছে অত্যন্ত জনপ্রিয় এই প্রোগ্রামিং ভাষা। মিথষ্ক্রিয় ইন্টারনেট তৈরিতে নেতৃত্বদান ছাড়াও অন্য ইন্টারনেট প্রোগ্রামিংয়ের ভাষাগুলোকেও ক্রমাগত চ্যালেঞ্জের মুখে ফেলেছে জাভা। এতে ইন্টারনেট প্রোগ্রামিং ভাষাগুলোর মধ্যে প্রতিযোগিতার সৃষ্টি হয়েছে; ফলে জাভাসহ প্রতিটি ভাষার কম্পাইলারেই সন্নিবেশিত হয়েছে বিভিন্ন প্রযুক্তি, লাইব্রেরি, ফ্রেমওয়ার্ক ইত্যাদি। গত দু’দশক ধরে প্রকৌশল-বান্ধব প্রযুক্তি উন্নয়নেও নেতৃত্ব দিয়েছে জাভা, তাই আজও ওয়েব প্রোগ্রামিং বা ওয়েব অ্যাপ্লিকেশন তৈরিতে ডেভেলপারের প্রথম পছন্দের ভাষা জাভা।
বাংলাদেশের বিশ্ববিদ্যালয়গুলোতে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ভাষা হিসেবে সি এর পাশাপাশি জাভা শিক্ষণের শুরু অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শিক্ষার সাথে সাথেই। সে হিসেবে জাভা-শিক্ষণেও প্রায় দু’দশকের অভিজ্ঞতা অতিক্রম করেছে এই বিশ্ববিদ্যালয়গুলো। বাংলাদেশের বেশিরভাগ বিশ্ববিদ্যালয়ে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শিক্ষার প্রধান ভাষা হিসেবে জাভা গৃহীত হয়েছে এমনটা বললেও অত্যুক্তি হবে না। এমনকি দুয়েকটি বিশ্ববিদ্যালয় প্রথম প্রোগ্রামিং ভাষা হিসেবেও জাভা শিক্ষাদান করে। শিক্ষাদানের এই অভিজ্ঞতা অনেক ক্ষেত্রেই ফলপ্রসু প্রমাণিত হলেও সব ক্ষেত্রেই সফল হয়েছে, এমনটি ভাবার অবকাশ নেই। অনেক ক্ষেত্রেই কম্পিউটার বিদ্যার ছাত্র বা তথ্য প্রযুক্তি খাতে কর্মসংস্থান প্রত্যাশী স্নাতকদের মধ্যেও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও জাভা বিষয়ে কর্মোপযোগী জ্ঞানের অভাব দেখা যায়। বৃহৎ পরিসরে এই বিষয় দুটোর শিক্ষাদান ও শিখণে উৎকর্ষ অর্জনের পথে বাংলা ভাষায় উৎকৃষ্ট মানের গ্রন্থ সহ অন্যান্য শিক্ষা-উপকরণের অভাব একটি উল্লেখযোগ্য বাঁধা বলা যেতে পারে।
সে নিরিখে আ ন ম বজলুর রহমান রোকন “জাভা প্রোগ্রামিং” পুস্তক রচনার যে উদ্যোগ গ্রহণ করেছেন, তা মহতী নিঃসন্দেহে। গ্রন্থটিতে মোট ১৫টি অধ্যায়ে বিভাজন করে জাভার প্রাথমিক বিষয়বস্তু সম্পর্কে যে আলোচনা করা হয়েছে, তা প্রারম্ভিক পর্যায়ের জাভা শিক্ষার্থীর জন্যে অত্যন্ত উপযোগী। দেশে বিশ্ববিদ্যালয় পর্যায়ে চার বা ছয় মাসের সেমিস্টার পদ্ধতি বিদ্যমান। এই সময়ের মধ্যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও প্রোগ্রামিংয়ের ভাষা হিসেবে জাভা শিক্ষায় অগ্রাধিকারের ভিত্তিতে বিষয়বস্তু নির্বাচন ও শ্রেণিবিন্যাস করা হয়েছে, বিষয়বস্তুর বিন্যাসক্রম সাজানো হয়েছে সে নিরিখেই। ফলে গ্রন্থটিতে বিভিন্ন বিষয়াদি যেমন যুক্ত করা হয়েছে, তেমনি জনপ্রিয় ধারার পুস্তকে থাকে এমন কিছু বিষয়াদি বাদও দেয়া হয়েছে। যেমন ডেটা ব্যবস্থাপনা শেখা একজন প্রোগ্রামারের জন্য বেশি জরুরি বিবেচনায় জাভা কালেকশন ফ্রেমওয়ার্ক এবং প্রোগ্রামের মধ্যে কীভাবে খুব সহজেই সফলভাবে ভুল-ভ্রান্তি খুঁজে বের করা যায় তার জন্য ইউনিট টেস্টিংয়ের ওপর দুটো অধ্যায় সংযোজিত হয়েছে, ডিবাগিং বিষয়ে আলোচনা করা হয়েছে। অন্য দিকে অপারেটিং সিস্টেমের ধারণা শেখার আগে মাল্টিথ্রেডিং শেখা অনাবশ্যক মনে করে মাল্টিথ্রেডিং বাদ দেয়া হয়েছে; চার থেকে ছয় মাসে জাভা শেখার ক্ষেত্রে জাভার গ্রাফিক্যাল ইউজার ইন্টারফেস সংক্রান্ত বিষয়াদিকে বাদ দেয়া হয়েছে। গত দশ বছরের শিক্ষকতার অভিজ্ঞতা, বিশেষত গত চার বছর ধরে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও জাভা শিক্ষাদানের অভিজ্ঞতার আলোকে বজলুর রহমান রোকনকে এই পরামর্শ দিয়েছিলাম, তিনি একমত হয়ে গ্রন্থটির বিষয়বস্তু পুনর্বিন্যাস করেছেন। অদূর ভবিষ্যতে এই গ্রন্থের অগ্রসর সংস্করণ লেখার পরিকল্পনা গ্রহণ করেছেন লেখক, তাতে বাদ পড়া বিষয়াদিসহ জাভার অন্যান্য অগ্রসর বিষয়বস্তু সম্পর্কে আলোচনা করা হবে। গ্রন্থটিকে নতুন শিক্ষার্থীদের জাভা ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শেখার ক্ষেত্রে একটি পূর্ণাঙ্গ সংস্থান হিসেবে পরিকল্পনা করতে পরামর্শ দিয়েছিলাম বজলুর রহমানকে, তিনি করেছেনও তাই। প্রথম প্রোগ্রামিং ভাষা হিসেবে পাঠক জাভা ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শিখতে চাইলে অথবা কোনো শিক্ষক বা পথনির্দেশকের সহায়তা ছাড়া জাভা শিখতে চাইলেও এই গ্রন্থ উপযোগী হবে বলেই ধারণা করি।
বজলুর রহমান রোকনকে দেখেছি ২০০৯ সালের শুরু থেকেই, ঢাকা বিশ্ববিদ্যালয়ের তথ্য প্রযুক্তি ইনস্টিটিউটে, আমি সেখানে প্রভাষক তখন, রোকন ছাত্র সফটওয়্যার ইঞ্জিনিয়ারিং বিষয়ে স্নাতক প্রথম বর্ষে। একটু খেয়ালী, একটু উদাস, একটু অলস, তথাকথিত ভালছাত্রের গুণগুলোর অনেকগুলোই ছিল অনুপস্থিত। ছিল শেখার আগ্রহ, ছিল উজ্জ্বল চোখদুটো – অমিত আগ্রহের, উজ্জ্বল সম্ভাবনার প্রতীক হয়ে। প্রথম প্রোগ্রামিং ক্লাসে আমি ছিলাম ওদের শিক্ষক, বেছে আনা ৩০টি তারকার মধ্যে কোন বিশেষ দীপ্তি ছিল না রোকনের। খুব ভাল বললেও, রোকন সেরাদের কাতারে ছিল, তা বলা সত্যের অপলাপ হবে। সেখানেই তার বিশেষত্ব, বিশ্ববিদ্যালয়ের প্রথম বর্ষ থেকে পরের বছরগুলোতে প্রবল আগ্রহের শক্তিতে কী হতে পারে তার প্রমাণ রেখেছেন রোকন জাভা-আসক্তি দিয়ে, প্রযুক্তির প্রতি গভীর ভালবাসা দিয়ে। বিশ্ববিদ্যালয়ের প্রথাগত পদ্ধতির পড়ালেখা বা অর্জনগুলোর তুলনায় জাভা ও প্রোগ্রামিং প্রযুক্তি নিয়েই ছিল তার মাতামাতি। সময়ের সাথে সাথে জাভা ও প্রোগ্রামিং নিয়ে রোকনের আগ্রহ এবং উদ্যোগ আরো শাণিত হয়েছে। সময় এগিয়েছে, ব্যস্ততা বেড়েছে, প্রযুক্তির প্রতি রোকনের আগ্রহের ঘাটতি তৈরি হয় নি। উৎসাহের কমতি দেখি নি এতটুকুও, বরং তা বেড়েই চলেছে উত্তরোত্তর। সে আগ্রহের ঐকান্তিকতারই প্রকাশ ঘটেছে জাভা বিষয়ে ব্লগ লেখায়, ছাত্রকাল থেকেই সফটওয়্যার তৈরির সৌখিনতায়, গত চার বছর ধরে জাভা-ভিত্তিক ডেভেলপমেন্ট প্রতিষ্ঠানে একাগ্র কর্মনিষ্ঠায় ও জাভা ইউজার গ্রুপ বাংলাদেশের প্রতিষ্ঠায় তার ক্লান্তিহীন পরিশ্রমে, সবশেষে জাভা বিষয়ে বাংলা ভাষায় গ্রন্থ রচনার উদ্যোগের মধ্য দিয়ে।
“জাভা প্রোগ্রামিং” লেখার গোড়া থেকেই বিভিন্ন বিষয়ে আমার সাথে পরামর্শ করেছেন রোকন, সব ক্ষেত্রে দুজনে একমত না হতে পারলেও, বেশিরভাগ পরামর্শই গ্রহণ করেছেন তিনি। বিশেষত অধ্যায়ান্তে অনুশীলনী সংযোজনের ফলে পড়া শেষে পাঠকের জন্য চিন্তা ও চর্চার খোরাক জুটেছে এই গ্রন্থটিতে, সেটি শিক্ষার্থীদের জন্য সহায়ক হবে নিঃসন্দেহে। গ্রন্থটির ভবিষ্যতের সংস্করণে অনুশীলনীগুলোকে আরো সমৃদ্ধ করা হবে বলে আশা রাখি। ঢাকার নাগরিক জীবন, সময় ও দৈনন্দিন জীবনের কাজের চাপ গ্রন্থ রচনার ক্ষেত্রে অনুপযোগী হলেও নিজের সেরাটা দেয়ার চেষ্টা করেছেন রোকন। বাংলা ভাষায় জাভা, প্রোগ্রামিং সহ কম্পিউটার বিজ্ঞানের বিষয়াদির ক্ষেত্রে সার্থক ও নির্ভুল গ্রন্থপ্রকাশ নানা কারনেই বেশ কঠিন। সঠিক পরিভাষা বিনির্মাণ ও তার প্রয়োগের যথার্থ প্রয়াস এখনো নেয়া হয় নি। বাংলাদেশ কম্পিউটার কাউন্সিল বা বাংলা একাডেমী এই বিষয়ে যথাযথ উদ্যোগ না নেওয়া পর্যন্ত এ অসুবিধা দূরীকরণ সম্ভব বলে মনে হয় না। প্রোগ্রামিংয়ের আলোচনায় কিছু ইংরেজি শব্দ চলে আসা স্বাভাবিক। বাংলা কথ্যরীতিতে প্রয়োজন-অপ্রয়োজনে ইংরেজি ও হিন্দি শব্দের অনুপ্রবেশ, সামাজিক যোগাযোগের মাধ্যমগুলোতে ওই রীতিতে বাংলা লেখার ফলে আজকাল লিখিত বাংলাতেও পরিহার্য বিদেশি শব্দের বহুল ব্যবহার দেখা যাচ্ছে, আলোচ্য গ্রন্থ এই দোষ থেকে পুরোপুরি মুক্ত সে দাবি করা সম্ভব নয়, ভবিষ্যতের সংস্করণে উপযুক্ত সম্পাদনার মাধ্যমে এই সমস্যা দূর করা সম্ভব বলে আমার বিশ্বাস। এই সব সমস্যার মধ্যেও “জাভা প্রোগ্রামিং” গ্রন্থটির প্রথম প্রকাশ সাফল্যমণ্ডিত হোক, শিক্ষার্থীদের জন্য সহজে মাতৃভাষায় শিখণের সুযোগ অবারিত করুক, বিদ্যার্থী সমাজে ভাবনার নতুন দ্বার উন্মুক্ত করুক, সৃষ্টিকর্তার কাছে এই প্রার্থনা করি।
শাহ্ মোস্তফা খালেদ
সহকারী অধ্যাপক
তথ্য প্রযুক্তি ইনস্টিটিউট
ঢাকা বিশ্ববিদ্যালয়
সূচীপত্র
*
লেখকের কথা
*
লেখক পরিচিতি
*
অধ্যায় শূন্য: উপক্রমণিকা
অধ্যায় এক: প্রথম জাভা প্রোগ্রাম
• ১.১ – প্রোগ্রামিং ভাষা কী?
• ১.২ – কেন জাভা?
• ১.৩ – জাভা কীভাবে কাজ করে?
o ১.৩.১ – বাইটকোড (Bytecode)
o ১.৩.২ – জাভা ভার্চুয়াল মেশিন (JVM)
o ১.৩.৩ – জাস্ট ইন টাইম (JIT) কম্পাইলার
o ১.৩.৪ – আরও কিছু টার্মিনোলোজি
o ১.৩.৫ – জাভা প্ল্যাটফর্মের সাবসেট
• ১.৪ – জাভা ইনস্টল (Install) করা
o ১.৪.১ – উইন্ডোজে জাভা ইনস্টল করা
o ১.৪.২ – উইন্ডোজের প্রথম জাভা প্রোগ্রাম
o ১.৪.৩ – লিনাক্সে জাভা ইনস্টল করা
o ১.৪.৪ – লিনাক্সে প্রথম জাভা প্রোগ্রাম
• ১.৫ – আইডিই (IDE) এর ব্যবহার
• ১.৬ – আরও কয়েকটি সহজ প্রোগ্রাম
o ১.৬.১ – যোগ, বিয়োগ, গুন, ভাগ করার প্রোগ্রাম
o ১.৬.২ – ইনপুট নেওয়া
• ১.৭ – অনুশীলনী
অধ্যায় দুই: সিনট্যাক্স (Syntax)
• ২.১ – অবজেক্ট (Object) ও ক্লাস (Class)
o ২.১.১ – অবজেক্ট (Object)
o ২.১.২ – অবজেক্ট (Object)
• ২.২ – জাভা প্রোগ্রামের উপাদানসমুহ
• ২.৩ – জাভা মেথড (Java Method)
• ২.৪ – অবজেক্ট ইনস্ট্যান্সিয়েশন (Object Instantiation)
• ২.৫ – মেথড ওভারলোডিং (Method Overloading)
• ২.৬ – কনস্ট্রাক্টর (Constructor)
• ২.৭ – মেথডের ব্যবহার
• ২.৮ – প্রিন্টিং (Printing)
• ২.৯ – প্যারামিটার (Parameter) ও আর্গুমেন্ট (Argument)
• ২.১০ – প্যাকেজ নাম (Package Name) ও ডিরেক্টরি স্ট্রাকচার (Directory Structure)
• ২.১১ – প্যাকেজ ইমপোর্ট (Import) করা
• ২.১৩ – আরও কিছু নিয়ম
• ২.১৪ – অনুশীলনী
অধ্যায় তিন: ডেটা টাইপ (Data Type), অপারেটর (Operator) এবং এক্সপ্রেশন (Expression)
• ৩.১ – ভ্যারিয়েবল (Variable)
• ৩.২ – ভ্যারিয়েবল প্রিন্ট করা
• ৩.৩ – ডেটা টাইপ (Data Type)
o ৩.৩.১ – প্রিমিটিভ টাইপ (Primitive Type)
• ৩.৪ – র্যাপার ক্লাস (Wrapper Class)
• ৩.৫ – লিটারেল (Literal)
o ৩.৫.১ – ইন্টিজার লিটারেল (Integer Literal)
o ৩.৫.২ – ফ্লোটিং পয়েন্ট লিটারেল (Floating Point Literal)
o ৩.৫.৩ – ক্যারেক্টার (Character) ও স্ট্রিং লিটারেল (String literal)
o ৩.৫.৪ – স্যাংখিক (Numeric) লিটারেলে আন্ডারস্কোর চিহ্নের ব্যবহার
o ৩.৫.৫ – এসকেপ সিকোয়েন্স (Escape Sequence)
• ৩.৬ – অপারেটর (Operator)
o ৩.৬.১ – অ্যাসাইনমেন্ট অপারেটর (Assignment Operator)
o ৩.৬.২ – অ্যারিথমেটিক অপারেটর (Arithmetic Operator)
o ৩.৬.৩ – ইন্টিজার সংখ্যার ভাগ অপারেশন (Integer Division) ও ফ্লোটিং পয়েন্ট সংখ্যার ভাগ অপারেশন (Floating Point division)
o ৩.৬.৪ – রাউন্ডিং ত্রুটি বা এরর (Rounding Error)
o ৩.৬.৫ – স্ট্রিং অপারেশন (String Operation)
o ৩.৬.৬ – ইউনারি (Unary) অপারেটর
o ৩.৬.৭ – ইকুয়ালিটি (Equality) এবং রিলেশনাল (Relational) অপারেটর
o ৩.৬.৮ – ওভারফ্লো (Overflow) / আন্ডারফ্লো (Underflow)
o ৩.৬.৯ – টাইপ কনভার্সন (Type Conversion) / টাইপ কাস্টিং (Type Casting)
• ৩.৭ – এক্সপ্রেশন (Expression), স্টেটমেন্ট (Statement) এবং ব্লক (Blocks)
o ৩.৭.১ – এক্সপ্রেশন (Expression)
o ৩.৭.২ – স্টেটমেন্ট (Statement)
o ৩.৭.৩ – ব্লক (Block)
o ৩.৭.৪ – ভ্যারিয়েবল স্কোপ (Scope of a Variable)
• ৩.৮ – অনুশীলনী
অধ্যায় চার: কন্ট্রোল ফ্লো (Control Flow), লুপিং (Looping) ও ব্রাঞ্চিং (Branching)
• ৪.১ – ডিসিশন মেকিং স্টেটমেন্ট (Decision Making Statement)
o ৪.১.১ – If, If-else, if-else-if
o ৪.১.২ – নেস্টেড (Nested) If-else
o ৪.১.৩ – সুইচ (Switch)
• ৪.২ – লুপ (Loop)
o ৪.২.১ – While লুপ
o ৪.২.২ – For লুপ
o ৪.২.৩ – Do-While লুপ
• ৪.৩ – ব্রেক (break) এবং কন্টিনিউ (continue)
• ৪.৪ – রিটার্ন (return) স্টেটমেন্ট
• ৪.৫ – অনুশীলনী
অধ্যায় পাঁচ: অ্যারে (Array)
• ৫.১ – অ্যারে ডিক্লেয়ারেশন (Array Declaration), ক্রিয়েশন (Creation) এবং অ্যাকসেস (Access)
• ৫.২ – মাল্টি-ডাইমেনশনাল অ্যারে (Multi-Dimensional Array)
• ৫.৩ – এনহ্যান্সড (Enhanced) For লুপ বা For-Each লুপ
• ৫.৪ – অ্যারে কপি করা (Copying)
• ৫.৫ – অনুশীলনী
অধ্যায় ছয়: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming)
• ৬.১ – অবজেক্ট (Object) ও ক্লাস (Class)
o ৬.১.১ – অবজেক্ট (Object)
o ৬.১.২ – ক্লাস (Class)
• ৬.২ – অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming)
o ৬.২.১ – অবজেক্ট অরিয়েন্টেডেট প্রোগ্রামিংয়ের প্রয়োজনীয়তা এবং উৎপত্তি
• ৬.৩ – ইনহেরিটেন্স (Inheritence)
o ৬.৩.১ – ফাইনাল ক্লাস (Final Class)
o ৬.৩.২ – মেথড ওভাররাইডিং (Method Overriding)
o ৬.৩.৩ – অ্যানোটেশন (Annotation) @Override
o ৬.৩.৪ – super কিওয়ার্ড
o ৬.৩.৫ – ফাইনাল (Final) মেথড
o ৬.৩.৬ – অবজেক্ট কম্পোজিশন (Object Composition)
• ৬.৪ –পলিমরফিজম (Polymorphism)
o ৬.৪.১ –ভ্যারিয়েবল টাইপ এবং অবজেক্ট টাইপ
o ৬.৪.২ –আপ-কাস্টিং (Upcasting) এবং ডাউনকাস্টিং (Downcasting)
• ৬.৫ – অ্যাবস্ট্রাক্ট ক্লাস এবং ইন্টারফেস (Abstract class and interface)
o ৬.৫.১ – অ্যাবস্ট্রাক্ট ক্লাস (Abstract class)
o ৬.৫.২ – অ্যাবস্ট্রাক্ট মেথড (Abstract Method)
o ৬.৫.৩ – অ্যাবস্ট্রাক্ট ক্লাস এবং অ্যাবস্ট্রাক্ট মেথডের কতগুলো নিয়ম
o ৬.৫.৪ – ইন্টারফেস (Interface)
o ৬.৫.৫ – ইন্টারফেস বনাম অ্যাবস্ট্রাক্ট
• ৬.৬ – এনক্যাপসুলেশন (Encapsulation)
o ৬.৬.১ – ডিফল্ট অ্যাকসেস (Default Access)
o ৬.৬.২ – প্রাইভেট অ্যাকসেস মডিফায়ার (Private Access Modifier) – private
o ৬.৬.৩ – পাবলিক অ্যাকসেস মডিফায়ার (Public Access Modifier) – public
o ৬.৬.৪ – প্রোটেক্টেড অ্যাকসেস মডিফায়ার (Protected Access Modifier) – protected
o ৬.৬.৫ – অ্যাকসেস লেভেল টেবিল
o ৬.৬.৬ – এনক্যাপসুলেশন সংক্রান্ত জরুরী কিছু বিষয়
• ৬.৭ – অনুশীলনী
অধ্যায় সাত: জাভা এক্সেপশন হ্যান্ডেলিং (Java Exception handling)
• ৭.১ – try ব্লক
• ৭.২ – catch ব্লক
• ৭.৩ – finally ব্লক
• ৭.৪ – জাভা এক্সেপশন হায়ারার্কি (Java Exception Hierarchy)
• ৭.৫ – চেকড এক্সেপশন (Checked Exception) ও আনচেকড এক্সেপশন (Unchecked Exception)
o ৭.৫.১ – আনচেকড এক্সেপশন (Unchecked Exception)
o ৭.৫.২ – চেকড এক্সেপশন (Checked Exception)
o ৭.৫.৩ – চেকড এক্সেপশন এবং জাভা কম্পাইলার
• ৭.৬ – এক্সেপশন ডিক্লেয়ারেশন (Exception Declaration) ও থ্রোয়িং (Throwing)
• ৭.৭ – এক্সেপশন থেকে তথ্য সংগ্রহ করা
• ৭.৮ – স্ট্যাক-ট্রেস (Stack Trace)
• ৭.৯ – মেথড কল স্ট্যাক ও এক্সেপশন (Method Call Stack and Exception)
• ৭.১০ – সাধারণ এক্সেপশন ক্লাস
• ৭.১১ – ইউজার ডিফাইনড এক্সেপশন (User Defined Exception)
• ৭.১২ – ফল্ট টলারেন্ট সিস্টেম (Fault Tolerant System) এর জন্য জাভা এক্সেপশন
• ৭.১৩ – অনুশীলনী
অধ্যায় আট: জেনেরিকস (Generics)
• ৮.১ – জাভাতে জেনেরিকস
• ৮.২ – জেনেরিকস (Generics) এবং সাবটাইপিং (Subtyping)
• ৮.৩ – বাউন্ডেড টাইপ (Bounded Types)
• ৮.৪ – ওয়াইল্ডকার্ড আর্গুমেন্ট (Wildcard Arguments)
• ৮.৫ – জেনেরিক মেথড (Generic Method)
• ৮.৬ – টাইপ ইরেইজার (Type erasure)
• ৮.৭ – অনুশীলনী
অধ্যায় নয়: জাভা আই/ও (I/O)
• ৯.১ – ফাইল নিয়ে কাজ
o ৯.১.১ – পাথ (Path)
o ৯.১.২ – ফাইল তৈরি৯.১.৩ – পাথ সেপারেটর (Path separator)
o ৯.১.৪ – ডিরেক্টরি তৈরি
o ৯.১.৫ – ফাইল রিনেমিং (File Renaming), ফাইল কপিইং (File Copying) এবং ফাইল ডিলিটিং (File Deleting)
o ৯.১.৬ – ফাইলের তালিকা বের করা
o ৯.১.৭ – ফাইল ফিল্টার (File Filter)
• ৯.২ – ইনপুট/আউটপুট স্ট্রিম (Input/Output Stream)
o ৯.২.১ – স্ট্রিমের প্রকারভেদ
o ৯.২.২ – ইনপুট স্ট্রিম (InputStream) তৈরি
o ৯.২.৩ – ইনপুট স্ট্রিম থেকে ডেটা পড়া
o ৯.২.৪ – আউটপুট স্ট্রিম (OutputStream) তৈরি
o ৯.২.৫ – আউটপুট স্ট্রিমে ডেটা রাইট করা
o ৯.২.৬ – ক্যারেক্টার স্ট্রিম (Character Stream)
o ৯.২.৭ – রিডার (Reader) ব্যবহার করে ডেটা রিড করা
o ৯.২.৮ – রাইটার (Writer) ব্যবহার করে ডেটা রাইট করা
o ৯.২.৯ – System.in, System.out, and System.error
o ৯.২.১০ – প্রিমিটিভ ডেটা রিড/রাইট করা
• ৯.৩ – অনুশীলনী
অধ্যায় দশ: জাভা এন আই/ও (NIO)
• ১০.১ – জাভা এনআইও (NIO) কী?
• ১০.২ – বাফার (Buffer)
• ১০.৩ – চ্যানেল (Channel)
• ১০.৪ – ফাইল রিড করা
• ১০.৫ – ফাইল রাইট করা
o ১০.৫.১ – try-with-resource
• ১০.৬ – একত্রে রিড এবং রাইট করা
• ১০.৭ – ক্যারেক্টার সেট (Character Set)
• ১০.৮ – অনুশীলনী
অধ্যায় এগারো: কালেকশন ফ্রেমওয়ার্ক (Collection Framework)
• ১১.১ – কালেকশন (Collection)
• ১১.২ – লিস্ট (List)
• ১১.৩ – স্ট্যাক (Stack)
• ১১.৪ – ইটারেবল (Iterable) ও ইটারেটর (Iterator)
• ১১.৫ – সেট (Set)
• ১১.৬ – কিউ (Queue)
• ১১.৭ – ম্যাপ (Map)
o ১১.৭.১ – হ্যাশম্যাপ (HashMap)
o ১১.৭.২ – ট্রিম্যাপ (TreeMap)
o ১১.৭.৩ – হ্যাশটেবিল (HashTable)
o ১১.৭.৪ – লিঙ্কড হ্যাশম্যাপ (LinkedHashMap)
• ১১.৮ – কালেকশন অর্ডারিং/সর্টিং (Collection Sorting/Ordering)
• ১১.৯ – সার্চিং (Searching)
• ১১.১০ – অনুশীলনী
অধ্যায় বারো: স্ট্রিং অপারেশন (String Operations)
• ১২.১ – স্ট্রিং কনক্যাটিনেশন (Concatenation)
• ১২.২ – স্টিংয়ের কিছু গুরুত্বপূর্ণ মেথড
• ১২.৩ – স্ট্রিং পুল (String Pool)
• ১২.৪ – স্ট্রিং বিল্ডার (StringBuilder) এবং স্ট্রিং বাফার (StringBuffer)
• ১২.৫ – অনুশীলনী
অধ্যায় তের: জাভা ম্যাথ এপিআই (Math API) ও ইউটিলিটি ক্লাস (Utility Class)
• ১৩.১ – জাভা ম্যাথ এপিআই
• ১৩.২ – র্যান্ডম নম্বর (Random Numbers)
• ১৩.৩ – বিগ-ইন্টিজার (BigInteger) ও বিগ-ডেসিমাল (BigDecimal)
অধ্যায় চৌদ্দ: ইউনিট টেস্টিং (Unit Testing)
• ১৪.১ – JUnit অ্যানোটেশন (Annotation)
• ১৪.২ – অ্যাসার্ট স্টেটমেন্ট (Assert statements)
• ১৪.৩ – ফেইলড টেস্ট কেইস (Failed Test Case)
*
পরিশিষ্ট ১ : এনাম (Enum)
*
পরিশিষ্ট ২: নাল (null )
*
পরিশিষ্ট ৩ : Object ক্লাস
*
পরিশিষ্ট ৪: জাভা কী পাস-বাই-ভ্যালু (Pass-by-Value)?
*
পরিশিষ্ট ৫ : জাভা স্ট্রিং ফরম্যাটিং
*
পরিশিষ্ট ৬ : একটি ক্যালকুলেটর
*
পরিশিষ্ট ৭ : ক্যারেক্টার এনকোডিং (Character Encoding)
*
পরিশিষ্ট ৮ : ডিবাগিং (Debugging)
*
পরিশিষ্ট ৯ : জাভা কিওয়ার্ড (Java Keywords)
*
পরিশিষ্ট ১০ : জাভা কীভাবে কাজ করে এবং কীভাবে ভালো পারফর্ম করে
*
পরিশিষ্ট ১১ : বাংলাতে জাভা প্রোগ্রামিং
‘বৈজ্ঞানিক কল্পকাহিনী : রিটিন’ বইয়ের ফ্ল্যাপের কথাঃ
রিটিন ঘুরে তাকাল, প্রায় তার বয়সী একটা মেয়ে তার কাধ স্পর্শ করেছে। মেয়েটির মুখ ভাবলেশহীন, অন্তত সে নিজে এরকম একটা ভাব দেখানোর চেষ্টা করছে। রিটিন অবশ্যি এই ভাবলেশহীন মুখের পেছনে খুব সূক্ষ্ম এক ধরনের উত্তেজনা লক্ষ করল । রিটিন মেয়েটিকে জিজ্ঞেস করল, “তুমি কি আমাকে কিছু বলবে?”
প্রচ্ছদ » মেহেদী হক
বইয়ের কিছু অংশঃ
বিশাল হলঘরের মাঝখানে একটা গ্রানাইটের টেবিল। টেবিলের অন্যপাশে সোনালি চুলের মাঝবয়সী একজন মহিলা বসে তীক্ষ্ণ চোখে রিটিনের দিকে তাকিয়ে আছে। রিটিন খুব মনোযোগ দিয়ে তার হাতের নখগুলো পরীক্ষা করছে, তাকে দেখলে মনে হবে এই মুহূর্তে তার হাতের নখগুলো দেখা খুবই জরুরি।
সোনালি চুলের মহিলা জোর করে মুখে একটা হাসি ফুটিয়ে। বলল, “তুমি কী করতে চাও?”
রিটিন বলল, “আমি তোমাকে বলেছি। আমি লেখাপড়া করতে চাই। লেখাপড়া করে গবেষণা করতে চাই।”
সোনালি চুলের মহিলা বলল, “আমি ঠিক বুঝতে পারছি না তুমি কেন আমাকে এটা বলছ! তুমি খুব ভালো করে জান কে কী করবে সেটি পূর্ব নির্ধারিত। গত একশ বছর থেকে মানুষকে জেনেটিক উপায়ে ডিজাইন করা হয়। যারা লেখাপড়া করবে তাদের সেভাবে ডিজাইন করতে হয়। তোমাকে করা হয়নি।”
রিটিন তার হাতের আঙুল থেকে চোখ সরিয়ে সোনালি চুলের মহিলাটির দিকে তাকাল, বলল, “সেটা আমার দোষ নয়। আমাকে আমি ডিজাইন করিনি।”
লেখক পরিচিতি
মুহম্মদ জাফর ইকবাল
জন্ম : ২৩ ডিসেম্বর ১৯৫২, সিলেট । বাবা মুক্তিযুদ্ধে শহীদ ফয়জুর রহমান আহমদ এবং মা আয়েশা আখতার খাতুন।
ঢাকা বিশ্ববিদ্যালয়ের পদার্থবিজ্ঞানের ছাত্র, পিএইচডি করেছেন যুক্তরাষ্ট্রের ইউনিভার্সিটি অফ ওয়াশিংটন থেকে ।
ক্যালিফোর্নিয়া ইনস্টিটিউট অব টেকনোলজি এবং বেল কমিউনিকেশান্স রিসার্চে বিজ্ঞানী হিসেবে কাজ করে সুদীর্ঘ আঠার বছর পর দেশে ফিরে এসে অধ্যাপক হিসেবে যোগ দিয়েছেন শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ে । স্ত্রী প্রফেসর ড. ইয়াসমীন হক, পুত্র নাবিল এবং কন্যা ইয়েশিম।
"প্রোগ্রামিংয়ের বলদ টু বস"
বইটি কাদের জন্য
যারা ভয়, কনফিউশন, ফাঁকিবাজি প্রোগ্রামিং শিখা শুরু করতে সাহস পায়না। কিংবা অল্পএকটু শিখে আর মজা পায় না। অথবা যখনই শিখতে যায়, তখনই প্রোগ্রামিংয়ের মাথা মুন্ডু কিছুই বুঝতে না পেরে লেজ গুটিয়ে পালায়।। তাদেরকে মজায় মাজায়, আড্ডার ছলে প্রোগ্রামিং শিখানো হয়েছে। যাতে চাকরির বাজারে, চাল্লুদের মাজারে, অবহেলিতরা, বলদ থেকে ডাইরেক্ট বস হয়ে যেতে পারে।
প্রোগ্রামিংয়ের পঞ্চরত্ন- ভেরিয়েবল, array, if-else, লুপ, ফাংশন সম্পর্কে ধারণা থাকলে কিংবা হাবলুদের জন্য প্রোগ্রামিং বইটি পড়া থাকলে, এই বইটা পড়তে মজা একটু বেশি লাগবে। তবে প্রোগ্রামিংয়ের পঞ্চরত্ন সম্পর্কে ভাল ধারণা না থাকলেও মজা পাওয়া যাবে।
এই বইটির উদ্দেশ্য
সবচেয়ে সহজ ও ছোট রাস্তা দেখিয়ে, মিনিমাম যে জিনিসগুলো শিখা দরকার সেগুলো শিখিয়ে, বিগিনার লেভেলের প্রোগ্রামার বানিয়ে, কনফিডেন্স বাড়িয়ে দেয়া। যাতে যে কেউ কিছুদিন প্রাকটিস করে ,প্রোগ্রামিংয়ের চাকরি বা ইন্টার্নের জন্য ইন্টারভিউ দিয়ে, অফার লেটার পেয়ে, বলদ থেকে বস হয়ে, দেখিয়ে দিতে পারে- সব বলদের চেষ্টাতেই বসগিরি লুকিয়ে আছে।
বইয়ের ভূমিকা
এক সদস্য বিশিষ্ট বলদ তদন্ত কমিটির রিপোর্ট থেকে জানা যায়- বলদ তিন প্রকার। ফাঁকিবাজ বলদ, কনফিউজড বলদ ও চুপা বলদ। এসব বলদরা আড্ডা দেওয়া, ঘুরতে যাওয়া, প্রেম খোঁজা, এমনকি স্যারদের বাঁশ খাওয়ার মতো কাজগুলো নিষ্ঠার সাথে পালন করার পরেও পরীক্ষার খাতায় সামান্য কয়েকটা নম্বরের জন্য এদেরকে হাবলু, বলদ বা গাধা হিসেবে সম্মোধন করা হয়।
বেশিরভাগ বলদরা বাইরে চাল্লু ভাব ধরে রাখলেও তাদের ভিতরে থাকে- না পারার ভয়, সামর্থ্য নিয়ে সংশয়, ফাঁকিবাজির আশ্রয়। এরা প্রোগ্রামার হওয়ার স্বপ্ন দেখে, রুটিন বানিয়ে নাকে তেল দিয়ে ঘুমিয়ে পড়ে, ছোটখাটো জিনিসে আটকে গেলে হতাশার বড়ি গিলে। কেউ কেউ আবার কয়েকদিন শিখে এক প্রোগ্রামিং ল্যাগুয়েজ, কয়েকদিন পর ধরে অন্য আরেক প্রোগ্রামিং ল্যাঙ্গুয়েজ। তাতে না শিখে প্রোগ্রামিং ল্যাঙ্গুয়েজ, না শিখে প্রোগ্রামিং।
তবে সব বলদই সুযোগ পেলে ছুটে যায় চা দোকানে। আড্ডা দিতে। সেজন্যই চা দোকানের আড্ডার ভাষা দিয়ে প্রোগ্রামিংকে উপস্থাপন করা হয়েছে এই বইতে। যাতে বলদেরাও পুচকা লেভেলের প্রোগ্রামার হিসেবে ফুল টাইম, পার্ট-টাইম বা ইন্টার্ন এ এপ্লাই করার জন্য যে জিনিসগুলা শিখা দরকার সে জিনিসগুলা আড্ডাবাজি করতে করতে শিখে ফেলতে পারে।
লুকিয়ে আছে বসগিরি সব বলদের অন্তরে
ঝংকার মাহবুব, বলদ কমিটির চেয়ারম্যান
www.JhankarMahbub.com
সূচি
*
Data structure-এর লাল সুতা
*
খড়ের stack এ মারে গুঁতা
*
Queue-এর ঠাসায় ছিঁড়ে জুতা
*
কাক object-এর প্রেমের জোড়া
*
Class-এর নাকে উঠছে ফোঁড়া
*
Hash table-এ নাচে মিলা
*
Linked List-এর প্যান্ট ঢিলা
*
Search করলে আমের আঁটি
*
ভেঙে যাবে sort-এর বাটি
*
OOP-এর বেয়াইন কোলা ব্যাঙ
*
Tree তে উঠে ভাঙছে ঠ্যাঙ
*
সাহেব হবে, পুরান ভোদাই
*
অ্যাপ বানিয়ে করবে বড়াই
*
চাকরি এসে ধরবে জড়াই
বইটি সম্পর্কে মুনির হাসান যা বললেন
বিশ্বজুড়ে এখন প্রোগ্রামিং নিয়ে মাতামাতি। মনে হচ্ছে প্রোগ্রামিং ছাড়া মানব সভ্যতা আর এগুতে পারবে না। তবে, সেই প্রোগ্রামিং জানা সবাই যে প্রোগ্রামিং স্কুল থেকেই আসবে এমন কোন লক্ষণও কিন্তু দেখা যাচ্ছে না। কারণ সংখ্যাটা প্রোগ্রামারের চাহিদার সংখ্যার চাইতে অনেক বড়। কাজেই আমেরিকার হোয়াইট হাউস হোক আর আমাদের ঝিনাইদহ জেলার মহেশপুরের জলিলগঞ্জ গ্রাম হোক। সব জায়গাতেই প্রোগ্রামিং নিয়ে অনেক আগ্রহ উদ্দীপনা। এই আগ্রহের জোয়ারে কী হাবলুরা বসে থাকবে? সারাজীবন ফাঁকিবাজি করে, শর্টকাট পথ ধরে বের হয়ে যাওয়ার হাবলুরা কী এখানে কোন পথ পাবে না?
হাবুল দ্য গ্রেট ঝংকার মাহবুব থাকতে সেটা কি আর হবে? কাজে প্রোগ্রামিং-এর চিপাচাপা দিয়ে বলদরা কীভাবে বস হয়ে উঠতে পারে তার জন্য ঝংকারের এই বই। এর আগের হাবলুদের জন্য প্রোগ্রামিং বই-এ মাহবুব চেষ্টা করেছে মজা করে প্রোগ্রামিং-এর মূল বিষয়গুলো ধরিয়ে দেওয়ার। এবার আর একধাপ এগিয়ে হাবলুদের জন্য ডেটা স্ট্রাকচার, অ্যালগরিদম, অবজেক্ট, ক্লাস, অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ইত্যাদির চিপাচাপার সন্ধান করেছে। এর আগে কেইবা বলেছে হাজিরা খাতাটাই একটা ডেটা স্ট্রাকচার আর কেইবা খড়ের গাঁদাতে সুঁচ খোজার চেষ্টা করেছে প্রোগ্রামিং জগতে! ঝংকারের ঢঙ্গে প্রোগ্রামিং-এর জগতে বলদ থেকে বস হয়ে ওঠার এই এক আশ্চর্য হাবলামি!
প্রোগ্রামার হতে চাওয়া ফাঁকিবাজদের পড়তেই হবে!
-মুনির হাসান
কোর্ডিনেটর, ইয়ুথ প্রোগ্রাম, প্রথম আলো
জেনারেল সেক্রেটারি, ম্যাথ অলিম্পিয়াড
'প্যারাডক্সিক্যাল সাজিদ' বইয়ের ফ্ল্যাপের লেখা কথা
বিশ্বাসের কথা কতটা শক্ত করে বলা যায়? বিশ্বাসী প্রানের সুর কতটা অনুপম হতে পারে? বিশ্বাসকে যুক্তির দাঁড়িপাল্লায় মাপা কি খুব সহজ? অবিশ্বাসীকে কতটা মায়াভিরা স্পর্শে বিশ্বাসের শীতল পরশ দেয়া যায়? যুক্তিই মুক্তি নাকি বিশ্বাসের যুক্তিতে মুক্তি? এসবের উত্তর মিলতে পারে।
'প্যারাডক্সিক্যাল সাজিদ' বইয়ের সূচিপত্র
*
একজন অবিশ্বাসীর বিশ্বাস / ১১
*
‘তাকাদির বনাম স্বাধীন ইচ্ছা’- ভ্ৰষ্টা কি এখানে বিতর্কিত? / ১৭
*
স্ৰষ্টা খারাপ কাজের দায় নেন না কেন? / ২৬
*
শূন্যস্থান থেকে স্রষ্টার দূরত্ব / ৩২
*
তাদের অন্তরে আল্লাহ মোহর মেরে দেন। সত্যিই কি তাই? / ৪০
*
মুশরিকদের যেখানেই পাও, হত্যা করো / ৪৭
*
স্রষ্টাকে কে সৃষ্টি করলো? / ৫৩
*
একটি সাম্প্রদায়িক আয়াত এবং... / ৬১
*
কোরআন কি সূর্যকে পানির নিচে ডুবে যাওয়ার কথা বলে? / ৬৬
*
মুসলমানদের কোরবানি ঈদ এবং একজন মাতব্বরের অযাচিত মাতব্বরি / ৭৩
*
কোরআন কি মুহাম্মদ (সাঃ) এর বানানো গ্ৰন্থ? / ৮২
*
রিলেটিভিটির গল্প / ৯১
*
A Letter to David-Jessus wasn't myth and he exited... / ৯৯
*
কোরআন, আকাশ, ছাদ এবং একজন ব্যক্তির মিথ্যাচার / ১০৯
*
আয়েশা (রাঃ) ও মুহাম্মদ (সাঃ) এর বিয়ে এবং কথিত নাপ্তিকদের কানাঘুষা / ১১৫
*
কোরআন কি মুহাম্মদ (সাঃ) এর নিজের কথা? / ১২৪
*
স্ৰষ্টা যদি দয়ালুই হবেন তাহলে জাহান্নাম কেন? / ১৩০
*
কোরআন মতে পৃথিবী কি সমতল না গোলাকার? / ১৩৬
*
একটি ডিএনএ'র জবানবন্দী / ১৪৫
*
কোরআনে বিজ্ঞান- কাকতালীয় না বাস্তবতা? / ১৫৫
*
স্রষ্টা কি এমন কিছু বানাতে পারবে, যেটা স্রষ্টা নিজেই তুলতে পারবে না? / ১৬২
*
ভেল্কিভাজির সাতকাহন / ১৭০
'প্যারাডক্সিক্যাল সাজিদ' বইয়ের প্ৰকাশকের কথা
সভ্যতার শুরু থেকেই সত্য ও মিথ্যার ধারাবাহিক লড়াই। মানবতার সমাধান ইসলাম বরাবরই জাহেলিয়াতের ধারক-বাহকদের অপপ্রচার ও বিদ্বেষ মোকাবেলা করে আসছে। আধুনিক সভ্যতার এই সময়ে দাঁড়িয়েও সেই ধারা অব্যাহত আছে। স্যোসাল মিডিয়ার ক্রমবর্ধমান পরিসরকে সন্দেহের বীজ বোপন করছে। সন্দেহ থেকে সংশয়, সংশয় থেকে অবিশ্বাস। এভাবে এক অবিশ্বাসী প্রজন্মের গোঁড়াপত্তন হচ্ছে কিবোর্ডে। বিশ্বাসীদের সুশৃংখল চিন্তার দুনিয়ায়। কিছু কিছু তরুন-যুবা দিকভ্রান্তও হচ্ছে। রক্তক্ষরণ হচ্ছে মুসলিম মিল্লাতে। অবিশ্বাসীদের আপাত চমকপ্ৰদ প্রশ্ন ও চ্যালেঞ্জের মোকাবেলায় হিমশিম অবস্থা। জাহেলিয়াতের চ্যালেঞ্জ যেখানে, সেখানেই বিশ্বাসী প্ৰাণের যৌক্তিক লড়াই। এমনই এক বিশ্বাসী তরুন আরিফ আজাদ। অনলাইন দুনিয়ায় অবিশ্বাসীদের উখিত প্রশ্নের সাবলীল উত্তর দিয়ে অজস্র মানুষের প্রিয়ভাজন হয়েছেন। একজন তরুন এত চমৎকার ও যৌক্তিক ভাষায় ইসলামবিরোধীদের জবাব দিতে পারেন, ভাবতেই আশাবাদী মন জানান দেয়— আগামীর দিন শুধু সম্ভাবনার। “প্যারাডক্সিক্যাল সাজিদ বইটিতে গল্প ও সাহিত্যরস দিয়ে অবিশ্বাসীদের নানান প্রশ্নের জবাব দেয়া হয়েছে।
বাংলা সাহিত্যের বাস্তব দুনিয়ায়ও থাকা উচিত। নাস্তিক্যবাদ ও ইসলামদ্রোহীদের অপপ্রচারের জবাবে অনেকেই লিখছেন, বলছেন। এই বইটি সেসব জবাবের ভিত্তিকে আরো মজবুত করবে। আমার বিশ্বাস বইটি তরুণ প্রজন্মের মনোজগতে এক তুমুল আলোড়ন তুলবে। আশা করি। বইটি পড়ে অবিশ্বাসীরাও নিমেহিভাবে ইসলাম নিয়ে চিন্তা করবেন।
গাডিয়ান পাবলিকেশন্স এই অসাধারন বইটি প্রকাশ করতে পেরে অত্যন্ত আনন্দিত। স্যোসাল মিডিয়ায় লেখাগুলোকে পাণ্ডুলিপি আকারে পাঠকদের হাতে তুলে দেয়ার কাজটা অনেক চ্যালেঞ্জের। বইটিকে যথাসম্ভব সুন্দর ও নিখুত করতে আন্তরিকতা ও পরিশ্রমের কোন ত্রুটি ছিল না। সম্মানিত পাঠকবৃন্দ আমাদের যোগ্যতা ও সীমাবদ্ধতা বিবেচনায় নিয়ে ত্রুটি-বিচূতি ক্ষমাসুন্দর দৃষ্টিতে দেখবেন বলে বিশ্বাস করছি। লেখকের স্বকীয়তা এবং ভাষার বৈচিত্র বিবেচনায় প্রয়োজনে ইংরেজী শব্দও উল্লেখ করা হয়েছে।