কেন মাল্টিথ্রেডিং শেখা উচিত

জাভা প্রোগ্রামিং ভাষাতে থ্রেড প্রোগ্রামিংয়ের ওপর একটি বই লিখেছেন আ ন ম বজলুর রহমান। প্রোগ্রামারদের কেন থ্রেড প্রোগ্রামিং সম্পর্কে জানা উচিত, সেই প্রশ্নের জবাবে তাঁর এই লেখা।

কেনো থ্রেড প্রোগ্রামিং সম্পর্কে ধারণা রাখা উচিৎ?

আমরা এমন একটা সময়ে বসবাস করছি যখন কম্পিউটারের প্রসেসরের গতি আর আগের মতো বাড়ছে না। কিন্তু কম্পিউটিংয়ের ক্রমবর্ধমান চাহিদা মেটাতে এই সীমাবদ্ধতা আমাদের মেনে নেওয়ার উপায়ও নেই। এই সমস্যা সমাধানে কম্পিউটারের চিপ বা প্রসেসর মেনুফেকচারিং ইন্ডাস্ট্রি একটি নতুন উপায় বেছে নিয়েছে। এটি হলো- একটি কম্পিউটারে একাধিক প্রসেসর বা সিপিইউ স্থাপন করা। আমরা যে কম্পিউটারগুলো এখন ব্যবহার করি তার প্রতিটিতেই একাধিক সিপিইউ বা প্রসেসর রয়েছে।

এই একাধিক প্রসসের বা সিপিইউয়ের সুবিধাটুকু আমরা তখনই নিতে পারি, যখন এগুলোকে একই সঙ্গে বিভিন্ন কাজে ব্যবহার করতে পারি। যদি সেই সুযোগটা নিতে না পারি, তাহলে আমাদের কম্পিউটারে যে অতিরিক্ত রিসোর্স রাখা আছে, তার অপচয়ই করা হবে বটে।

এই অপচয় রোধ এবং একাধিক প্রসেসর ব্যবহারের জন্য আমাদের প্রোগ্রামিংয়ের ধরণেরও পরিবর্তন দরকার। এ জন্য প্রায় প্রতিটি সিরিয়াস প্রোগ্রামিং ল্যাংগুয়েজে মাল্টিথ্রেডিং বা কনকারেন্ট প্রোগ্রামিংয়ের সুবিধা রয়েছে। এই মাল্টথ্রেডিং প্রোগ্রামিং ব্যবহার করে আমরা একই সঙ্গে একাধিক সিপিইউ বা প্রসেসর ব্যবহার করে অনেকগুলো একই সঙ্গে করতে পারি এবং অনেক ক্ষেত্রে অনেক কাজ দ্রুত করে ফেলতে পারি।

উদাহরণ হিসেবে বলা যায়, আমরা যারা ওয়েব অ্যাপ্লিকেশন ব্যবহার করি এবং ওয়েব প্রোগ্রামিং করি, তারা জানি যে, একটি সার্ভারে একই সঙ্গে একই মুহূর্তে অসংখ্য রিকোয়েস্ট আসে এবং ওয়েব সার্ভার এগুলো খুব ভালোভাবেই সার্ভ করে।  এই কাজটি সম্ভব হয়েছে একাধিক থ্রেড ব্যবহারের ফলে। থ্রেডকে আমরা বলতে পারি একটি ফ্লো বা ধারার মতো, অর্থাৎ কম্পিউটারে প্রোগ্রাম এক্সিকিউশনের একটি ফ্লো। নতুন একটি থ্রেড তৈরি করা মানে, নতুন একটি ফ্লো তৈরি করা। আমাদের সবার বাসায় একাধিক পানির কল আছে। যদিও পানিগুলো একটি ট্যাঙ্ক থেকেই আসে, কিন্তু একাধিক পানির কল থাকায় একাধিক মানুষ একই সঙ্গে ব্যবহার করতে পারে। একটি কল থাকলে একজন ব্যবহারের সময় বাকিদের অপেক্ষা করতে হতো এবং এতে সময়ের অপচয় হতো। একইভাবে কম্পিউটারে থ্রেড কাজ করার জন্য একাধিক ধারা বা ফ্লো তৈরি করতে পারে এবং এর ফলে একই সময়ে একাধিক কাজ একই সঙ্গে এগিয়ে নিয়ে যাওয়া যায়।

আমরা যারা জাভা প্রোগ্রামিং পারি, তারা সহজেই এই মাল্টি থ্রেড প্রোগ্রামিংয়ের সুবিধাটুকু নিতে পারি, যদি একটু কষ্ট করে এর মূলনীতি এবং কীভাবে ব্যবহার করতে হয় তা জেনে নেই।

লেখকঃ আ ন ম বজলুর রহমান, সফটওয়্যার প্রকৌশলী ও লেখক (জাভা প্রোগ্রামিং, জাভা থ্রেড প্রোগ্রামিং)।

জাভা থ্রেড প্রোগ্রামিং

গত বছরের মাঝামাঝি সময় আমাদের জাভা প্রোগ্রামিং বইয়ের লেখক – বজলুর আমাকে জানালো যে, সে জাভা প্রোগ্রামিং বইটার দ্বিতীয় খণ্ড লিখছে। লেখার মাঝামাঝি পর্যায়ে সে আমাকে বইটি রিভিউ করার কাজে যুক্ত করলো। আমি কিছুদূর রিভিউ করার পরে বললাম, বই তো অনেক বড় হয়ে আসছে, তুমি যদি বইমেলায় বই প্রকাশ করতে চাও, তাহলে শুধু মাল্টিথ্রেডিং নিয়ে বই লিখে ফেলো। বাকী জিনিসপত্র নিয়ে জাভা প্রোগ্রামিং দ্বিতীয় খণ্ড নামে একটি বই লিখবে। বজলুর রাজি হয়ে গেলো, থ্রেড নিয়ে আরো লিখতে লাগলো। আমিও রিভিউ করে বিভিন্ন ফিডব্যাক দিতে লাগলাম।

নিজের লেখা বই হাতে বইমেলায় দ্বিমিক প্রকাশনীর স্টলে লেখক বজলুর রহমান।

বইটি রিভিউ করার সময় আমার মূল ফোকাস ছিল দুটি – প্রথমটি হচ্ছে ভাষা। বইতে যেখানে ইংরেজির বদলে বাংলা শব্দ ব্যবহার করা সম্ভব, সেখানে যেন বাংলা শব্দই ব্যবহার করা হয়, আর বাংলা ভাষাটা যেন একটু সহজ ও প্রাঞ্জল হয়, সেসব নিয়ে বজলুরকে বিস্তর ফিডব্যাক দিয়েছি। বজলুরও নিষ্ঠার সঙ্গে সেসব ফিডব্যাকের অনেকগুলোই গ্রহন করেছে, অনেক যত্ন নিয়ে লেখার চেষ্টা করেছে। দ্বিতীয় বিষয়টি ছিল বইয়ের বিষয়বস্তুর ধারাবািহকতা। আমি নিজে যখন বই লিখি, তখন আমার লক্ষ্য থাকে, শিক্ষার্থীরা যেন বইটি পড়ে বুঝতে ও শিখতে পারে। আমি মনেপ্রাণে একজন শিক্ষক, কিন্তু যেহেতু ক্লাসরুমে পড়ানোর সুযোগ হয় না, তাই আমি ক্লাসে পড়াতে গেলে যেভাবে পড়াতাম, বইতেও সেভাবে লিখি। তাই কোনো নতুন বিষয়ের অবতারণা করা হলে, তার আগে সেটির সঙ্গে শিক্ষার্থীদের বইতে পরিচয় করিয়ে দেওয়া হয়েছে কী না, সেটি গুরুত্বপূর্ণ। এসব বিষয় নিয়ে কয়েকমাস বজলুরের সঙ্গে ইন্টারনেটে আলোচনা করেছি, যার ছাপ বইতে কিছুটা হলেও পড়েছে। অনেক বিষয়ই বলেছি বিস্তারিত ব্যাখ্যা করতে, কিছু কিছু বিষয়ের অবতারণা বাদ দিতে, ইত্যাদি। বজলুরের সঙ্গে এই আলোচনাগুলো থেকে আমিও শিখেছি অনেক।

বজলুরের জাভা প্রোগ্রামিং বইয়ের পাঠকদের কমন প্রশ্ন হলো, বইতে মাল্টিথ্রেডিং নিয়ে আলোচনা করা হয় নি কেন? এরকম প্রশ্ন করার কারণ হচ্ছে, আমাদের দেশের বিশ্ববিদ্যালয়গুলোতে যখন জাভা প্রোগ্রামিং কোর্স করানো হয়, সেখানে মাল্টিথ্রেডিং পড়ানো হয়। যদিও আমি এই কাজটির কোনো যৌক্তিকতা খুঁজে পাই না। ওই কোর্সটির উদ্দেশ্য হচ্ছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শেখানো, সেখানে মাল্টিথ্রেডিংয়ের মতো অগ্রসর ও জটিল বিষয়ের অবতারণা কেন? তো বজলুরও এই বিষয়ে আমার সঙ্গে একমত আর তাই সে নিজেও এই বিষয়টি জাভা প্রোগ্রামিং বইতে দেওয়ার প্রয়োজনীয়তা অনুভব করে নি। বরং শিক্ষার্থীদের জ্ঞান পিপাসা মেটাতে কেবল থ্রেডিং (বা মাল্টিথ্রেডিং) নিয়ে পুরোদস্তুর একটি বই লিখে ফেলেছে!

বইটি লিখতে গিয়ে বজলুর প্রচুর পড়াশোনা করেছে, বইয়ের কিছু কিছু বিষয়তো আমার কাছেও একটু নুতন ঠেকেছে। বইটি রিভিউ করার জন্য আমি ছাড়াও আরো কয়েকজন বেশ সময় দিয়েছেন, তাই বজলুর আমাদের (রিভিউয়ারদের) কথা বইতে বিশেষভাবে উল্লেখ করেছে। বইয়ের বিষয়বস্তু মাল্টিথ্রেডিং হলেও আমার মনে হয়, দ্বিতীয় বর্ষের শিক্ষার্থীদের পক্ষে বইটি পড়তে একটু কষ্টই হবে। যাদের জাভা প্রোগ্রামিং জানা আছে এবং কম্পিউটার অপারেটিং সিস্টেম কোর্সটি করে ফেলেছে (কিংবা বর্তমানে করছে), তাদের জন্যই বইটি বেশি উপযোগি। আর যারা বিশ্ববিদ্যালয়ের গণ্ডি পেরিয়ে সফটওয়্যার ডেভেলাপার হিসেবে কাজ করছে এবং তারা যদি তাদের দৈনন্দিন কাজে জাভা ব্যবহার করে থাকে, তাহলে আমি বলব, বইটি তাদের অবশ্যই পড়া ও অনুশীলন করা উচিত। বইটি নিঃসন্দেহে তাদেরকে সমৃদ্ধ করবে।

গত কয়েক বছর ধরে দ্বিমিক কম্পিউটিং ও দ্বিমিক প্রকাশনীর ছত্রছায়ায় আমরা কয়েকজন বাংলা ভাষায় তথ্যপ্রযুক্তির জ্ঞানভান্ডার উন্নয়নে কাজ করছি। যেহেতু বাংলাভাষায় প্রোগ্রামিং ও কম্পিউটার বিজ্ঞানের বিষয়ে তেমন কোনো মানসম্পন্ন কাজ হয় নি, তাই আমি ও অন্য কয়েকজন একেবারে মৌলিক জিনিসপত্র নিয়ে বই লিখে যাচ্ছি। তবে এসব বইয়ের মাঝেও মোঃ মাহবুবুল হাসান (শান্ত)-এর “প্রোগ্রামিং কনটেস্টঃ ডেটা স্ট্রাকচার ও অ্যালগরিদম” এবং শাফায়েত আশরাফের “গ্রাফ অ্যালগরিদম” বইয়ের মতো অপেক্ষাকৃত উচ্চতর বিষয় নিয়ে বই প্রকাশ করেছে দ্বিমিক প্রকাশনী। সেই তালিকায় বজলুরের “জাভা থ্রেড প্রোগ্রামিং” বইটিও একটি গুরুত্বপূর্ণ সংযোজন। এরকম উচ্চ পর্যায়ের টেকনিক্যাল বই আমাদের আরো দরকার।

এরকম টেকনিক্যাল বই, যার পাঠক বাংলাদেশে খুব বেশি নেই, লিখে বজলুর যেমন সাহসিকতার পরিচয় দিয়েছেন, আমি প্রকাশক তাহমিদ রাফিকেও সাধুবাদ জানাবো এরকম একটি বই প্রকাশ করার জন্য। আশা করছি, বাংলাদেশের প্রোগ্রামিং বইয়ের পাঠকদের আমরা বরাবরের মতোই পাশে পাবো। তারা বইটি কিনবে, পড়বে, চর্চা করবে এবং বইটি নিয়ে আলোচনা করবে।

বইটির সর্বোচ্চ বিক্রয়মূল্য ৩২০ টাকা। কিছু কিছু শিক্ষার্থীর কাছে এটি একটু বেশি ঠেকতে পারে, কারণ আমরা পৃষ্ঠা সংখ্যা দিয়ে বইয়ের দাম বিবেচনা করে অভ্যস্ত। কিন্তু আমি বলব যে, এরকম একটি বই লিখতে লেখকের যেই পরিশ্রম হয় তার তুলনায় বইয়ের দাম কিছুই না। আর আমরা বার্গার খেতে গেলে ডবল চিজ (অতিরিক্ত চিজ বা পনিরের স্তর) দিতে বললে বার্গারের দাম যতটুকু বেড়ে যায়, এটি ততটুকুই। তুলনাটি একটু স্থূল হয়ে গেলেও আশা করি সবাই বিষয়টিতে একমত হবে।

বাংলাদেশের জাভা প্রযুক্তি জনপ্রিয়করণে বজলুরের প্রচেষ্টা অব্যাহত থাকুক, সে সফল হোক, বাংলাদেশের তথ্যপ্রযুক্তি খাত আরো উন্নত হোক – এই কামনা করছি।