প্রোগ্রামিংয়ের আদ্যোপান্ত

প্রোগ্রামিংয়ের আদ্যোপান্ত

বর্তমান যুগ প্রযুক্তির যুগ। এই যুগে প্রোগ্রামিং (Programming) ব্যতীত আসলে একটা মুহূর্ত কল্পনাও করা যায় না। চলুন একটু উদাহরণ দেখি। এই যে যন্ত্র বা ডিভাইসে (Device) এই লেখাটি পড়ছেন, এটি কিন্তু প্রোগ্রামিংয়ের মাধ্যমেই সম্ভব হয়েছে। নতুবা শুধু হার্ডওয়্যার (Hardware) কিছুই করতে পারতো না। চুপচাপ আজীবন বসেই থাকতো, কাজ আর হতো না। কম্পিউটার বিজ্ঞান ও প্রকৌশল (CSE – Computer Science and Engineering) বলুন আর সফটওয়্যার প্রকৌশল (Software Engineering) বলুন, সব ক্ষেত্রেই রয়েছে প্রোগ্রামিংয়ের ব্যবহার। মূলত এই বিভাগগুলো প্রোগ্রামিং ছাড়া অচল প্রায়।

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

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

প্রোগ্রামিং ভাষা

প্রশ্ন হল, এত চর্চা করতে হলে সহজ কিভাবে হল? আসলে প্রোগ্রামিং জিনিসটা সহজ। এটার মূল সিনট্যাক্স (Syntax) বলেন আর যাই বলেন, সেটা যে কেউই সহজে শিখতে পারবে। কিন্তু এটার প্রয়োগটা সহজ না। উদাহরণস্বরূপ বলা যায়, একটা বাচ্চাকে ABCD শিখিয়ে দিলেই আজকে একটা ইংরেজিতে বই লিখতে পারবে? আজকে তো দূরের কথা, কয়েক মাসেও পারবে না। প্রোগ্রামিং বিষয়টাও এমন। ABCD শিখে চর্চা করতে করতে একসময় বাক্য বানাতে পারবেন। তারপর একসময় প্যারাগ্রাফ লিখতে পারবেন; একসময় রচনা লিখতে পারবেন।

যাইহোক, এখন একটা কথা বলি, কথায় আছে কোন কিছুতে সেরা হতে হলে ১০ বছর সময় ব্যয় করতে হয় (সারাদিন না। প্রতিদিন একটু করে।)। প্রোগ্রামিংয়ের ক্ষেত্রেও এটা প্রযোজ্য। মোটামুটি এরকম সময় ব্যয় করলে আপনিও সফল হবেন। যদিও এতদিন লাগে না।

ভূমিকা

এই আর্টিকলটি মুল নন-সিএসইদের (Non-CSE) জন্য। সিএসইর ছাত্ররা এরচেয়ে ঢের বেশি জানে। মূলত আমি যখন ক্লাস এইটে ছিলাম (২০১৩ সালে), তখন প্রথমবার প্রোগ্রামিংয়ে যুক্ত হই। ফলে আমার পুরো শিক্ষাটাই নিজে থেকে শেখা। আমি কোন প্রতিষ্ঠান থেকে শিখি নি। টাই আমি এখানে দেখানর চেষ্টা করব কিভাবে নিজে থেকেও শেখা সম্ভব। এখানে জিনিসগুলো বোঝানোর পাশাপাশি কিভাবে করবে, কোথা থেকে শিখবে, কোথায় অনুশীলন করবেন সেগুলোও বলার চেষ্টা করব। এখানে চেষ্টা করব এ টু জেড (A2Z) একটা গাইডলাইন দেয়ার। আর, আমি প্রোগ্রামিং শেখাতে আসি নি। একটা গাইডলাইন দেয়ার চেষ্টা করছি কিভাবে কি করবেন। কম্পিউটার বিজ্ঞান ও প্রকৌশলের শিক্ষার্থীরা বিষয়গুলো আগেই জানেন।

এবার তবে শুরু করি।

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

প্রোগ্রামিং হল সোজা বাংলায় বললে প্রোগ্রাম বানানো। ইশ! সোজা বাংলায় বলার কথা বলে ইংলিশে বলে ফেললাম 😛। যাইহোক, প্রোগ্রাম আবার কি? ওই যে বিভিন্ন প্রোগ্রামে যাই আমরা ওগুলো বানাতে হবে? ইভেন্ট ম্যানেজমেন্ট? আসলে ব্যাপারটা ওরকম না হলেও মূল বিষয়টা ওরকমই। একটা প্রোগ্রাম যেমন সুন্দরভাবে করতে একজন পরিকল্পনা বা প্ল্যান (Plan) করার এবং সে অনুযায়ী কাজ বা এক্সিকিউট (Execute) করে প্রোগ্রামটি আয়োজন করে, তেমনি প্রোগ্রামিংয়েও এভাবে প্ল্যান করে সেই প্ল্যান অনুযায়ী সাজিয়ে তা এক্সিকিউট করে কোড লিখে।

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

প্রোগ্রামিং কাদের জন্য?

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

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

৩. প্রোগ্রামারদের প্রবলেম সলভিং স্কিল (Problem Solving Skill) থাকতে হবে। প্রোগ্রামিং মানেই সমস্যা সমাধান করা। বিভিন্ন রকম সমস্যা আসবে। সেগুলো সমাধানই হবে আপনার একমাত্র উদ্দেশ্য।

৪. ধৈর্য্য নেই? তাহলে অনুগ্রহ করে এই দিকে আসার দরকার নেই। অযথা সময় নষ্ট হবে। ধৈর্য্য কেন লাগবে? থাক, সেটা এখন না বলি। প্রোগ্রামিং শিখতে শুরু করেন, এমনিই বুঝে যাবেন 😉

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

প্রথমে আপনি একটি HTML Form থেকে ইউজারনেইম এবং পাসওয়ার্ড নিবেন। সেটা Post মেথড ব্যবহার করে নির্দিষ্ট লোকেশনে পাঠাবেন। তারপর PHP বা অন্য ল্যাঙ্গুয়েজ দিয়ে প্রথমে Post মেথড থেকে প্রাপ্ত তথ্য গ্রহণ করে Variable এ রাখবেন। তারপর সেটা ডেটাবেজের তথ্যের সাথে মেলাবেন। যদি মিলে তাহলে কুকি এবং সেশন ডেটা তৈরি করে দিবেন। অন্যথায় এরর রিটার্ন করবেন।

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

অ্যালগরিদম

অ্যালগরিদম কি?

কথা হল, অ্যালগরিদম কি? এটা আবার জানতে হবে কেন? একটু ধৈর্য্য ধরুন। সবই জানানো হবে 😉

আমার মত যারা কম বোঝেন, তাদের জন্য সহজে একটু বলি। এই অ্যালগরিদম হল সোজা বাংলায় বললে কোন সমস্যা সমাধানের ধাপ। অর্থাৎ কিভাবে কাজটি সম্পন্ন করবেন, সেটা এই অ্যালগরিদমের মাধ্যমেই করা হয়। ধরুন বাসার সবাই আপনাকে ফেলেই বেড়াতে গিয়েছে 😥। এখন ভাত আছে, তবে তরকারি নেই। বোঝেনই তো, সবচেয়ে সহজ সমাধান হল ডিম ভেজে খাওয়া 😂। যাইহোক, এবার চলেন ডিম ভাজার অ্যালগরিদম বানাই 😜। স্টেপগুলো হল:

১. শুরু
২. ডিম আনা
৩. ডিম ভাঙা
৪. পেঁয়াজ, মরিচ কাটা
৫. ডিমের সাথে কাটা পেঁয়াজ, মরিচ ও লবণ দিয়ে মাখা
৬. যেটাতে ভাজবেন, তাতে তেল দেয়া
৭. ভাজা
৮. সমাপ্ত

বাহ! আপনি চমৎকার একটি অ্যালগরিদম বানিয়ে ফেললেন। অভিনন্দন আপনাকে 💐। এভাবেই যেকোনো সমস্যা আসলে ধাপে ধাপে সহজে সমাধান করে ফেলবেন। এটাই অ্যালগরিদমের কাজ। যাইহোক, ডিম ভাজার নিয়ম ভালোভাবে না জানায় আমার লেখা অ্যালগরিদম দিয়ে ভেজে কোন দুর্ঘটনা ঘটলে আমি দায়ী না, বলে দিলাম 😜।

অ্যালগরিদম কেন শিখতে হবে?

ওকে, বুঝলাম নাহয় অ্যালগরিদম কি। কিন্তু এটা দিয়ে কি কাজ?

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

প্রোগ্রামিং ভাষা বা প্রোগ্রামিং ল্যাঙ্গুয়েজ কি?

প্রোগ্রামিং ল্যাঙ্গুয়েজ (Programming Language) আসলে প্রোগ্রাম লেখার ভাষা। ভাইরেভাই! এটা আবার কেমন কথা! প্রোগ্রাম কথা বলতে পারে? ওর ভাষা আসলো কিভাবে? 😱

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

যারা একটু চিন্তাশীল মানুষ তারা আবার এখনই বলবেন, আমি ভুল বলেছি। কারণ রোবট (Robot) বা আর্টিফিসিয়াল ইন্টিলিজেন্স (AI – Artificial Intelligence) তো কথা শোনে। হুম, তবে সেটা ভিন্ন বিষয়। আসলে ওরাও সব বোঝে না। ওদের কিছু অ্যালগরিদম ফিক্স করা থকে। যার ভিত্তি করে কাজ করে। এমনিতে মেশিন কখনোই আমাদের ভাষা বুঝতে সক্ষম না।

প্রোগ্রামিং কি দিয়ে শুরু করব?

সবার একটা কমন প্রশ্ন। আসলে যেকোনোটা দিয়েই শুরু করা যায়। তবে সবাই শুরুতে সি (C) দিয়ে শুরু করতে বলে। সেটারও কারণ আছে। মূলত সি হল মেশিনের খুব কাছের ল্যাঙ্গুয়েজ। এছাড়াও অ্যাপ্লিকেশন সফটওয়্যার তৈরিতেও কাজে লাগে। এজন্য দেখবেন, সিস্টেম সফটওয়্যারগুলো সি দিয়ে করা। কেননা একদিকে সি মেশিনের সাথে যোগাযোগ রাখছে, অন্যদিকে সি অ্যাপ্লিকেশন সফটওয়্যারের সাথেও যোগাযোগ রাখছে।

তবে আমার ব্যাপারটা ভিন্ন ছিল। আমি আগে জাভা (Java) শিখেছিলাম। যেহেতু আমার টার্গেট অ্যান্ড্রয়েড অ্যাপ বানানো ছিল, সেহেতু জাভা সবচেয়ে ভালো অপশন ছিল। এখন জাভার সবচেয়ে বড় প্রতিযোগি পাইথন (Python)। এছাড়াও সি++ (C++) এবং সি শার্প (C#) তো আছেই।

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

যদি কারো ওয়েব প্রোগ্রামিংয়ে আগ্রহ থাকে, তাহলে তারজন্য দুটো ভালো অপশন আছে। একটি হল পিএইচপি (PHP); অন্যটি হল এএসপি বা এএসপি.নেট (ASP/ASP.NET)। এরমধ্যে পিএইচপি হল লিনাক্স সার্ভারের (Linux Server)। আর, এএসপি হল উইন্ডোজ সার্ভারের (Windows Server)। তবে, এ দুটোর মধ্যে লিনাক্সের পিএইচপি বেশি জনপ্রিয়। আমাদের প্রিয় ওয়েবসাইট ফেসবুকও পিএইচপি ব্যবহার করছে। আর, পিএইচপি বেশ সহজ। শুধু পিএইচপি না, ওয়েব প্রোগ্রামিংয়ের সব ল্যাঙ্গুয়েজই শেখা তুলনামূলক সহজ।

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

তো, ওয়েব প্রোগ্রামিং ক্ষেত্রে আমি আপনাকে পিএইচপি শিখতে বলব। আর, পাশাপাশি জাভাস্ক্রিপ্ট (JS – JavaScript) শিখবেন। মজার ব্যাপার হল, জাভাস্ক্রিপ্ট সার্ভার সাইডেও চালানো যায়। জাভাস্ক্রিপ্ট আপনার ওয়েবসাইটকে কি পরিমাণ আকর্ষণীয় করবে বলার অপেক্ষা রাখে না। জাভাস্ক্রিপ্ট ছাড়া ওয়েবসাইট একদম সাদামাটা হবে।

এই গেল কি দিয়ে শুরু করবেন। এবার আরেকটি কমন টপিক নিয়ে কথা বলি।

একটা শিখলে অন্যটা শেখা যাবে?

হ্যাঁ, অবশ্যই। একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ কষ্ট করে শিখলে, খুব সহজেই অন্যগুলো শিখতে পারবেন। মজার ব্যাপার হল, সব ল্যাঙ্গুয়েজ আসলে প্রায় একই। while, for, do while লুপ সব জায়গায়ই পাবেন। সবজায়গায়ই function, variable তৈরি করবেন। সবই একই, শুধু ভিন্নভাবে উপস্থাপন আরকি! তাই যেকোনো একটা ভালো করে শিখতে হবে। তাহলে অল্প দিনেই অন্য একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে পারবেন।

কোথা থেকে শিখব? কোন ট্রেনিং সেন্টার?

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

তবে আপনাদের জন্য একটি অসাধারণ ওয়েবসাইট সাজেস্ট করব। এখানে আগামী এক বছর সময় দিন; সব হবে। লিংক: www.w3schools.com
আমি এখান থেকেই বেশিরভাগ শিখেছি। আর বাংলায় সার্চ দিলেও অনেক কিছু পাবেন।

এখন মূলত আমার কাজ করা ল্যাঙ্গুয়েজ নিয়ে কথা বলব। সাথে অন্যান্য ল্যাঙ্গুয়েজ নিয়েও কিছু আলোচনা থাকবে।

সি++ প্রোগ্রামিং ভাষা

সি, সি++, সি#

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

জাভা প্রোগ্রামিং ভাষা

জাভা

আমার কাছে সবচেয়ে জোস লাগে জাভা (Java)। জাভার সবচেয়ে বড় প্রতিযোগী এখন পাইথন (Python)। গুগল ট্রেন্ডে (Google Trend) যদি দেখেন তাহলে দেখবেন, পাইথন ক্রমশ এগিয়ে যাচ্ছে। যাইহোক, এর কারণ পাইথনে আলোচনা করব। আর, জাভা এসেছিল সি++ কে ঠেকাতে। সেটায় অবশ্যই সফল হয়েছে। এছাড়াও, জাভা সর্বপ্রথম পূর্ণাঙ্গ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP – Object Oriented Programming) স্বাদ দিতে পেরেছে। এখন ভাবতে পারেন, এটা আবার কি? এটা প্রোগ্রামিং শেখার সময় শিখে যাবেন, প্যারা নেই।

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

আমি মূলত অ্যান্ড্রয়েড অ্যাপ তৈরির জন্যই জাভাতে এগিয়েছিলাম। তাই জাভাতে সময় দিলে অ্যান্ড্রয়েড ব্যবহারকারীদের মার্কেট ধরে ফেলতে পারবেন। যদিও আমাদের দেশ থেকে মানসম্মত অ্যাপ বের হয় না সাধারণত। বেশিরভাগ অ্যাপ হল ‘ঘরে বসে ৩০ দিনে ডাক্তার হোন’ টাইপ 🐸। যদি অ্যান্ড্রয়েড অ্যাপ তৈরির ইচ্ছা থাকে তাহলে সবচেয়ে ভালো হয় অ্যান্ড্রয়েড স্টুডিও (Android Studio) ব্যবহার করুন। তবে চাইলে একলিপস-ও (Eclipse) ব্যবহার করতে পারেন। দুটোই আইডিই (IDE – Integrated Development Environment)

পাইথন প্রোগ্রামিং ভাষা

পাইথন

বর্তমানে ট্রেন্ড চলছে পাইথনের। এই ক্রেজের কারণ হল মেশিন লার্নিং (Machine Learning) আর কৃত্রিম বুদ্ধিমত্তা বা আর্টিফিসিয়াল ইন্টিলিজেন্স (AI – Artificial Intelligence)। বোঝেনই তো, পৃথিবী আগাচ্ছে। সবাই সবকিছু স্বয়ংক্রিয় চায়। চায় এমন রোবট যা কিনা মানুষের মত ভাববে। সেটাই হল আর্টিফিসিয়াল ইন্টিলিজেন্স।

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

কারো যদি ওয়েব সেক্টরে কাজ করার ইচ্ছা থাকে, তাদের জন্য পাইথন খুব ভালো একটা সুযোগ। ছোট-বড় সব ওয়েবসাইটেই পাইথন সহজেই ব্যবহার করা যায়। যেখানে জাভা, সি এর মত ল্যাঙ্গুয়েজ ছোটখাটো ওয়েবসাইটে ব্যবহার করে না বা করার সুযোগ নেই। একটা মজার ব্যাপার বলি। প্রোগ্রামারদের সবচেয়ে বেশি ঝামেলা বাধে লাইনের শেষে সেমিকোলন (;) দেয়া নিয়ে। মজার কথা হল, পাইথনে সেমিকোলনই নেই! 😂

পিএইচপি প্রোগ্রামিং ভাষা

পিএইচপি

ওয়েবের কাজের জন্য সবচেয়ে পাওয়ারফুল ল্যাঙ্গুয়েজ বললে আমি পিএইচপির (PHP) নাম বলব। পিএইচপির নাম এসেছে Personal Home Page (PHP) থেকে। পিএইচপি যখন তৈরি হয়, তৎকালীন সময়ে পাওয়ারফুল ল্যাঙ্গুয়েজ ছিল এএসপি (ASP)। তাই পিএইচপি তৈরির সময় ভাবা হয় নি, এটা এএসপিকে হারিয়ে দেবে। শুধু তাই নয়, দেখা গেল পুরো ওয়েব বিশ্ব জয় করে ফেলেছে পিএইচপি! পরবর্তীতে অবশ্য পিএইচপির এত অর্জনের ফলে এই সাধারণ নামটি বলে ডাকা হয় না। PHP: Hypertext Preprocessor বলেই ডাকা হয়। এই Hypertext Preprocessor নামের কারণ হল, পিএইচপির লাইব্রেরি আগেই কম্পাইল করা থাকে। টাই আমাদেরকে ক্ষত করে কম্পাইল করতে হ না বলে, অনেক সময় বাঁচায়।

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

প্রোগ্রামার বনাম সফটওয়্যার ইঞ্জিনিয়ার

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

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

প্রোগ্রাম সোর্স কোড

কম্পিটিটিভ প্রোগ্রামিং বনাম সফটওয়্যার ডেভেলপমেন্ট

এটা একটা কমন প্রশ্ন। তবে যারা জানেন না, তাদের জন্য আগে বিষয়টা বুঝিয়ে বলি।

কম্পিটিটিভ প্রোগ্রামিং: প্রতিযোগিতামূলক প্রোগ্রামিং আরকি! আপনি বিভিন্ন প্রতিযোগিতায় অংশ নেবেন এবং সেটার জন্যই অনুশীলন করবেন নিয়মিত।

সফটওয়্যার ডেভেলপমেন্ট: সফটওয়্যার তৈরি করবেন।

কোনটা সুবিধাজনক? সফটওয়্যার ডেভেলপমেন্ট টের দিকে গেলে ক্যারিয়ারের জন্য ভালো। কেননা নিজেই বেশ কিছু সফটওয়্যার তৈরি করে ফেলবেন। কোথাও চাকরির জন্য বেশ ভালো একটা সুবিধা হবে। এছাড়াও নিজে কিছু করার সুযোগ তো থাকবেই।

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

প্রোগ্রামিং শেখা

প্রোগ্রামিংশেখার জন্য প্রচুর সুযোগ আছে ইন্টারনেটে। সে খোঁজ পেতে গুগলে গিয়ে একটা সার্চই যথেষ্ট! তারপরও আপনাদের জন্য বিনামূল্যে প্রোগ্রামিং শেখার সেরা ৫ টি ওয়েবসাইটের তালিকা দিলাম:

১. W3Schools
২. Codecademy
৩. Tutorialspoint
৪. Studytonight
৫. Geeks for Geeks

এছাড়াও বর্তমানে অনেক অ্যান্ড্রয়েড অ্যাপ পাওয়া যাচ্ছে প্লে স্টোরে। সেগুলো থেকেও শিখে নিতে পারেন। পাশাপাশি প্রোগ্রামিং শেখার বই তো আছেই।

প্রোগ্রামিং প্রতিযোগিতা ও অনুশীলন

প্রোগ্রামিংয়ে ভালো করতে হলে প্রতিযোগিতার বিকল্প নেই। কেননা এতে অনেক অনুশীলন হবে। প্রোগ্রামিং যেহেতু গণিতের মত, সেহেতু যত সমাধান করবেন তত ভালো করবেন। এটাই নিয়ম।

প্রথমে আলোচনা করি আন্তর্জাতিক প্রতিযোগিতাগুলো নিয়ে। প্রোগ্রামিংয়ে বিশ্বের সবচেয়ে বড় প্রতিযোগিতার নাম এসিএম আইসিপিসি (ACM-ICPC) বা আন্তর্জাতিক কলেজিয়েট প্রোগ্রামিং প্রতিযোগিতা (ICPC – International Collegiate Programing Contest)। এটার নাম অনেকেরই শোনার কথা। এটা বিশ্ববিদ্যালয় ভিত্তিক অংশ নিতে হয়।

এছাড়াও আছে আন্তর্জাতিক ইনফর্মেটিক্স অলিম্পিয়াড (International Olympiad in Informatics)। এটা প্রযুক্তি বিষয়ক আন্তর্জাতিক প্রতিযোগিতা। পাশাপাশি দেশে বিভিন্ন বিশ্ববিদ্যালয় থেকে প্রোগ্রামিং প্রতিযোগিতার আয়োজন করে। বিশ্ববিদ্যালয় থেকে ২-৩ জন দল করে সেসবে যাওয়া যেতে পারে। আরো অনেক সুযোগ আছে। গুগল করলেই সব পাওয়া যাবে।

অনলাইনে প্রোগ্রামিং অনুশীলন ও প্রতিযোগিতা করার অনেক সুযোগ আছে। নীচে ওয়েবসাইটগুলোর নাম দিলাম। গুগল করলেই জেনে যাবেন।

১. TopCoder
২. Coderbyte
৩. Project Euler
৪. HackerRank
৫. CodeChef

ক্যারিয়ার

আসলে প্রোগ্রামিংয়ের ক্যারিয়ার (Career) নিয়ে কথা বলতে ইচ্ছা করে না এখন। এর একটা বড় কারণ হল বর্তমানে ফ্রিল্যান্সিং (Freelancing) ক্রেইজ। ‘ঘরে বসে হাজার হাজার টাকা কামান’ ধরণের বিজ্ঞাপন দেখতে দেখতে বিরক্ত। যদি এই উদ্দেশ্যে প্রোগ্রামিংয়ে আগান, তাহলে বলব ভাই বাদ দেন। এরচেয়ে কম সময়ে অন্য কাজ করে বেশি টাকা উপার্জন করতে পারবেন। আর, আপনার স্কিল থাকলে ফেসবুক, গুগলে আপনাকে ডেকে ডেকে নিবে। জানেনই তো, প্রতিবছরই বাংলাদেশ থেকে ফেসবুক, গুগল, মাইক্রোসফটে চাকরি পাচ্ছে অনেকেই। আমি সম্ভাব্য কিছু আলোচনা করি।

১. আসলে প্রোগ্রামিং জানলে ওয়েব বলেন অ্যাপ বলেন, সব দিকেই কাজ আছে প্রচুর। এমনকি নিজেও দু’য়েকটা অ্যাপ বানিয়ে গুগল প্লে স্টোরে দিতে পারেন। বিভিন্ন মার্কেটপ্লেসে প্রচুর কাজ আছে।

২. ফেসবুক, গুগলের মত টেক জায়ান্টে কাজ করার সুযোগ। এছাড়াও দেশেও অনেক সফটওয়্যার কোম্পানি আছে। সেখানেও সুযোগ আছে। যদিও বাংলাদেশের সফটওয়্যার ইন্ডাস্ট্রির অবস্থা ভালো না সেরকম।

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

৪. রোবটিক্স ও আর্টিফিসিয়াল ইন্টিলিজেন্স নিয়ে কাজের বিরাট সুযোগ। কয়েক দশক পর পৃথিবী চলে আসবে রোবট এবং কৃত্রিম বুদ্ধিমত্তা নির্ভর অবস্থায়। তাই এটা এখন খুব ভালো একটা সুযোগ নিজেকে গড়ে তোলার।

৫. নিজেই সফটওয়্যার কোম্পানি তৈরি করা যেতে পারে। যারা ব্যবসা করতে চান বা শুধু উদ্দোক্তা হতে চান, তাদের জন্য সফটওয়্যার সেক্টরটি খুব ভালো সুযোগ। শুধু সরকার থেকে লাইসেন্স নিন এবং কাজে নেমে পড়ুন।

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

শেষ কথা

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