<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Monirul Islam</title>
    <description>The latest articles on Forem by Monirul Islam (@mislam-dev).</description>
    <link>https://forem.com/mislam-dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F914471%2Fb32f9d03-cedb-4d6e-9d36-c7d36b7ff0cd.JPG</url>
      <title>Forem: Monirul Islam</title>
      <link>https://forem.com/mislam-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mislam-dev"/>
    <language>en</language>
    <item>
      <title>Agile Software Development Part-1 | Software Engineering</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Sun, 11 May 2025 10:37:44 +0000</pubDate>
      <link>https://forem.com/mislam-dev/agile-software-development-part-1-software-engineering-4796</link>
      <guid>https://forem.com/mislam-dev/agile-software-development-part-1-software-engineering-4796</guid>
      <description>&lt;p&gt;বর্তমানে বেশির ভাগ ব্যবস্যায় সারা বিশ্বে অপারেট করছে। আর সব কিছুই খুবই দ্রুত পরিবর্তন হচ্ছে। বেশির ভাগই ব্যবস্যাতেই বর্তমানে ম্যানেজম্যান্টের কাজ গুলো করা সম্পূর্ণ ভাগে সফটওয়্যার ব্যবহার করা হচ্ছে। এখন যেহেতু সব কিছুই দ্রুত পরিবর্তন হচ্ছে সেহেতু সফটওয়্যার ডেভেলোপ করা প্রয়োজন। কিন্তু সমস্যা হচ্ছে এই এত অল্প সময়ের মধ্যে এই ধরনের সফটওয়্যার তৈরি করা সম্ভব না। দেখা গেল, সফটওয়্যার তৈরি করা হওয়ার পর সেটার আর কোন প্রয়োজনীয়তা নেই।&lt;/p&gt;

&lt;p&gt;এই সমস্যা সমাধানের ক্ষেত্রে কোম্পানি গুলো একটা বিষয়ে রাজি হতে পারে। তারা সফটওয়্যার এর কুয়ালিটির তে ফোকাস এবং requirements এর উপর কম্প্রোমাইজ করতে পারে। যাতে তারা দ্রুত সফটওয়্যার ডেপ্লয় করতে পারে। এইটার কারন হিসেবে যুক্তি দেওয়া যেতে পারে এমন, সবকিছু পরিবর্তনশীল , আর ব্যবসায় তো প্রতিনিয়ত পরিবর্তন হয়, তাই একটা সম্পূর্ন সফটওয়্যার তৈরি করা প্রায় অসম্ভব কাজ।&lt;/p&gt;

&lt;p&gt;দ্রুত সফটওয়্যার ডেভেলপমেন্ট করার মুল কারন হচ্ছে, কাস্টমার জানেন বা বুঝতে পারেন এই সফটওয়্যার তার জীবনে কিভাবে প্রভাব ফেলবে। এজন্য সফটওয়্যারটি সফল বা ব্যর্থ উভয় হতে পারে। এক্ষেত্রে কাস্টমার ফিডব্যাক অধিকত গুরুত্বপূর্ন। সফটওয়্যার এর কিছু কিছু আছে যেগুলো কাস্টমারে কোন কাজে লাগে অথবা এমন কিছু আছে একটু পরির্তন করার প্রয়োজন হতে পারে।&lt;/p&gt;

&lt;p&gt;এখই এই পরিস্থিতে যদি Plan-driven বা Waterfall মডেল ব্যবহার করা হয়, যেটা অনেক সময় সাপেক্ষ , তাহলে দেখা গেল কাস্টমার এটা ব্যবহার করায় ছেড়ে দিছে।&lt;/p&gt;

&lt;p&gt;দ্রুত সফটওয়্যার ডেভেলপমেন্ট করার এমন কিছুর প্রসেস দরকার যেটার দ্বারা পরিবর্তন গুলো সহজে পরিচালনা করা যায়। এজন্য একমাত্র সমাধান হচ্ছে Agile Development or Agile methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile methods
&lt;/h2&gt;

&lt;p&gt;Agile methods হলো একটি incremental development method যেখানে increments গুলো ছোট ছোট এবং সাধারনভাবে ২-৩ সপ্তাহের মধ্যে মধ্যে নতুন নতুন ফিচার রিলিজ করা হয়ে থাকে। এখানে কাস্টমারকে সংযুক্ত করা হয় এবং তার ফিডব্যাকের প্রহন করা হয়। এই ফিডব্যাকের উপর নির্ভর করে নতুন ফিচার পরবর্তী রিলিজে অ্যাড বা রিমুভ করে দেওয়া হয়।&lt;/p&gt;

&lt;p&gt;Plan Driven পদ্ধতি মূলত আবিষ্কার করা হয়েছিল, মূলত বড় টিমের জন্য। এই পদ্ধতিতে অনেক সময় লেগে যায়। Plan Driven পদ্ধতি ক্রিটিক্যাল সিস্টেম গুলো ডিজাইন করা জন্য ব্যবহার করা সব থেকে ভাল। কারন এই পদ্ধতিতে সব থেকে বেশি মাথাব্যাথা থাকে প্লানিং, জিজাইনিং এবং ডকুমেন্টশন এর উপর। এটা অবশ্যই যৈক্তিক। কারন এসব সিস্টেমে একটু এদিক ওদিক হয়ে গেলে বড় আকারে ক্ষতি হয়ে যেতে পারে। যেটা পূরন করা সম্ভব নয়।&lt;/p&gt;

&lt;p&gt;এই ভারী পদ্ধতি ব্যবহার করে একধরনের অশান্তির সৃষ্টি হয় তখন আর্বিভাব ঘটে Agile methods এর। Agile methods এর দর্শন বা ফিলোসফি এর ম্যানিফেস্টতে বোঝা যায়।&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:&lt;br&gt;
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan&lt;br&gt;
That is, while there is value in the items on the right, we value the items on the left more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Visit &lt;a href="https://agilemanifesto.org/" rel="noopener noreferrer"&gt;Agile Manifesto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agile এর সবগুলো methods একটা জিনিসের পরামর্শ দিয়ে থাকে, দ্রুত ডেভেলপমেন্ট এবং ডেলিভারি করা। এসব মেথডস গুলো বিভিন্ন পদ্ধতিতে কাজ করে থাকে কিন্তু এতের ভিতরে বিদ্যমান নীতি বা প্রিন্সিপাল গুলো একই ধরনের।&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47gojuaznxfkd8nuo1cn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47gojuaznxfkd8nuo1cn.jpg" alt="agile terms" width="768" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agile methods গুলো দুই ধরনের সিস্টেম ডেভেলপ করা জন্য সব থেকে সফল।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রোডাক্ট ডেভেলপমেন্ট সেখানে কোন কোম্পানি বিক্রয় করা জন্য ছোট অবথা মিডিয়াম সাইজের প্রোডাক্ট ডেভেলপ করছে।&lt;/li&gt;
&lt;li&gt;কোন সংগঠনের জন্য কাস্টম সিস্টেম ডেভেলপমেন্ট&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Agile Development Techniques
&lt;/h2&gt;

&lt;p&gt;Agile methods মুলত ডেভেলপ হয় নব্বই এর দশকে। সফটওয়্যার এর ডেভেলপমেন্ট কালচারে পরিবর্তন এক্সট্রিম প্রোগ্রামিং এর মধ্যে দিয়ে। এই পদ্ধতিতে বেস্ট প্রাক্টিস গুলো ফলো করা হয়, iterative ডেভেলপমেন্ট করা হয় এবং ডেভোলোপমেন্ট চরম পর্যায়ে পুশ করা হয়। একটা সিস্টেমের একটা নতুন ভার্সন একই দিনে আলাদা আলাদা প্রোগ্রামার ডেভেলপ, ইন্টিগ্রড এবং টেস্ট করবে।&lt;/p&gt;

&lt;p&gt;extreme programming-এ requirements গুলোকে বিভিন্ন সিনারিও হিসেবে প্রকাশ করা হয়, যেগুলো মুলত সিরিজ টাস্ক হিসবে ইমপ্লিমেন্ট করা হয়। প্রোগ্রামাররা এই টাস্ক গুলোর উপর ভিত্তি করে বিভিন্ন টেস্ট কেস ডেভেলপ করে এবং টেস্ট কোড লেখার এই টেস্ট গুলো অবশ্যই পাস করাতে হয়।&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f25h5kjb1vq7pg8ybhc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f25h5kjb1vq7pg8ybhc.jpg" alt="extreme programing practices" width="570" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;প্রাক্টিক্যালি দেখলে, দেখা যাবে XP যেমন টা সহজ মনে হয়, আসলে এটা ততটায় কঠিন একটা প্রসেস। এখানে বেশিরভাগ কোম্পানির ক্ষেত্রে এই প্রসেস টা ইন্টিগ্রেট করা সম্ভব হয় না। বিভিন্ন ধরনের সমস্যা দেখা দেয়। ম্যানেমেন্ট করতে সব থেকে বেশি সমস্যার সৃষ্টি হয়। বর্তমানে বেশির ভাগ কোম্পানিই Scrum কে ব্যবহার করছে কারন এটা সম্পূর্ণ ম্যানেজমেন্ট ফোকাস।&lt;/p&gt;

&lt;h3&gt;
  
  
  User Stories
&lt;/h3&gt;

&lt;p&gt;software requirements প্রতিনিয়ত পরিবর্তন হতে থাকে। এসব পরিবর্তনকে হ্যান্ডেল করা করা জন্য Agile methods এর আলাদা কোন requirements engineering আকটিভিটি নাই। মুলত requirements elicitation করা হয় ডেভেলপমেন্ট করার সময়। এই জিনিস টাকে সহজ করার জন্য উদ্ভব হয় “user stories”। “user stories” হল একটা সিনারিও যেখানে সিস্টেম ডেভেলপ হওয়ার পর একজন ব্যবহারকারীর কি রকম অভিজ্ঞতা হবে তার বিবরন।&lt;/p&gt;

&lt;p&gt;কাস্টমার এবংডেভেলপমেন্ট টিম একসাথে আলোচনার মাধ্যমে একটা স্টোরি কার্ড ডেভোলোপ করে যেখানে সব কিছু বিস্তারিত উল্লেখ থাকে। story card গুলো নিচের মত হতে পারে,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5mp3v1winw2m2zm4knzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5mp3v1winw2m2zm4knzq.png" alt="User stories" width="737" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;user stories সিস্টেম ডেভেলপ করা জন্য প্লানের কাজে ব্যবহার করা যেতে পারে, যেখানে ইটারেটিভ ভাবে কাজ গুলো করা হবে। একবার story card গুলো ডেভেলপ হয়ে গেলে সেগুলো কে ভেঙ্গে আলাদা আলাদা টাস্ক এ পরিনত করা হয়। এখানে মুলত রিসোর্স requirements এস্টিমেট করা হয় এবং কাস্টমার এর সাথে আলোচনা করা হয় এবং দেখা হয়, কোন পরিবর্তন করার প্রয়োজন আছে কিনা। এখানে টাস্ক গুলোকে এমনভাবে বিভক্ত করা হয় যাতে সেগুলো ২ সপ্তাহের ভিতরে তৈরি করা সম্ভব হয়।&lt;/p&gt;

&lt;p&gt;কোন কিছু যদি পরিবর্তন করা হয় তাহলে সেগুলো ২ সপ্তাহ পরে যে রিলিজ দেওয়া হবে সেখানে যুক্ত করে দেওয়া হয়। আর যদি কোন আগে থেকে ডেভেলপ করা থাকে তাহলে কাস্টমার এর ফিডব্যাক এর নির্ভর করে সিদ্ধান্ত নেওয়া হয়ে ওই নতুন ফিচার থাকবে নাকি আগের যেটা ছিল সেটাই থাকবে। আর যেগুলোর দরকার নেই সেগুলোকে মুছে ফেলা হয়।&lt;/p&gt;

&lt;p&gt;user stories এর সব থেকে বড় সমস্যা হল এর পূর্ণতা নিয়ে। একটা সম্পূর্ন সিস্টেমের requirements পূরনের জন্য প্রয়োজনীয় সকল স্টোরি গুলো ডেভেলপ হয়ে কিনা তা বোঝা খুব কঠিন। আবার একটা স্টোরির সিস্টেমের কোন একটিভিটি সম্পুর্ণ রুপে আলোচনা করছে কিনা তাও বোঝা কঠিন। ইউজার প্রায়শ অনেক কিছুই উল্লেখ করতে ভুলে যান।&lt;/p&gt;

&lt;h3&gt;
  
  
  Refactoring
&lt;/h3&gt;

&lt;p&gt;Software Engineering এর মৌলিক উদ্দেশ্য হচ্ছে সিস্টেম ডিজাইন করা পরিবর্তনের জন্য। এমন ভাবে সিস্টেমটাকে ডিজাইন করতে হবে , যাতে সহজে পরিবর্তন করা যায়। Refactoring এর মানে হচ্ছে, প্রগ্রামিং টিম সম্ভাব্য ইম্প্রুভমেন্ট গুলো খুজবে এবং তৎক্ষণাৎ সেগুলোকে ইমপ্লিমেন্ট করবে।&lt;/p&gt;

&lt;p&gt;আমরা যারা বিশেষ করে মিডলেভেল ডেভেলপার তারা বেশির ভাগ ক্ষেত্রেই এই কাজ গুলো করে থাকি। প্রথমে কোন ভাবে সমস্যা টা সমাধান করতে পারলেই হচ্ছে। তারপর যখন সিস্টেম রেডি হয়ে যাবে , তখন সেগুলো কে একটু একটু করে পরিবর্তন (যেখানে পরিবর্তন করা সম্ভব ) করা শুরু করে দেই। এমনকি এইধরনের কাজ অনেক সিনিয়র ডেভেলপারাও করে থাকেন। প্রথমে খারাপ কোড লেখা হয় বলে কিন্তু এটাকে খারাপ বলা যায় না। কারন যখন প্রথম রিলিজ দেওয়া হয় , কেউ জানে যে সিস্টেমটা কতজন ইউজার ব্যবহার করবে। আর খুব ভালো কোড লিখতে গেলে তো অনেক সময় আর খরচ লেগে যাবে। এজন্য অনেক এই ধরনের কাজ করা ভাল।&lt;/p&gt;

&lt;p&gt;Incremental development একটি মৌলিক সমস্যা হচ্ছে, এখানে সিস্টেম স্ট্রাকচার ধীরে ধীরে খারাপে দিকে যেতে থাকে। একটা পর্যায়ে এমনও হতে পারে যে সিস্টেম এ আর কাজ করা সম্ভব হচ্ছে না। Refactoring সিস্টেম স্ট্রাকচার এর মান বৃদ্ধি করে বোধ্যগম করে তোলে এবং স্ট্রাকচার যাতে অবনতি না হয় সেদিকে লক্ষ্য রাখা হয়।&lt;/p&gt;

&lt;p&gt;Refactoring এর উদাহরন অনেক রয়েছে। Code duplication remove, unused code remove, unwanted feature remove, make code organize ইত্যাদি। আরো ভালো করে বললে, কোড অনেক অংশ আছে যেগুলো বার ব্যবহৃত করে হয়েছে। একট কোড কপি পেস্ট করা হয়েছে। এক্ষেত্রে ওই কোডকে একটা ফাংশন বানিয়ে ব্যবহার করে কোড ডুপ্লিকেশন কমে যাবে।&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Driven Development
&lt;/h3&gt;

&lt;p&gt;Test Driven Development বা TDD একটা পদ্ধতি যেখানে কোন কিছু ইমপ্লিমেন্ট করার আগেই তার প্রয়োজনীয় টেস্ট কেস লেখা হয়। TDD একটা Extreme Programming এর একটি অংশ। XP তে টেস্টিং এর কিছু বৈশিষ্ট রয়েছে।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test First Development&lt;/li&gt;
&lt;li&gt;incremental test development from scenarios&lt;/li&gt;
&lt;li&gt;user involvement in the test development and validation&lt;/li&gt;
&lt;li&gt;the use of automated testing frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test Driven Development বা TDD সফটওয়্যার ইঞ্জিনিয়ারিং -এ একটি গুরুত্বপূর্ণ উদ্ভাবন। সাধারন ভাবে আমরা কি করি কোন ফিচারকে ইমপ্লিমেন্ট করি । তারপর তার জন্য প্রয়োজনীয় টেস্ট কেস লিখি। এখানে সমস্যা হচ্ছে আমরা অনেক কিছুই উপেক্ষা করতে পারি আবার কোড লেভেল ফোকাস করতে অনেক টেস্ট কেস এর কথা মাথায় থেকে চলে যেতে পারে। অনেক ক্ষেত্রে অনেক বাগ দেখা দিতে পারে। TDD কোন কিছু ইমপ্লিমেন্টশন করা আগে তার জন্য প্রয়োজনীয় সকল টেস্ট কেস গুলো লিখে ফেলা হয়। এবং তারপর কোড লেভেলে কাজ করা হয়। বাগ হওয়ার সম্ভাবনা কমে যায়। তাছার কোডার কে বেশি চিন্তা করা লাগে না। আর সব থেকে বড় কথা টেস্ট কেস গুলো যতক্ষন তা পাস হচ্ছে ততখন সেটা মূল সিস্টেমের সাথে যোগ করা হবে না।&lt;/p&gt;

&lt;p&gt;TDD এর আরেক টা সুবিধা হচ্ছে কাস্টমারকে হ্যাপি রাখা যায়। আমি ব্যক্তিগত ভাবে কাজ করতে যেয়ে অনেক সমস্যার সম্মুখীন হয়েছি।&lt;/p&gt;

&lt;p&gt;“এইটা কেন কাজ করছে, এইটা কেন কাজ হচ্ছে না? এই এমন হচ্ছে কেন? কাল রাতেই তো ঠিক ছিল আজকে আবার কি হল ? ইত্যাদি “&lt;/p&gt;

&lt;p&gt;এখানে আমার ভুল ছিল আমি তার Story কে ভালো করে ব্যাখা করতে পারিনি। কিরকম ফিচার লাগবে সেটা নিয়ে তেমন আলোচনা করলেও সেগুলো অনেক হাই লেভেল এর ছিলো (কোড থেকে অনেক উপরে )। এখানে যদি TDD প্রয়োগ করা হয়, তাহলে কি হত, কাস্টমার এর ভাব পরিবর্তন হয়ে যেত। তখন তার কথা নিম্নরুপ হতে পার,&lt;/p&gt;

&lt;p&gt;“এই ফিচার টা এমন করা যায় না? এই টা নিচে না দিয়ে উপরে দিকে দেওয়া যেতে পারে কিনা? এই ফিচার টা নতুন করে অ্যাড করা যায় কিনা ? ইত্যাদি”&lt;/p&gt;

&lt;p&gt;কাস্টমার এর কথা টোনই পরিবর্তন হয়ে যাবে। কারন যখন তার story এর উপরে বেইজ করে Story card বানানো হয়েছিল, কাস্টমার এর সাথে মিলেমিশেই টেস্টকেস গুলো লেখা হয়েছিল। এখানে তার মাথায় অনেক টেস্ট কেস এর আর্বিভাব হতে পারে, যেগুলো ডেভেলপার এর মাথায় সহজে আসবে না। এখন যদি কোন কিছু হয় তাহলে কাস্টমার ব্লেম করা সুযোগ পাবে না। কারন সে নিজেও তো ছিল। আর সেহেতু সব শর্ত্যই পূরন হয়ে যাচ্ছে এর মানে আর কোন সমস্যা নেই। কোড মূল সিস্টেমের সাথে অ্যাড করা জন্য প্রস্তুত।&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9daa5uf35mncylbngth.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9daa5uf35mncylbngth.jpg" alt="figure test case description for dose checking" width="764" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TDD এর জন্য টেস্ট আটোমেশন অত্যাবশীকীয়। টেস্ট গুলো লেখা হয় কম্পোনেন্ট গুলো তৈরি হওয়ার আগে execute করা জন্য। এই টেস্ট কেস গুলো অবশ্যই স্বতন্ত্র হতে হবে যাতে ইনপুট দিয়ে সহজে টেস্ট করা যায়। টেস্টিং কে অবশ্যই অটোমেশন করতে হবে যাতে যখন কোন পরিবর্তন হয় তখন যেন টেস্টিং শুরু হয়ে যায়। ফলাফল ইতিবাচক হলে মূল সিস্টেমে যুক্ত করতে দেওয়া হবে আর না হলে আবার কোড কর।&lt;/p&gt;

&lt;p&gt;TDD তে কিছু সমস্যা আছে।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রোগ্রামার টেস্টিং কে অগ্রধিকার দেয় তবে অনেক ক্ষেত্রে টেস্ট লেখার সময় সটকাট ব্যবহার করে। এসময় অনেক টেস্ট কেস এড়িয়ে যায়। এক্ষেত্রে অনাকাক্ষিতে বাগের দেখা মিলে।&lt;/li&gt;
&lt;li&gt;কিছু কিছু টেস্ট আছে যেগুলো লেখা খুবই কষ্টকর বিষয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TDD তে অনেক টেস্ট কেস লেখা হয়। কিন্তু তারপরও এটা বলা মুশকিল যে টেস্ট কেস গুলো সম্পূর্ণ সিস্টেমকে কভারেজ দিতে পারছে।&lt;/p&gt;

&lt;h3&gt;
  
  
  Pair Programming
&lt;/h3&gt;

&lt;p&gt;Pair এর বাংলা হচ্চে জোড়া। যখন দুইজন প্রোগ্রামার একসাথে একই কম্পিউটারে বসে প্রোগ্রামিং করবে তখন তাকে Pair Programming বলা হবে। কোন টাস্ক সম্পূর্ন করা জন্য আপনার একজান পার্টানার থাকবে। তবে এই পেয়ার প্রতিবার ডায়নামিক্যালি তৈরি করা হবে।&lt;/p&gt;

&lt;p&gt;Pair Programming এর কিছু সুবিধা আছে।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Collective Ownership:&lt;/strong&gt; সিস্টেম সবাই একই সাথে কাজ করে তাই সিস্টেম এর Ownership সবার থাকে। কেউ কাউকে ব্লেম করতে পারে না। দায়িত্ব বা দায়ভার সবার থাকে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Informal Reviews:&lt;/strong&gt; যেহেতু একজন পেয়ার থাকে সেহেতু কোডের একটা Informal review হয়ে যায়। এখান থেকে সিস্টেম এ অ্যাড হওয়ার আগেই অনেক এরর বের হয়ে আসতে পারে। যদি এই প্রসেসে অনেক সময় লেগে যায় বিধায় ডেভেলপমেন্ট প্রসেস এ ডিলে তৈরি হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encourages Refactoring:&lt;/strong&gt; নিজে নিজে কোড লিখলে অনেক সময় বোঝায় যায় না যে এখানে ইম্পূভ করা যেত । আর অন্য বিস্তারিত ভাবে বলে দেবে না। এখন একজন পেয়ার থাকলে দুইজনের মধ্যে আলোচনা অনেক ইম্পুভমেন্ট করা যেতে পারে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এখানে যে কেউ মনে করবে যে, Pair Programming individual programming এর থেকে ভালো না। আসলে দুইজন আলাদা আলাদা ভাবে যে কোড লিখতে পারবে , Pair Programming -এ তা অর্ধেক হয়ে যাবে। অনেক কোম্পানি আছে যারা Pair Programming কে ব্যবহার করে তারা এই নিয়ে সন্দিহান এবং তার এটা আর ব্যবহার করে না। তবে ক্ষেত্রে বিশেষ সিনিয়র প্রোগ্রামার জুনিয়র প্রোগ্রামের সাথে এক সাথে কাজ করে।&lt;/p&gt;

&lt;p&gt;Pair Programming সব থেকে সুবিধাজন হচ্ছে জুনিয়র এবং মিডলেভেল প্রোগ্রামারদের জন্য। কিন্তু সিনিয়র লেভেল প্রোগ্রামারদের জন্য একবারে যুক্তি যুক্ত নয়। এতে তাদের প্রোডাক্টিভিটি অনেক কমে যাবে।&lt;/p&gt;

&lt;p&gt;Pair Programming ক্ষেত্র বিশেষ-এ এখনো ব্যবহার করা হয়। তবে বেশির ভাগই কোম্পানিই এতা ব্যবহার করতে চাইবে না।&lt;/p&gt;

&lt;p&gt;To be continued...&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Software Process</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Thu, 08 May 2025 04:06:40 +0000</pubDate>
      <link>https://forem.com/mislam-dev/software-process-g2e</link>
      <guid>https://forem.com/mislam-dev/software-process-g2e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Software Process হলো একগুচ্ছ পরস্পর সম্পর্কিত কার্যক্রম (activities) যা একটা একটি Software production এর দিকে নিয়ে যায়। &lt;/p&gt;

&lt;p&gt;Software Process টা System এর ভিত্তি করে  বিভিন্ন ধরনের হতে পারে। এর জন্য নিদির্ষ্ট কোন পদ্ধতি নেই। তবে process যেমনই  হোক না কেন ৪টা  জিনিস অবশ্যই তার ভিতরে রাখতে হবে।&lt;/p&gt;

&lt;p&gt;১। Software Specifications &lt;/p&gt;

&lt;p&gt;২। Software Development &lt;/p&gt;

&lt;p&gt;৩। Software Validation&lt;/p&gt;

&lt;p&gt;৪। Software Evolution &lt;/p&gt;

&lt;p&gt;( নিচে এগুলো নিয়ে বিস্তারিত আলোচনা করা হবে। )&lt;/p&gt;

&lt;p&gt;Software Process একটি জটিল বিষয় এবং অন্য একটি সৃজনশীল ( Creative) কাজগুলোর মত করে,  মানুষের সিদ্ধান্ত এবং তাদের চিন্তার ধারার উপর নির্ভর করে। যেহেতু এখানে কোনো Universal কোন  Process নায় এই জন্য, কম্পানিগুলো তাদের মত করে একটা Process তৈরি করে নেয় , যাতে তারা তাদের কম্পানিতে কর্মরত Engineer দের দক্ষতা ব্যবহার করে সর্বোচ্চ সুবিধা গ্রহন করতে পারে। তবে এক্ষেত্রে এই প্রসেস  Engineer এবং System এর উপর নির্ভর করে সময়ের সাথে সাথে পরিবর্তন হতে পারে। &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Roles reflect the responsibilities of the people involved in the process. For example: Project Manger, programmer , database designer etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Software Process Models
&lt;/h2&gt;

&lt;p&gt;Software Process model হলো software process এর সহজ উপস্থাপনা। একে অনেক সময় SDLC (Software Development Life Cycle) Models ও বলা হয়ে। এই সকল মডেল গুলো High লেভেল এর হয়ে থাকে। এখানে শুধুমাত্র activity গুলো তুলে ধরা হয়। এই activity এর উপর নির্ভর বিভিন্ন কর্মপদ্ধতি চিন্তা করা হয়। &lt;/p&gt;

&lt;p&gt;কিছু সাধারন মডেলঃ&lt;/p&gt;

&lt;p&gt;১। The Waterfall Model &lt;/p&gt;

&lt;p&gt;২। Incremental Development&lt;/p&gt;

&lt;p&gt;৩। Integration and Configuration&lt;/p&gt;

&lt;p&gt;এইগুলো সাধারন কয়েকটা মডেল। যেহেতু Universal কোন মডেল নেই সেহেতু কোন প্রতিষ্ঠান বা কম্পানি চাইলে তাদের মত এই সব মডেল ডিজাইন করে ব্যবহার করতে পারে। তবে এখানে তাদের মূল উদ্দেশ্য হবে  সময়ের মধ্যে দ্রুত Software প্রস্তুত করে Delivery করা।  তার চাইলে ২ বা ততোধিক মডেল একসাথে মডেল তৈরি করতে পারে। এতা সম্পূর্ণ নির্ভর করছে  তাদের System এর ধরন  এবং Developer দের দক্ষতার উপর। &lt;/p&gt;

&lt;h2&gt;
  
  
  The Waterfall Model
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09gva3yrx7f7eo50xxh9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09gva3yrx7f7eo50xxh9.jpg" alt="The Waterfall Model" width="600" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Waterfall model মডেল হলো কয়েকটি ধাপ নিয়ে গঠিত হয়। এখানে মূলত একটা ধাপের কাজ শেষ হলে পরবর্তী ধাপের কাজ শুরু হয় । তবে প্রতিটি ধাপের কাজ গুলো Document এর মাধ্যমে সংরক্ষন করা হয়। এটা একট plan-driven মডেল। এখানে Software Development শুরু করার আগেই সব কিছু প্লান করা হয়। &lt;/p&gt;

&lt;p&gt;The Waterfall model এর কিছু ধাপ যেগুলো মৌলিক Software Development এর কার্যক্রমঃ &lt;/p&gt;

&lt;p&gt;১। Requirements Analysis and Definition: এখানে সিস্টেম এর সক্ষমতা , সীমাবদ্ধতা ইত্যাদি বিষয় নিয়ে আলাপ আলোচনা হয়। &lt;/p&gt;

&lt;p&gt;২। System and Software Design:  এই ধাপে সিস্টেম এর জন্য হার্ডওয়্যার ও সফটওয়্যার এর জন্য একটা Architecture তৈরি করা হয়। &lt;/p&gt;

&lt;p&gt;৩। Implementation and Unit Testing: এই ধাপে এসে  মুলত  প্রোগ্রামিং করা হয় এবং প্রতিটি ছোট কম্পোনেন্টকে টেস্ট করা হয়।  &lt;/p&gt;

&lt;p&gt;৪। Integration and System testing: এই ধাপে সকল ছোট ছোট Unit কে একত্র করে , সম্পর্ণ সিস্টেমটাকে টেস্ট করা হয়। এই টেস্টিং সফল হলে সফটওয়্যার ডেলিভারি করা জন্য প্রস্তুত। &lt;/p&gt;

&lt;p&gt;৫। Operation and Maintenance: এই ধাপ তো হল সব থেকে লম্বা ধাপ। সিস্টেম ডেলিভারি করা হয়ে গেছে এবং প্রাক্টিক্যালি ব্যবহার করা হচ্ছে। এখন অনেক Bugs , error থাকতে যেগুলো টেস্টিং এর সময় ধরা পড়ে নি। এই ধাপে এসে সেগুলো ঠিক করা হয়। এছাড়াও সিস্টেম সিকিউরিটি , পারফরমেন্স উন্নত করা চেষ্টা করা হয়। &lt;/p&gt;

&lt;p&gt;এই বিষয় গুলো পরবর্তীতে আলোচনা হবে। &lt;/p&gt;

&lt;h3&gt;
  
  
  Problems of Waterfall Model
&lt;/h3&gt;

&lt;p&gt;Waterfall model হার্ডওয়্যার ডেভোলপ করা জন্য ঠিক আছে। কারন এই পন্য একটা প্রস্তুত হয়ে গেল তা আর পরিবর্তন করা যায় না। এর জন্য সবকিছু ভালো মত ধাপে ধাপে কার্য সম্পাদন করা হয়। যেকোন একটা ধাপে যদি ভুল হয় , সেটা সম্পূর্ণ প্রডাক্টকে নষ্ট করে দিতে পারে। &lt;/p&gt;

&lt;p&gt;তবে Software এর ক্ষেত্রে পরবর্তীতে পরিবর্তন করা সম্ভব। Software প্রতিনিয়তই পরিবর্তন করার প্রয়োজন হতে পারে। The Waterfall model-এ কোন ধাপে যদি সমস্যা হয় তাহলে সেটা আবার পূনরায় প্রথম ধাপ থেকে শুরু করা হয়। Software develop করার ক্ষেত্রে বিভিন্ন ধাপে প্রবলেম হবে। সেক্ষেত্রে প্রথম শুরু করা অনেক সময় লেগে যাবে। তার বড় বিষয় হচ্ছে এখানে একটা ঝুকি থেকে যায়। ঝুকি টা হচ্ছে, যদি Software ডেভেলোপ শেষ হওয়ার পরে সেটা কারও পছন্দ না হয়। User যদি গ্রহন না করে। তখন এই সময় টুকু নষ্ট হয়ে যাবে। তাছাড়া এই মডেলে কাজ করলে একটা ফিচার রিলিজ করতেও অনেক সময় লেগে যায়। &lt;/p&gt;

&lt;h3&gt;
  
  
  Applications of Waterfall model
&lt;/h3&gt;

&lt;p&gt;১। Embedded Systems:  Embedded Systems একবার ইমপ্লিমেন্ট করা হয়ে গেলে তা আর পরিবর্তন করার সুযোগ থাকে না। এজন্য প্রতিটা ধাপ খুব ভালো ভাবে রিসার্চ করে তারপর পার করা হয়। এর জন এই ধরনের সিস্টেম তৈরি করতে সময় ও লেগে যায়। &lt;/p&gt;

&lt;p&gt;২। Critical System:  critical system গুলোতে প্রতেক টি ডাটা প্রয়োজন এজন্য প্রতিটি ধাপ আস্তে আস্তে ভালো ভাবে পার করা প্রয়োজন, যাতে ভবিষ্যতে কোন অনাকাঙ্ক্ষিত ঘটনা না ঘটে। &lt;/p&gt;

&lt;h3&gt;
  
  
  Ending
&lt;/h3&gt;

&lt;p&gt;বর্তমানে  Waterfall model  একবারে যৌক্তিক না , কারন সিস্টেম এর Requirements  প্রতি নিয়ত পরিবর্তন হয়। এখন যদি Waterfall model ফলো করে সিস্টেম রেডি করা হয় তাহলে অনেক সময় লেগে যাবে। দিন যার ভ্যালু অনেক কমে যেতেও পারে। অতিতে এমন অনেক কেস আছে। দেখা গেছে, একজনের কাছে একটা খুব ভালো আইডিয়া আছে। কিন্তু সেই আইডিয়া সম্পর্ণ রুপ দিতে গেলে অনেক সময় লেগে যাবে। তার আইডিয়া ছিল সম্পূর্ণ রেডি করে তারপর ময়দানে নামবে। কিন্তু তার সেইম আইডিয়া অনেক পরে এসে অল্প অল্প করে ডেভেলোপ করে তারা আজ ধরা ছোয়ার বাইরে চলে গেছে। &lt;/p&gt;

&lt;p&gt;So The Waterfall model  is not suitable for current software development. &lt;/p&gt;

&lt;h2&gt;
  
  
  Incremental Development
&lt;/h2&gt;

&lt;p&gt;Incremental Development -এ প্রথমে একটা প্রাথমিক প্রোডাক্ট বা software তৈরি করা হয় এবং পরবর্তীতের user এবং অন্যান্যদের মতামতের উপর ভিত্তি করে আস্তে আস্তে ডেভেলোপ হয়। এখানে ভার্সন ম্যানেজমেন্ট করে নতুন নতুন ফিচার যুক্ত করা হয়। নতুন ফিচার এর জন্য নতুন একটা ভার্সন রিলিজ দেওয়া হয়ে থাকে। &lt;/p&gt;

&lt;p&gt;বর্তমানে এই ধরনের মডেল খুবই জন্যপ্রিয়।  এখানে সকল ফিচার আস্তে আস্তে ধাপে ধাপে ডেভোলোপ করা করা হয়। প্রতিনিয়ত সব কিছু পরিবর্তন হচ্ছে। সাথে মানুষের চাহিদা , প্রয়োজন , দৈনন্দিন জীবন ব্যবস্থা সব কিছুই  পরিবর্তন হচ্ছে। এখন একটি software কে যদি সার্ভাইভ করতে হয় তাহলে এই সকল বিষয় গুলো বিবেচনা করেই আগাতে হবে। এখানে যেহেতু পর্যায়ক্রমে সব কিছু ডেভেলোপ হয়,  সেহেতু নতুন নতুন ফিচার নিয়ে ডেভোলোপ করা খুবই সহজ হয়। আবার পুরাতন ফিচার যেগুলোর আর দরকার নেই সেগুলোও বাদ দেওয়া যায়। নতুনত্বের সাথে তাল মিলিয়ে চলা যায়। &lt;/p&gt;

&lt;p&gt;Incremental Development এর ক্ষেত্রে ভার্সন ম্যানেজ করা হয়। প্রথমে একটা মিনিমাল software রিলিজ দেওয়া হয়। এই ভার্সন গুলো user ব্যবহার করতে পারে। এর পরে নতুন নতুন ফিচার প্লান করা হয়। সেগুলো যুক্ত করা হয়ে গেলে সব কিছু টেস্ট করার পর নতুন একটা ভার্সন রিলিজ করা হয়। নতুন ফিচার, বাগ ফিক্সিং কোড পরিবর্তন করলেই সেটা নতুন ভার্সনে নিয়ে যাওয়া হয়। তবে প্রতিটি নতুন ভার্সন user এর কাছে expose না করলেও চলে। একবার অনেক গুলো ভার্সন রিলিজ দেওয়া যেতে । এটা নির্ভর করছে কম্পানি বা প্রতিষ্ঠানের উপর। এই ভার্সন ম্যানেজমেন্ট এর জন্য  প্রসেস টা Waterfall Model এর তুলনায় অনেক সহজ করে দেই। তাছাড়া এই ভার্সনের মাধ্যমে বেটা টেস্টিং করা যায়। &lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;p&gt;Incremental Development এ Waterfall model এর তুলনায় ৩ টা প্রধান সুবিধা রয়েছে।  &lt;/p&gt;

&lt;p&gt;১। খরচ কমে যায়ঃ Waterfall Model এ প্রতিটি ধাপে বিস্তারিত ভাবে সব কিছু ডকুমেন্ট করা হয়। এখন যদি কোন requirements এর পরিবর্তন হয় তাহলে তার খরচ Incremental Development model অনেক কম। &lt;/p&gt;

&lt;p&gt;২। কাস্টমার ফিডব্যাকঃ Waterfall model-এ সম্পূর্ণ software তৈরি না হলে কাস্টমার থেকে ফিডব্যাক নেওয়া সম্ভব হয় না। আর ডকুমেন্টশন কাস্টমার পড়তে খুব বেশি স্বাছন্দ বোধ করে না। এই মডেল যেহেতু ধাপে ধাপে develop করা হয়, সেহেতু customer খুব সহজে তার ফিডব্যাক দিতে পারে। &lt;/p&gt;

&lt;p&gt;৩। Early Delivery and Deployment : এই প্রসেস এ কাস্টমার দ্রুত একটা প্রোডাক্ট পেয়ে যায়। যদিও এটা সম্পূর্ন ফাংশনালিটি যুক্ত থাকে না। কিন্তু তা ব্যবহার এর উপযুক্ত হয়ে যায়। waterfall model এর তুলনায় এখানে সময় অনেক কম লাগে &lt;/p&gt;

&lt;h3&gt;
  
  
  Problems
&lt;/h3&gt;

&lt;p&gt;Incremental Development  এর সুবিধা থাকলেও ম্যানেজমেন্ট এর দিক থেকে চিন্তা করলে দুইটি অসুবিধা আছে। &lt;/p&gt;

&lt;p&gt;১। এর মডেলে প্রসেস দেখা যায় না। এই জন্য ম্যানেজার কে প্রতিনিয়ত ডিলিভারি গুলো দেখতে হয় এবং এই অনুযায়ী প্রগ্রেস তৈরি করতে হয়। এ ক্ষেত্রে যদি সফটওয়্যার যদি খুবই দ্রুত প্রয়োজন হয় এবং প্রতিটি ভার্সনে ডকুমেন্টেশন করা লাগে তাহলে খরচ অনেক বেড়ে যায়। &lt;/p&gt;

&lt;p&gt;২। সিস্টেম স্ট্রাকচার নষ্ট বা খারাপ হওয়ার সম্ভাবনা থাকে যখন নতুন ফিচার যুক্ত করা হয়। এখানে যেহেতু অনেক জন একসাথে কাজ করে সেক্ষেত্রে নতুন কিছু যুক্ত করতে গেলে সেখানে একটু সমস্যার সৃষ্টি হতে পারে। তাছাড়া সবার দক্ষতা সমান না। এই জন্য অনেক সময় সিস্টেম এর স্ট্রাকচার নিচের দিকে নেমে যায়। অনেক সময় নষ্ট ও হয়ে যায়।  &lt;/p&gt;

&lt;p&gt;এই সমস্যা গুলো সবথেকে বেশি দেখা দেয় বড় , জটিল এবং লম্বা সময় এর সিস্টেমে যেখানে এই সব বড় সিস্টেমের ছোট ছোট অংশ বিভিন্ন টিম কাজ করে । এই ধরনের সিস্টেম গুলোতে এই সমস্যাগুলো সব থেকে বেশি দেখা দেয়। মূলত এই ধরনের সিস্টেম এ কাজ করার জন্য আগেই থেকেই আর্কিটেকচার, ডকুমেন্টশন এবং আনুসাংঙ্গিক সব কিছুই আগে থেকে ঠিক ঠাক করে রাখতে হয়। &lt;/p&gt;

&lt;h2&gt;
  
  
  Integration and Configuration
&lt;/h2&gt;

&lt;p&gt;Software Engineer এর দের মধ্যে একটা প্রিন্সিপাল খুব পরিচিত &lt;strong&gt;DRY, Don’t Repeat Yourself&lt;/strong&gt;  এই প্রিন্সিপাল মুল নীতি একই রকম কম্পোনেন্ট কে বার বার নতুন করে না বানিয়ে , সেটাকে বার বার ব্যবহার করা। বর্তমানে এই জিনিস টা খুবই জনপ্রিয়তা। সবাই এই সিম্পল প্রিন্সিপাল ফলো করার চেষ্টা করে। এই ভাবে একই জিনিস বার বার ব্যবহার করার হলো Re-use oriented পদ্ধতি।&lt;/p&gt;

&lt;p&gt;Re-use oriented পদ্ধতি টা মুলত একটা পুনরায় ব্যবহার করা যাবে এমন সফটওয়্যার কম্পোনেন্ট (একাধিক হতে পারে)  এবং একটা ফ্রেমওয়ার্ক যার দ্বারা এসব কম্পোনেন্ট কে একসাথে ব্যবহার করা যাবে তার উপর নির্ভর করে । &lt;/p&gt;

&lt;p&gt;একটা উদাহরনের মাধ্যমে বিষয়টা সহজ করা যাক। &lt;/p&gt;

&lt;p&gt;আমাদের কাছে একটা Department Manage করার জন্য একটা সফটওয়্যার আছে। এখন এই সফটওয়্যার টা আমরা পুনরায় ব্যবহার করতে পারি (COTS)। এই সফটওয়্যার-এ  নিচের এই ফিচার গুলো আছে, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive Dashboard&lt;/li&gt;
&lt;li&gt;Course Management&lt;/li&gt;
&lt;li&gt;Students , Teacher and Staff Management&lt;/li&gt;
&lt;li&gt;Online Exam&lt;/li&gt;
&lt;li&gt;Online Quiz and Assignment&lt;/li&gt;
&lt;li&gt;Calendar with Scheduling Facility&lt;/li&gt;
&lt;li&gt;Report Generation&lt;/li&gt;
&lt;li&gt;Setting and Preference Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এখন সিভিল ডিপার্ট্মেন্ট থেকে বলা হলো ঠিক এইধরনের একটা সফটওয়্যার তৈরি করার জন্য। সেই সফটওয়্যার নিচের ফিচার গুলো থাকতে হবে, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive Dashboard&lt;/li&gt;
&lt;li&gt;Course Management&lt;/li&gt;
&lt;li&gt;Students , Teacher and Staff Management&lt;/li&gt;
&lt;li&gt;Calendar with Scheduling Facility&lt;/li&gt;
&lt;li&gt;Attendance&lt;/li&gt;
&lt;li&gt;Instrument Management&lt;/li&gt;
&lt;li&gt;Report Generation&lt;/li&gt;
&lt;li&gt;Setting and Preference Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এখানে লক্ষ্য করলে দেখা যাবে, আগের প্রস্তুতকৃত সফটওয়্যার সাথে কয়েকটা জিনিস বাদে বাকি গুলো বিল্ড করা রয়েছে। এখন আমরা  সিভিল ডিপার্ট্মেন্ট এর কাছে জিজ্ঞাসা করতে পারি যে আমাদের এই রকম একটা সফটওয়্যার আছে, তার ভিতরে এই এই ফিচার নেই । এখন কি আপনারা এটা ব্যবহার করবেন, তার যদি রাজি হয়, তাহলে আমরা কিছু কনফিগারেশন করে সফটওয়্যার ডেলিভারি করে দেব ব্যাস। আমারদের কাছ শেষ।  তারা যদি রাজি না হয় তাহলে  ওইগুলো ব্যবহার করে এবং নতুন কম্পোনেন্ট গুলো নতুন করে বিল্ড করে  দুই ধরনের কম্পোনেন্টগুলো একসাথে করে সফটওয়্যার টি প্রস্তুত করতে পারি । &lt;/p&gt;

&lt;h3&gt;
  
  
  Software Components
&lt;/h3&gt;

&lt;p&gt;তিন ধরনের সফটওয়্যার কম্পোনেন্ট রয়েছে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stand-alone applications: এই ধরনের অ্যাপ্লিকেশান গুলো সাধারনভাবে ব্যবহার করার জন্য ব্যবহৃত হয়। এখানে একসাথে প্রয়োজনীয় অপ্রয়োজনীয় অনেকগুলো ফিচার থাকে।&lt;/li&gt;
&lt;li&gt;Collection of Objects: এই ধরনের সফটওয়্যার  কম্পোনেন্টস গুলো বেশিরভাগ ক্ষেত্রেই প্যাকেজ হয়, যেটা আগে থেকে বিদ্যমান  বিভিন্ন সফটওয়্যার এর সাথে কাজ করে থাকে।&lt;/li&gt;
&lt;li&gt;Web services: এই বিভিন্ন ধরনের সার্ভিস যে ওয়েব এর মাধ্যমে অ্যাক্সেস করা যায়। যেমন Weather Api&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Process Stages
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexnx4054rfpfy8ma1niy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexnx4054rfpfy8ma1niy.png" alt="Process Stages" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;নিচের এই স্টেপ গুলো উপরে ইতোমধ্যেই অনুসরণ করা হয়ে গেছে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements Specifications: এই ধাপে একটা Requirements  এর তালিকা আসে । সাধারনভাবে কি কি লাগবে তার একটা বিবরন দেওয়া থাকে।&lt;/li&gt;
&lt;li&gt;Software Discovery and Evaluation: এই ধাপে এসে খোজা হয় যে Requirements এর সাথে মেলে এমন কোন সফটওয়্যার আছে কিনা এবং এই সফটওয়্যার এর কি ফিচার আছে সেগুলোকে মূল্যায়ন করা হয়।&lt;/li&gt;
&lt;li&gt;Requirements refinement: আগের ধাপে যদি কোন সফটওয়্যার খুজে পাওয়া যায় তাহলে সেটা ব্যবহার করতে হবে এবং এই ধাপে সেটা স্বাভাবিক ভাবেই  Requirements এর পরিবির্তন করতে হবে।&lt;/li&gt;
&lt;li&gt;Application System Configuration: এখন যদি Requirements  অনুযায়ী একই ধরনের কোন সফটওয়্যার থাকে থাকলে এই ধাপে এসে কনফিগারেশন করা এবং সফটওয়্যার ডেলিভারি দেওয়া&lt;/li&gt;
&lt;li&gt;Components Adaption and Integrations: যে সফটওয়্যার কম্পোনেন্টগুলো পাওয়া গেছে  সেগুলো ব্যবহার এর জন্য প্রস্তুত করা এবং  নতুন কম্পোনেন্টস গুলো তৈরি করা। সর্বশেষে এই দুইধরনের কম্পোনেন্টস গুলো একসাথে করা হয় এই ধাপে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উপরে এই ধাপগুলোই কিন্তু অনুসরণ করা হয়েছিল। &lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Development time কমে যায়&lt;/li&gt;
&lt;li&gt;দ্রুত সফটওয়্যার ডেলিভারি করা যায়&lt;/li&gt;
&lt;li&gt;সফটওয়্যার গুনগত মান ঠিক থাকে এবং বৃদ্ধি পায়।&lt;/li&gt;
&lt;li&gt;ভবিষ্যতে ব্যবহার করা যায় এবং নতুন ফিচার সহজে যুক্ত করা যায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;এই ধরনের সিস্টেম কনফিগার করা একটু জটিল&lt;/li&gt;
&lt;li&gt;Maintenance করা কষ্টদায়ক&lt;/li&gt;
&lt;li&gt;নিরাপত্তা ঝুকি থাকে&lt;/li&gt;
&lt;li&gt;অনেক কিছু পরিবর্তন করা যায় না&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ending
&lt;/h3&gt;

&lt;p&gt;পরবর্তীতে integration and configuration model নিয়ে বিস্তারিত আলোচনা হবে। &lt;/p&gt;

&lt;h2&gt;
  
  
  Process Activities
&lt;/h2&gt;

&lt;p&gt;সফটওয়্যার প্রসেস হল পর্যায়ক্রমে থাকা টেকনিক্যাল এবং ম্যানেজমেন্ট সহ জিজাইন, টেস্টিং  ইত্যাদি বিষয়ের সুসংগঠিত কার্যাকলাপ। শুরু থেকে শুরু করে শেষ পর্যন্ত সব কিছুই উল্লেখ থাকে। বর্তমানে এসব কাজ গুলো সহজ করার জন্য অনেক টুল বিদ্যমান রয়েছে। এসব টুল ব্যবহার করা যায়। &lt;/p&gt;

&lt;p&gt;তবে এসব activities এর মধ্যে ৪ টি মৌলিক activities বিদ্যমান। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software Specifications&lt;/li&gt;
&lt;li&gt;Software Design and Implementation&lt;/li&gt;
&lt;li&gt;Software Validation&lt;/li&gt;
&lt;li&gt;Software Evolution&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Specifications
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rrsdnkbwtz6mit3whw7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rrsdnkbwtz6mit3whw7.webp" alt="Software Specifications" width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software Specifications অথবা requirements engineering হল একটা প্রসেস, যা সফটওয়্যার এর প্রয়জনীয়তা সংগ্রহ , বিশ্লেষন, ডকুমেন্টেশন এবং বিভিন্ন প্রতিবন্ধকতা খুজে বের করা। এটা সফটওয়্যার ইঞ্জিনিয়ারিং এর প্রথম ধাপ। এটা দেখে মনে হবে খুবই সহজ জিনিস। কিন্তু এই ধাপের উপরে বাকি সব কিছু নির্ভর করে। এখানে একটু ত্রুটি হলে পরবর্তীতে সিস্টেম ডিজাইন করতে অনেক সমস্যার সম্মুখীন হতে হবে। এসে সমস্যা এড়াতেই প্রথম মার্কেট রিসার্স করা হয়, আদেও এই সফটওয়্যার কাজে দিবে কিনা। আদেও শ্রম এবং টাকা খরচ করে এই সফটওয়্যার কতটা যৌক্তিক তাও বোঝার চেষ্টা করা  হয়। &lt;/p&gt;

&lt;p&gt;Requirement Engineering-এ তিনটি প্রধান activities রয়েছে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirement Elicitation and analysis: এই ধাপে মুলত সিস্টেম সম্পর্কে বিভিন্ন তথ্য সংগ্রহ করা হয়। এক্ষেত্রে বিদ্যমান কোন সিস্টেম ,ব্যবহার কারীর ফিডব্যাক ইত্যাদি বিষয়-এ তথ্য সংগ্রহ করে তা বিশ্লেষন করা হয়।&lt;/li&gt;
&lt;li&gt;Requirement Specification: আগের ধাপের সংগ্রহ করা তথ্যের উপর ভিত্তি করে , এই ধাপে এসে কি কি জিনিস প্রয়োজন সেগুলোর ডকুমেন্ট করা হয়। এখানে User requirements এবং System requirements এই দুই ধরনের requirements এর ডকুমেন্ট থাকতে পারে।&lt;/li&gt;
&lt;li&gt;Requirements Validation: এই ধাপে এসে যে requirements এর ডকুমেন্ট তৈরি করা হয়েছে তা বাস্তবিক কিনা, আদেও এই Consistency এর থাকবে কিনা, সম্পূর্ণ করা যাবে কিনা ইত্যাদি চেক করা করা হয়। এই ধাপে অনেক ভুল দেখা দিতে পারে। দেওয়াটায় স্বাভাবিক। এই ভুল গুলো সংশোধন করে পুনরায় এই ধাপের কাজ করা।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Design and Implementation
&lt;/h2&gt;

&lt;p&gt;Software Design হলো  সফটওয়্যার এর আর্কিটেকচার, ডাটা মডেল এবং অন্যনা কম্পোনেন্ট এর সাথে সিস্টেম কিভাবে ইন্টারফেস করবে তার বিস্তারিত বর্ণনা। &lt;/p&gt;

&lt;p&gt;প্রথমেই একটা সফটওয়্যার একবারে রেডি করা সম্ভব নয়, আস্তে আস্তে ধাপে বিভিন্ন ফিচার যুক্ত করা হয়। কিন্তু প্রথম স্টেপেই নির্ধারন করা হয় কোন টেকনোলজি, কোন আর্কিটেকচার ব্যবহার করে করা হবে। এই জন্য প্রথমে সফটওয়্যার এর জন্য একটা আর্কিটেকচার, ডাটা মডেল  এবং প্রয়োজনীয় অনন্যা বিষয়গুলো নিয়ে বিস্তারতি ডকুমেন্ট তৈরি করা হয়। তবে এই ডকুমেন্ট যখন ই নতুন কোন ফিচার বা তথ্য যুক্ত করা হয় তখন এটা পরিবর্তন বা আপডেট করে ফেলা হয়।   &lt;/p&gt;

&lt;p&gt;একটা সিস্টেম বিভিন্ন সিস্টেম  সফটওয়্যার এর সাথে ইন্টারফেস করে থাকে। এগুলোর বেশিরভাগই হলো অপারেটিং সিস্টেম, ডাটাবেসজ, মিডেলওয়্যার এবং বিভিন্ন থার্ড পার্টি সিস্টেম। সফটওয়্যার ডিজাইনের জন্য এই কম্পোনেন্ট বা সিস্টেম  সফটওয়্যার গুলো গুরুত্বপূর্ণ ভুমিকা পালন করে থেকে। আর এই কম্পোনেন্ট গুলো ডিজাইনের শুরু ঠিক না করলে পরবর্তীতে অনেক সমস্যার সম্মুখীন হতে হয়। &lt;/p&gt;

&lt;p&gt;সিস্টেম এর প্রয়োজনীয়তার উপর নির্ভর করে এই সফটওয়্যার ডিজাইন এর প্রসেস ভিন্ন ভিন্ন হতে পারে। উদাহরন হিসবে একটা রিয়েলটাইম কমিউনিকেশন সফটওয়্যার এর জন্য ডাটাবেজের কোন প্রয়োজন নেই। এখানে ডাটাবেজ-এ কোন তথ্যই সেইভ করার প্রয়োজন হয় না। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfc0lysbhcrxo2zpjdfz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfc0lysbhcrxo2zpjdfz.png" alt="Software Design and Implementation" width="617" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architectural design: এখানে সিস্টেম আর্কিটেকচার নির্ধারন করা হয়।  কম্পোনেন্ট গুলো কিভাবে থাকবে এবং তাদের মধ্যে ইন্টাফেস কিভাবে হবে এই ধরনের কাজ গুলো নির্ধারন করা হয়।&lt;/li&gt;
&lt;li&gt;Database design: সিস্টেম আছে মানেই ডাটা অস্তিত্ব আছে। এখন ডাটা গুলো কিভাবে সংরক্ষন করা হবে , তা এই portion-এ এসে নির্ধারন করা হয়।&lt;/li&gt;
&lt;li&gt;Interface design: এখানে মুলত সিস্টেম কম্পোনেন্টগুলো ইন্টারফেস নির্ধারন করা হয়ে থাকে।&lt;/li&gt;
&lt;li&gt;Component selection and design: এই ধাপে এসে, প্রয়োজনীয় বিভিন্ন কম্পোনেন্ট খোজার চেষ্টা করা হয়। যদি কম্পোনেন্ট বিদ্যমান থাকে তাহলে তা ব্যবহারের জন্য নির্ধারন করা হয়। আর যদি না থাকে তাহলে ডিজাইনের কাজ কাজ করা হয়। এখানে কম্পোনেন্ট এর জন্য তথ্য দিয়ে প্রোগ্রামার এর জন্য রেখে দেওয়া হয়। এক্ষেত্রে UML (Unified Modeling Language) এর ব্যবহার হয়ে থাকে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;সবগুলো activities এর সম্বনয়ে একটা ডিজাইন আউটপুট জেনারেট হয়। এটাকে ব্যবহার করে সফটওয়্যার এর কাজ সামনের দিকে অগ্রসর হয়। &lt;/p&gt;

&lt;h2&gt;
  
  
  Software Validation
&lt;/h2&gt;

&lt;p&gt;Software Validation অথবা সাধারন ভাবে verification and validation এর উদ্দেশ্য হল software specification মেনে চলা এবং customer expectation ফুলফিল করা।  এক্ষেত্রে software specification এর উল্লেখিত ফিচারগুলো চাহিদা মোতাবেক কাজ করছে কিনা তা নিশ্চিত করা হয় । এজন্য বিভিন্ন ধরনের টেস্ট করা হয়ে থাকে। এসব টেস্ট গুলো প্রথমে থেকে শেষ পর্যন্ত সকল ধাপে করা যেতে পারে।  &lt;/p&gt;

&lt;p&gt;প্রাথমিক ভাবে সব টেস্ট গুলো সিমুলেটেড ডাটা দিয়ে করা হয়ে থাকে। পরবর্তীতে বেটা টেস্টিং এর জন্য দেওয়া হয়। তবে এসব টেস্ট গুলো বড় সিস্টেমের সিংগেল ইউনিট হিসেবে একবারে টেস্ট না করে, কম্পোনেন্ট আকারে টেস্ট করা শ্রেয়। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8vp9sx4q07zr67mkj4u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8vp9sx4q07zr67mkj4u.jpg" alt="Software Validation" width="758" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component testing: এই ধাপে প্রতিটি কম্পোনেন্টকে আলাদা আলাদা ভাবে টেস্ট করা হয়। এসব কম্পোনেন্ট গুলো ছোট ফাংশন ক্লাস ইত্যাদি হতে পারে।  তবে এসব ছোট  অনেকগুলো কম্পোনেন্ট একসাথে একটা কম্পোনেন্ট হতে পারে।&lt;/li&gt;
&lt;li&gt;System testing: এই ধাপে পুরা সিস্টেম কে এক সাথে টেস্ট করা হয়। এখানে সব কিছু হাইলেভেল এ থাকে। সিস্টেমে requirement অনুযায়ী ইনপুটের বিপরীতে সঠিক আউটপুট আসছে কিনা তা টেস্ট করা হয়। এখানে internal coding বা এর implementation নিয়ে কোন কিছু করা হয় না। ইনপুটের বিপরীতে সঠিক আউটপুট নিশ্চিত করে।&lt;/li&gt;
&lt;li&gt;Customer testing: Customer testing অনেক সময় বেটা টেস্টিংও বলা হয়ে থাকে। এই টেস্টিং কিছু সম্ভাব্য ব্যবহার কারীকে সফটওয়্যার এর আক্সেস দেওয়া হয় এবং তারা ব্যবহার করে তাদের ফিডব্যাক দিয়ে থাকে। বেশিরভাগ ক্ষেত্রেই সিমুলেটেড ডাটা দিয়ে  টেস্ট করা কম্পোনেন্ট বা সিস্টেম, বাস্তবিক ভাবে ব্যবহারের ক্ষেত্রে অনেক ইসু  দেখা যেতে পারে । এজন্য রিয়েল ডাটা দ্বারা টেস্টিং করা প্রয়োজন।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এসব স্টেজে বিভিন্ন ধরনের বাগ দেখা দিতে পারে। এসব বাগ গুলো ডিবাগ করা দরকার। এর জন্য আলাদা স্টেজ এর প্রয়োজন হতে পারে। &lt;/p&gt;

&lt;p&gt;কম্পোনেন্ট টেস্টিং এর ক্ষেত্রে বেশিরভাগ সময় প্রোগ্রামার নিজেই টেস্ট কেস গুলো লিখে। কারন সেই কম্পোনেন্ট সম্পর্কে সব থেকে বেশি জ্ঞান রাখে। Test Driven Development এর ক্ষেত্রে প্রথমে টেস্ট কেস গুলো লেখা হয় এবং পরবর্তীতে টা ইমপ্লিমেন্ট করা হয়। &lt;/p&gt;

&lt;h3&gt;
  
  
  Testing in Plan Driven Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyraeka49o8lenqtvci7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyraeka49o8lenqtvci7.jpg" alt="Plan Driven Architecture" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PDA -এ কিছু নির্দিষ্ট প্লানের উপর নির্ভর করে সাম্নের দিকে আগ্রসর হয়। এখানে টেস্টিং এর জন্য একটা টিম থাকে যেখানে তার শুধু টেস্ট নিয়ে কাজ করে। উপরে চিত্রে দেখলেই বোঝা যাবে, এখানে প্রতিটি ধাপে টেস্টিং করা হয়ে থাকে। &lt;/p&gt;

&lt;h2&gt;
  
  
  Software Evolution
&lt;/h2&gt;

&lt;p&gt;কোন একটা হার্ডওয়্যার প্রোডাক্ট একবারে তৈরি করা হয়ে গেলে সেখানে নতুন কোন পরিবর্তন করতে গেলে অতিরিক্ত মাত্রায় খরচ করতে হয়। কিন্তু সফটওয়্যার এর ক্ষেত্রে সেটা হয় না।  সফটওয়্যার এর কোন কিছু পরিবর্তন করতে চাইলে অথবা নতুন ফিচার যুক্ত করতে চাইলে খুব বেশি খরচ করতে হয় না। হার্ডওয়্যার এর তুলনায় অনেক কম। এই জন্য একটা সফটওয়্যার সময়ের সাথে সাথে এর গ্রোথ বৃদ্ধি পায়। প্রাথমিক পর্যায় যা ছিল তার তুলনায় অনেক বেশি ফিচার সমৃদ্ধ হয়ে যায়। এভাবেই সফটওয়্যার evolve হতে থাকে। &lt;/p&gt;

&lt;p&gt;Software Evolution কে maintenance এর সাথে তুলনা করা যেতে পারে।  maintenance-এ মুলত ডিবাগিং করা হয়ে থাকে। বাগ ফিক্সিং এবং নতুন ফিচারের এর জন্যই সফটওয়্যার evolve হতে থাকে। &lt;/p&gt;

&lt;h2&gt;
  
  
  Coping with change
&lt;/h2&gt;

&lt;p&gt;একটা বড় সফটওয়্যার প্রোজেক্ট-এ পরিবর্তন অনিবার্য। বিভিন কারনে সফটওয়্যার এর requirements পরিবর্তন হতে পারে। নতুন নতুন টেকনলজি তৈরি হচ্ছে এক্ষেত্রে নতুন পদ্ধতিতে সফটওয়্যার তৈরির করা হচ্ছে। নতুন পরিবর্তন সফটওয়্যার এর খরচ বৃদ্ধি করে কারন যে কাজ করা হয়ে গেছে সে কাজ আবার করতে হবে।&lt;/p&gt;

&lt;p&gt;দুইটা পদ্ধতিতে এই খরচ কমানো সম্ভব। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change anticipation: এই পদ্ধতিতে সফটওয়্যার এর  ভবিষ্যতের কথা চিন্তা ভাবনা করা হয়। একটা সফটওয়্যার-এ এমন অনেক ফিচার থাকতে পারে, যে গুলো নিকট ভবিষ্যতে অযৌক্তিক হয়ে যেতে পারে। এই ধরনের সমস্যা এড়াতে, প্রথমে একটা প্রোটোটাইপ তৈরি করা যেতে পারে, যেখানে কিছু প্রধান প্রধান ফিচার থাকবে। এবার কাষ্টমার  এটা টেস্টিং করার পর তার requirements পরিবর্তন করতে পারেন। এক্ষেত্রে প্রডাকশন খরচ কমে যাবে।&lt;/li&gt;
&lt;li&gt;Change tolerance:  সফটওয়্যার কে এমন ডিজাইন করতে হবে যেন খুব সহজেই এখানে পরিবর্তন করা যায়। এক্ষেত্রে Incremental Development পদ্ধতি অনুসরন করা হয়। নতুন পরিবর্তন বা আপডেট একটা increment হিসেবে অ্যাড করে দিলেই সফটওয়্যার প্রস্তুত।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এই পরিবর্তন কে মোকাবেলা অনেক ভাবেই করা যেতে পারে তবে এখানে ২ টা পদ্ধতি নিয়ে আলোচনা করা হবে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System Prototyping: এখানে সম্পূর্ন সিস্টেম তৈরি করার পূর্বে মুল ফিচারগুলো নিয়ে অল্প সময়ের মধ্যে একটা সিস্টেম তৈরি করা এবং কাস্টমার ফিডব্যাক প্রদান করে। এখানে requirements পরিবর্তন হতে পারে।&lt;/li&gt;
&lt;li&gt;Incremental delivery: এই পদ্ধতিতে সিস্টেম কে এমন ভাবে ডিজাইন করা হয় যাতে, খুব সহজেই পরিবর্তন বা পরিবর্ধন করা যায়। সফটওয়্যার তৈরি হওয়ার পর কোন পরিবর্তন আসলে সেখানে একটা নতুন একটা increment করলেই হয়ে যাবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prototyping
&lt;/h2&gt;

&lt;p&gt;Prototype হলো একটা সফটওয়্যার এর প্রাথমিক ভার্সন , যা ব্যবহার করা হয় সফটওয়্যারকে উপস্থাপন করতে, বিভিন্ন ডিজাইন try করতে এবং কোন সমস্যা থাকলে সেগুলো খুজে বের করে তার সম্ভাব্য সলুশন বের করার কাজে। &lt;/p&gt;

&lt;p&gt;Prototype development এর জন্য development চলমান হতে হবে এই জন্য প্রতিনিয়ত development এর কাজ করতে হবে। নতুন নতুন ফিচার যুক্ত করতে হবে (অবশ্যই requirements অনুযায়ী প্রধান ফিচার গুলো)। এই Prototype একজন সম্ভাব্য ইউজারকে তার কাজে সাহয্য করবে। এখন তিনি যখন ব্যবহার করবেন তখন তার মাধায় নতুন নতুন requirement এর সৃষ্টি হতে পারে, যেগুলো অ্যাড করা প্রয়োজন। ব্যবহার করা ক্ষেত্রে অনেক এরর দেখা দিতে পারে যেটা requirement এ থেকে বাদ পড়ে গেছিলো।   &lt;/p&gt;

&lt;p&gt;একটা Prototype , প্রস্তাবিত ডিজাইন এর ফিসিবিলিটি টেস্টিং এর জন্য ব্যবহার করা যেতে পারে। উদারহর হিসবে, একটা সিস্টেম একসাথে একই সময়ে কত গুলো ইউজার এর request এর হ্যান্ডেল করতে সক্ষম তা চেক করা যেতে পারে।  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F764djnbp3qxclavyxs6p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F764djnbp3qxclavyxs6p.jpg" alt="Prototyping Development" width="792" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prototype Development&lt;/p&gt;

&lt;p&gt;Prototype ডিজাইন করা শুরুতে এর উদ্দেশ্য ঠিক করতে হবে। এই উদ্দেশ্য হতে পারে , সফটওয়্যার এর ইন্টারফেস ডিজাইন, বিভিন্ন ভ্যালিডেশন চেক অথবফিসিবিলিটি টেস্টিং ইত্যাদি হতে পারে। একটা Prototype সকল উদ্দেশ্য পূরন করতে সক্ষম নয়। এই জন্য অনেক সময় ইউজার ভুল বুঝে থাকে। আসলে &lt;/p&gt;

&lt;p&gt;Prototype এর উদ্দেশ্যই হলো মুল ফিচার গুলো নিয়ে একটা সিস্টেম বানানো। এখানে non-functional (response time, memory utilization etc) বিষয়গুলো ইচ্ছাকৃত ভাবে ইগনোর করা হয়ে থাকে।  এখানে অনেক সময় এরর গুলো সঠিক হ্যান্ডেল নাও করা হতে পারে। এই সব কারনে সিস্টেম এর নির্ভরযোগ্যতা এবং মান কমে যেতে পারে। &lt;/p&gt;

&lt;p&gt;সবশেষে Prototype তৈরি করা হয়ে গেলে , ইউজার এর ট্রেনিং এবং Prototype এর উদ্দেশ্যগুলো পূরন করার জন্য এই Prototype কে evaluate করা হয়। এক্ষেত্রে এসব ইউজারদের একটু সময় লেগে যায়। নতুন সিস্টেম ব্যবহার করতে সময় লাগাটায় স্বাভাবিক। তবে একবার সিস্টেম ব্যবহার এ comfortable হয়ে গেলে তখন তারা নতুন নতুন requirement আবিষ্কার করতে পারে। &lt;/p&gt;

&lt;p&gt;তবে এখানে সমস্যা আছে, এই সব ইউজার ফাইনাল সিস্টেম কে যেভাবে ব্যবহার করতে চাই, সেভাবে এই Prototype কে সেইভাবে ব্যবহার নাও করতে পারে। এর কারন হতে পারে, slow response, slow processing, lots of errors ইত্যাদি।&lt;/p&gt;

&lt;h2&gt;
  
  
  Incremental Delivery
&lt;/h2&gt;

&lt;p&gt;Incremental Delivery হলো এমন একটা পদ্ধতি যেখানে requirements গুলোকে অনেক গুলো ভাগে ভাগ করা হয়ে থাকে। এর ভিতরে কিছু ডেভোলোপ করা ভাগগুলো কাস্টমারের কাছে ডেলিভারি করা হয়েছে এবং তার মেশিনে ডেপলয় করা হয়েছে। এই ভাগ কিভাবে করা হবে, কোনটা আগে কোনটা পরে সেটা কাস্টমার ঠিক করে দেন। সবোর্চ প্রাইরিটির কাজগুলো আগে করা হয়। &lt;/p&gt;

&lt;p&gt;যখন এসব কাজ গুলো হয়ে যায় , তখন প্রথম increment, ডেভোলোপ করা হয়ে গেছে তখন এই সিস্টেম ব্যবহার করা জন্য প্রস্তু হয়ে গেছে। তবে ডেভোলোপ করার সময় অনেক নতুন নতুন requirement এর দেখা দিতে পারে। এসব requirement গুলো প্রাইরিটি দিয়ে ডেভোলোপ করা হয়ে থাকে। &lt;/p&gt;

&lt;p&gt;এবার সিস্টেম কে কাস্টমারে কম্পিউটারে রান করা জন্য প্রস্তুত। এখন কাস্টমার ব্যবহার করে দেখবে তার চাহিদা মোতাবেক কাজ হচ্ছে কিনা অথবা নতুন কোন ফিচার যুক্ত করা লাগবে কিনা। এখানে কাস্টমার সম্পূর্ণ সিস্টেমকে মূল্যায়ন করবেন এবং তিনি ফিডব্যাক দিবেন। &lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;p&gt;Incremental Delivery এর কিছু সুবিধা আছে। যেমনঃ &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রথম Increment হওয়ার পরপর কাস্টমার সফটওয়্যার ব্যবহার করতে পারে এবং তার মতামত দিতে পারে। এটা Prototype এর সম্পূর্ণ বিপরীত। এই Increment গুলো মূলত সিস্টেমের অংশ। একবার শুরু থেকে শুরু করার প্রয়োজন হয় না।&lt;/li&gt;
&lt;li&gt;কাস্টমার কে সিস্টেম সম্পূর্ণ রেডি হওয়া পর্যন্ত অপেক্ষা করার প্রয়োজন হয় না। প্রথম Increment-এ প্রধান প্রধান ফিচার গুলো থাকে। এজন্য তৎক্ষণাৎ এই সিস্টেম ব্যবহার করা যায়।&lt;/li&gt;
&lt;li&gt;যেহেতে সবোর্চ প্রাইরিটি সার্ভিস গুলো আগে আগেই ডেলিভারি করা হয়। এইজন্য এইসমস্ত সার্ভিস গুলো সব থেকে বেশি টেস্ট করা হয়ে থাকে। এক্ষেত্রে এরর বা বাগ এর পরিমান তুলনা মূলক ভাবে অনেক কমে যায়। অনেক ক্ষেত্রে থাকেই না।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages
&lt;/h3&gt;

&lt;p&gt;Incremental Delivery এর কিছু অসুবিধা রয়েছে। যেমনঃ &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;এই ধরনের পদ্ধতি নতুন সিস্টেম এর জন্য সব থেকে উপযুক্ত। যখন কোন বিদ্যামান সিস্টেমকে নতুন সিস্টেম দ্বারা replace করা জন্য এই পদ্ধতি ব্যবহৃত হয় তখন সমস্যার সৃষ্টি হয়। বিদ্যামান সিস্টেম অনেক ইউজার থাকে যার অনেকগুলো ফিচার ব্যবহার করে অভ্যস্ত। এখন  হটাত করে যদি এসব ফিচার না থাকে অথবা ইউজার আক্সেস  করতে না পারে তখন এসব ইউজার উক্ত সিস্টেম ব্যবহার করা বন্ধ করে দিতে পারে।&lt;/li&gt;
&lt;li&gt;বেশির সিস্টেমেই কিছু বেসিক কিছু ফিচার থাকে যেগুলো প্রায় সব জায়গায় ব্যবহার করা হয়ে থাকে। এখন এই পদ্ধতিতে অনেক ডিটেলস এ থাকে না। সেক্ষেত্রে এই বেসিক ফিচার গুলো খুজে বের করা কষ্টকর হতে পারে। আবার অনেক ক্ষেত্রে একই কোড বার বার লেখার প্রয়োজন হতে পারে।&lt;/li&gt;
&lt;li&gt;এখানে যেহেতু প্রতিনিয়তই ডেলিভারি করা হয়ে থাকে এবং এসব ডেলিভারির ফিডব্যাক গ্রহন করে সেখানে কাজ করা হয়। সেহেতু এখানে নো নির্দিষ্ট requirement থাকে না। এসব ক্ষেত্রে কাস্টমার এবং কম্পানির এর মধ্যে চুক্তি সংক্রান্ত বিভিন্ন সমস্যার সৃষ্টি হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ending
&lt;/h3&gt;

&lt;p&gt;Incremental Delivery পদ্ধতি ,  বড় এবং জটিল সিস্টেমের জন্য সেরা পদ্ধতি নয়। মুলত এসব বড় সিস্টেম অনেক টিম একসাথে কাজ করে থাকে, এক্ষেত্রে অনিইচ্ছাকৃত ভাবে অনেক সমস্যার সৃষ্টি হতে পারে।  &lt;/p&gt;

&lt;p&gt;চুক্তি করার ক্ষেত্রে, প্রথমে একটা prototype ডিজাইন করে সেটার উপর বেজ করে একটা requirement specification এর ঠিক করে তার উপর বেজ করা চুক্তি সম্পন্ন করা যেতে পারে। নতুন কোন requirement আসলে সেটা পরবর্তী ফেজের জন্য রেখে দেওয়া যেতে পারে এবং পরবর্তী ফেজ একই ভাবে হ্যান্ডেল করা যেতে পারে &lt;/p&gt;

&lt;h2&gt;
  
  
  Process Improvement
&lt;/h2&gt;

&lt;p&gt;Process Improvement এর মানে বিদ্যমান প্রসেস কে বোঝা এবং এসব প্রসেস পরিবর্তন করা যাতে প্রডাক্ট এর মান, খরচ এবং সময় কমে যায়। &lt;/p&gt;

&lt;p&gt;দুই ধরনের পদ্ধতি ব্যবহার করা যেতে পারে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The process maturity: এই পদ্ধতিতে প্রসেস এবং প্রজেক্ট ম্যানেজমেন্ট এর উপর ফোকাস করা হয় এবং নতুন নতুন  ইঞ্জিনিয়ারিং নিয়ম প্রয়োগ করা হয়। এই পদ্ধতির প্রধান উদ্দেশ্য হচ্ছে,  প্রোডাক্ট এর মান বাড়ানো।&lt;/li&gt;
&lt;li&gt;The agile: এই পদ্ধতি মুলো ফোকাস করে প্রতিনিয়ত ডেভোলেপমেন্ট এর কাজ করে যাওয়া এবং প্রসেস এর অভারহেড কমিয়ে আনা। পরবর্তীতে এ নিয়ে বিস্তারিত আলোচনা হবে।&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>swe</category>
      <category>softwareengineering</category>
      <category>model</category>
    </item>
    <item>
      <title>What is Software Engineering?</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Sat, 26 Apr 2025 16:19:45 +0000</pubDate>
      <link>https://forem.com/mislam-dev/what-is-software-engineering-25ij</link>
      <guid>https://forem.com/mislam-dev/what-is-software-engineering-25ij</guid>
      <description>&lt;p&gt;অনেক দিন আগে (আনুমানিক ২ বছর) আমি নিজের স্কিল বাড়ানোর জন্য একটা সফটওয়্যার (ওয়েব অ্যাপ্লিকেশান) বানায়। মোটামুটি সবকিছু ঠিক ঠাকই ছিল। ওইসময় সব কিছুই যেমন টা চেয়েছিলাম তেমনই টায় হয়েছিল। ওই অবস্থায় কোড যা আছে সব গিটহাবে রেখে দিয়েছিলাম। এখনো আছে।&lt;/p&gt;

&lt;p&gt;এখন মনে হল , অনেক দিন তো হল, অ্যাপ তো বানিয়েছি এখন কিছু নতুন ফিচার অ্যাড করা জরুরি। আর প্যাকেজ গুলো আপডেটও করা দরকার। কবে প্যাকেজ গুলো deprecated করে দিবে কে জানে।&lt;/p&gt;

&lt;p&gt;গিটহাবে রিপো ওপেন করলাম। ক্লোন করলাম । ক্লোন করার পর , প্রজেক্ট সেটাপ করতে যেয়ে পড়া এক মহাবিপদ।&lt;/p&gt;

&lt;p&gt;প্রোজেক্ট সেটআপ এর জন্য ডকুমেন্টেশন নেই। এই প্রজেক্ট কিভাবে রান করতে হবে তার কোন গাইড লাইন নেই। প্রয়োজনীয় বিভিন্ন এনভায়রনমেন্ট ভ্যারিবল কি কি সেটা করা লাগবে তাও নেই।&lt;/p&gt;

&lt;p&gt;এই অবস্থায় একটু কষ্ট করে সব কিছু সেটাপ করলাম। এখানে আমার প্রায় ১ঘন্টা সময় চলে গেল। যাক বাবা , ভালো ভাবে প্রজেক্ট রান করা গেছে। খুবই ভালো কথা। এবার তাহলে ফিচার অ্যাড করার কথা চিন্তা করা যায়।&lt;/p&gt;

&lt;p&gt;কিন্তু যেই ফিচার অ্যাড করার জন্য কোড ওপেন করলাম। আবার পড়লাম আরেক বিপদে । বিপদটা হচ্ছে কোন ফাইল কোথায় রাখা আছে কিছুই তো জানি না। সব ভুলে গেছি। কি আর করা ফিচার তো অ্যাড করা লাগবে কিছু তো করার নেই। যাই হোক, লেগে পড়লাম ফাইল এক্সপ্লোর করতে। যেহেতু কোড আমি নিজেই করেছিলাম এই জন্য বেশি সময় লাগলো না। বেশি না, এই ৩০ মিনিট মত সময় লেগে গেল। এখন কোড গুলো মোটামুটি মাথায় ধরছে। সহজ কোথায় কোন জিনিস রাখা আছে সেগুলো মাথায় চলে আসছে।&lt;/p&gt;

&lt;p&gt;তাহলে সব কিছু রেডি হয়ে গেছে। এখন ফিচার অ্যাড করার পালা। লেগে পড়লাম কাছে। দীর্ঘ ৪ ঘন্টা করার পর একটা ছোট ফিচার অ্যাড করলাম। গিটহাবে পুশ করলাম। সার্ভারে আপলোড করলাম সেখানে আরো ১ ঘন্টা লেগে গেল। সব কিছু ঠিকঠাক। যাক হাফ ছেড়ে বাচলাম।&lt;/p&gt;

&lt;p&gt;এখানে অনেক গুলো বিষয় আছে যেগুলো না করার কারনে আমার অযথা প্রায় ৩-৪ ঘন্টা সময় নষ্ট হয়ে গেছে। তবে দুই বিষয় অতীব জরুরি।&lt;/p&gt;

&lt;p&gt;প্রথমত, একটা পরিপূর্ণ ডকুমেন্টেশন থাকা প্রয়োজন ছিল।&lt;/p&gt;

&lt;p&gt;দ্বিতীয়ত , রিপিটিভ কাজ গুলো অটোমেট করার প্রয়োজন ছিল।&lt;/p&gt;

&lt;p&gt;এছাড়া খুটিয়ে দেখলে অনেক প্রবলেম সামনে আসবে।&lt;/p&gt;

&lt;p&gt;এখন প্রশ্ন হছে, এত ফাউ তো বকচি, এর সাথে সফটওয়্যার ইঞ্জিনিয়ারিং এর সম্পর্ক কি?&lt;/p&gt;

&lt;p&gt;সম্পর্ক আছে, অবশই আছে।&lt;/p&gt;

&lt;h2&gt;
  
  
  What is software?
&lt;/h2&gt;

&lt;p&gt;সফটওয়্যার ইঞ্জিনিয়ারিং জানার আগে সফটওয়্যার সর্ম্পর্কে জানা তো প্রয়োজন,&lt;/p&gt;

&lt;p&gt;সহজভাবে বললে , সফটওয়্যার হল একটু নির্দেশনা বা প্রোগ্রাম যা কম্পিউটারকে নির্দিষ্ট কার্য সম্পাদনের জন্য নির্দেশ করে এবং সমস্যা সমাধান করে থাকে।&lt;/p&gt;

&lt;p&gt;সফটওয়্যার মুলত দুই ধরনেরঃ&lt;/p&gt;

&lt;p&gt;১। জেনেরিক্স সফটওয়্যারঃ এই ধরনের সফটওয়্যার গুলো মুলত বিভিন্ন কোম্পানি বা প্রতিষ্ঠান ডেভোলোপ করে করে থাকে এবং সাধারন ব্যবহারকারীরা সেগুলো ব্যবহার করে। উদাহরনস্বরুপঃ MS Office, Google Chrome, VS Code ইত্যাদি। এখানে মূল বিষয় হচ্ছে কোম্পানি তাদের মত করে বিভিন্ন ফিচার অ্যাড করে থাকে।&lt;/p&gt;

&lt;p&gt;২। কাস্টমাইজড সফটওয়্যারঃ এটা জেনেরিক্স এর সম্পূর্ন উলটা। এই সফটওয়্যার গুলো ব্যবহার কারীর (ক্লায়েন্ট) প্রয়োজন অনুসারে তৈরী করা হয়।&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Software Engineering?
&lt;/h2&gt;

&lt;p&gt;আমাদের দেশে অনেকেই মনে করে কম্পিউটার সায়েন্স এবং সফটওয়্যার ইঞ্জিনিয়ারিং একই জিনিস। কিন্তু মজার বিষয় হচ্ছে, দুইটা জিনিস একই রকম মনে হলেও এদের মধ্যে রয়েছে আকাশ পাতাল পার্থক্য।&lt;/p&gt;

&lt;p&gt;সফটওয়্যার ইঞ্জিনিয়ারিং হলো একটা ইঞ্জিনিয়ারিং ডিসিপ্লিন যেটা একটা সফটওয়্যার তৈরি থেকে শুরু করে এটা ব্যবহারকারীর কাছে পৌছানোর পরে তা মেইনটেইন করা পর্যন্ত সকল বিষয় গুলো কে ডিল করে।&lt;/p&gt;

&lt;p&gt;এখানে দুইটা বিষয় উল্লেখ্য&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;প্রথমত, ইঞ্জিনিয়ারিং ডিসিপ্লিন , ইঞ্জিনিয়াররা বিভিন্ন থিওরি , পদ্ধতির মাধ্যমে কার্য সম্পাদন করে থাকে। তারা চেষ্টা করে সব থেকে সেরা (যেটা ইঞ্জিনিয়ারিং জন্য অধিক গ্রহনযোগ্য) পদ্ধতি টা নির্বাচন করতে। অনেক সময় সমস্যা সমাধানের জন্য নতুন পদ্ধতি এক্সপ্লোর করার প্রয়োজন হয়। তবে তারা বিভিন্ন বাধ্যবাধকতার ভিতরে কাজ করে থাকে। এক্ষেতে তারা বাজেট এবং সময় কে মূল্যায়ন করে থাকে।&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;দ্বিতীয়ত, সসফটওয়্যার সকল বিষয়, সফটওয়্যার ইঞ্জিনিয়ারিং শুধুমাত্র প্রোগ্রামিং নিয়ে ডিল করে না। প্রজেক্ট ম্যানেজমেন্ট, পদ্ধতি, থিওরিস, বিভিন্ন টুল কিভাবে ব্যবহার করা যায়, প্রোজেক্ট প্লানিং ইত্যাদি বিষয় গুলো ডিল করে।&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;সফটওয়্যার ইঞ্জিনিয়ারিং মুলত পেশাগত সফটওয়্যার কে সাপোর্ট করার জন্য। কোন ব্যক্তিগত প্রোগ্রার কে সাপোর্ট করার জন্য এটা না। তবে একজন চাইলে সফটওয়্যার ইঞ্জিনিয়ারিং কে নিজের জন্য ব্যবহার করতেই পারেন।&lt;/p&gt;

&lt;p&gt;প্রোজেক্ট ম্যানেজমেন্ট এর মধ্যে একটা গুরুত্ব পূর্ণ বিষয় হচ্ছে প্রোজেক্ট এর ডকুমেন্টশন তৈরি করা। আমার ওই প্রজেক্ট কি কোন ডকুমেন্টশন ছিল? ছিল না। যার কারনে অনেকটা সময় লাগিয়ে প্রোজেক্ট সেটআপ করতে হয়েছে। আবার একই কারনে ফোল্ডার এবং ফাইল ওপেন করে ফাইল স্ট্রাকচার বুঝতে হয়েছে। এর পরে কোড পুশ করার পর মানুয়ালি কোড সার্ভারে পুশ করতে হয়েছে।&lt;/p&gt;

&lt;p&gt;আমি একজন ব্যক্তি এই কাজ করছি খুব বেশি প্রবলেম হচ্ছে না। কিন্তু একবার ভাবুন তো। এই প্রোজেক্ট এ ১০-১২ জন কাজ করছে। তখন বিষয়টা কেমন হবে। প্রতিবার যদি তাদের প্রজেক্ট সেটাপ করা লাগে তাহলে কতটা সময় নষ্টা হবে। সফটওয়্যার ইঞ্জিনিয়ারিং একটা গুরুত্বপূর্ণ বিষয় হলো বাজেট এবং সময়ের মাধ্যমে গুনমত মান সম্পন্ন সফটওয়্যার ডেলিভারি করা। এখন প্রজেক্টা সেটাপ থেকে শুরু করে ফিচার অ্যাড সহ সার্ভারে পুশ করা পর্যন্ত কতটা টা সময় নষ্ট হচ্ছে একবার চিন্তা করুন।&lt;/p&gt;

&lt;p&gt;এখানে সমাধান হচ্ছে, প্রোজেক্ট এর জন্য একটা প্রোপার ডকুমেন্টশন তৈরি করা। রিপিটেটিভ কাজ গুলো অটোমেট করা।&lt;/p&gt;

&lt;h2&gt;
  
  
  Why software engineering is important?
&lt;/h2&gt;

&lt;p&gt;একটা জিনিস , আমি তো আমার অ্যাপের নতুন ফিচার সার্ভারে পুশ করে দিয়েছে তার খবর নিবেন না? তার খবর খুবই খারাপ , অ্যাপ ক্রাশ করেছে। বিষয়টা একটা খতিয়ে দেখলাম, দেখে যা বুঝলাম তা হচ্ছে , নতুন কোড পুশ করার কারনে সিস্টেম এর রিসোর্স অধিকমাত্রায় ব্যবহৃত হচ্ছে। অন্য ব্যবহারকারীরা রিকুয়েষ্ট করলেই ক্রাশ করছে। বিষয় নিয়ে একটু ঘাটাঘাটি করলাম। করার পরে যা বুঝলাম তাতে আমার মাথায় হাত। আমি কোন রুলস ফলো করিনি, কোন ডিজাইন প্যাটার্ন ব্যবহার করি নি, ব্যাকএন্ডে কুয়েরি অপ্টিমাইজ করিনি, কোন ক্যাশ ব্যবহার করিনি, কোন CDN ব্যবহার করিনি নি। ফ্রন্টএন্ডেও একই অবস্থা।&lt;/p&gt;

&lt;p&gt;এখন এই রকম অবস্থায় আমার অ্যাপস ইউজার রা কি আর ব্যবহার করবে? এখানে তাদের বিশ্বাস নষ্ট হবে। আমার অ্যাপ এর নির্ভরযোগ্য তা কমে যাবে। এই অবস্থায় আমার কাছে দুই টা অপশন খোলা আছে।&lt;/p&gt;

&lt;p&gt;প্রথম, সার্ভারে রিসোর্স এর পরিমান বৃদ্ধি করা&lt;br&gt;
দ্বিতীয়, কোড অপটিমাইজ করা&lt;/p&gt;

&lt;p&gt;আমার কি করা উচিত?&lt;/p&gt;

&lt;p&gt;এখানে আমি যদি লম্বা সময়ের কথা চিন্তা করি তাহলে ভবিষ্যতে এই প্রোজেক্ট একটা মেইনটেইন করা সম্ভব না। সেজন্য অনেক লোক দরকার হবে। এই দিকে থেকে চিন্তা করলে আমার কোড অপ্টিমাইজ করা টা ভালো অপশন হবে। সব থিওরি ও মেথড ফলো করে যদি সিস্টেম টা ঠিক করতে পারি তাহলে, লম্বা সময়ের জন্য এই রকম মেজর কোন সমস্যা সৃষ্টির সম্ভাবনা কমে যাবে । আবার খরচ ও তুলনামূলক ভাবে কমে আসবে।&lt;/p&gt;

&lt;p&gt;সফটওয়্যার ইঞ্জিনিয়ারিং মুলত এই দুইটা কারনের জন্যই গুরুত্বপূর্ণ।&lt;/p&gt;

&lt;p&gt;১। বাজেট এবং সময়ের মধ্যে নির্ভরযোগ্য ও বিশ্বাস যোগ্য সিস্টেম তৈরি করতে হয়। এর জন্য সফটওয়্যার ইঞ্জিনিয়ারিংর মেথড গুলো অত্যাবশ্যকীয়।&lt;/p&gt;

&lt;p&gt;২। যখন লম্বা সময়ের কথা চিন্তা করে সিস্টেম তৈরি করা হয়, সেক্ষেত্রে সফটওয়্যার ইঞ্জিনিয়ারিং এর মেথড খুব গুলো কাজে লাগে। মুলত সফটওয়্যার ইঞ্জিনিয়ারিং কারনে তুলনা মুলক ভাবে খরচ অনেক কমে যায়।&lt;/p&gt;

&lt;p&gt;তবে এখানে মনে রাখার বিষয় হচ্ছে সফটওয়্যার ইঞ্জিনিয়ারিং কোন ব্যক্তিগত কোন প্রোজেক্ট বা প্রোগ্রামিং এর জন্য একদম না।&lt;/p&gt;

&lt;p&gt;Fundamental to apply all systems&lt;br&gt;
যেহেতু সফটওয়্যার ইঞ্জিনিয়ারিং কোন ব্যক্তিগত প্রোগ্রামিং এর জন্য না। সেহেতু যারা এর পদ্ধতি গুলো ব্যবহার করবে তাদের বেশির ভাগ হবে টিম, গ্রুপ অথবা কোন প্রতিষ্ঠান।&lt;/p&gt;

&lt;p&gt;এখন তারা (এই সব গ্রুপ ) যদি কোন সফটওয়্যার তৈরি করে সেক্ষেত্রে কিছু জিনিস ব্যবহার করতে পারে।&lt;/p&gt;

&lt;p&gt;১। তাদের উচিত হবে একটা বোধ্যগম্য এবং সহজে ম্যানেজ করা যায় এমন প্রসেস এর মধ্য দিয়ে সসফটওয়্যার তৈরির কাজ গুলো সম্পন্ন করা। তাদের উচিত হবে সফটওয়্যার তৈরি জন্য একটা সুন্দর প্লান তৈরি করা। প্লান টা কার্যকর করতে হলে অবশ্যই সফটওয়্যারটি কম্পিলিট হলে কেমন হবে তা সম্পর্কে একটা পরিষ্কার ধারনা থাকতে হবে। তবে ক্ষেত্র বিশেষে প্রসেস ভিন্ন ভিন্ন হতে পারে।&lt;/p&gt;

&lt;p&gt;২। সফটওয়্যার কোন রকম কোন প্রবলেম অথবা ফেইলর ছাড়া কাঙ্ক্ষিত ফলাফল প্রদান করে এটা নিশ্চিত করা । সাথে সাথে যখন প্রয়োজন তখন যেন available থাকে সেটা নিশ্চিত করা।&lt;/p&gt;

&lt;p&gt;৩। Software Specification and Requirements এ জানতে হবে যে গ্রাহক এই সফটওয়্যার থেকে কি চাই এবং তার এই চাহিদা গুলো ম্যানেজ করতে হবে। কোনটা সম্ভব ,কোনটা সম্ভব না , কতদিন লাগবে, কেমন খরচ হবে , ইত্যাদি বিষয়গুলো ম্যানেজ করা।&lt;/p&gt;

&lt;p&gt;৪। রিসোর্স যা আছে , সেগুলো সর্বোচ্চ (যত টুকু সম্ভব) ব্যবহার করতে হবে। যে সফটওয়্যার অলরেডি তৈরি করা আছে, সে গুলো নতুন করে তৈরি না করে পূনব্যবহার করা। এতে রিসোর্স এর সুষ্ঠ ব্যবহার করা সম্ভব হবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  Software engineering Ethics
&lt;/h2&gt;

&lt;p&gt;Software engineering একটি সম্মানীয় এবং মর্যাদা সম্পন্ন পেশা। তাই এই সম্মান এবং মর্যাদা রক্ষার স্বার্থে একজন software engineer কে নীতি নৈতিকতা মেনে দৈনন্দিন কার্যক্রম চালিয়ে যেতে যায়। software engineer এর জন্য কিছু নীতি নৈতিকতা রয়েছে। তন্মধ্যে&lt;/p&gt;

&lt;p&gt;১। গোপনীয়তা রক্ষা করাঃ আপনার কখনো উচিত হবে না, আপনার কম্পানি এবং কম্পানির ক্লায়েন্ট সম্পর্কে তথ্য ফাস করা।&lt;/p&gt;

&lt;p&gt;২। যোগ্যতা বাইরে কাজ না করাঃ আপনি যে জিনিস পারেন না বা বোঝেন না, সেই জিনিস কাজ জেনে বুঝে করা কখনোই উচিত না। এক্ষেত্রে আপারকতা স্বিকার করা করা উচিত। তাদের বলা উচিত , এটা আমার জ্ঞানের বাইরে।&lt;/p&gt;

&lt;p&gt;৩। intellectual property rights: আপনার উচিত intellectual property rights এর বিষয়ে স্থানীয় সরকারে কি ধরনের আইন কানুন বিদ্যমান রয়েছে এবং আপনার কোম্পানির এসব intellectual property rights এর ব্যাপারে সর্তক থাকা।&lt;/p&gt;

&lt;p&gt;৪। কম্পিউটারের অপব্যবহারঃ অন্যের কম্পিউটারকে আপ্রাসঙ্গিক কাজে(গেম খেলা) ব্যবহার করা থেকে বিরত থাকা।&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Marking Grading System with if-else-elif Part-09</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Fri, 06 Sep 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/marking-grading-system-with-if-else-elif-part-09-5g6j</link>
      <guid>https://forem.com/mislam-dev/marking-grading-system-with-if-else-elif-part-09-5g6j</guid>
      <description>&lt;p&gt;আগের পার্টে একটা কাজ করতে দিয়েছিলাম। যারা করেছেন তাদেরকে ধন্যবাদ। &lt;/p&gt;

&lt;p&gt;আর যারা করতে পারেন নি অথবা কোথাও বুঝতে সমস্যা আছে তার এই পার্ট টা স্কিপ করতে পারেন। &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;`Marking&lt;/strong&gt; Grading System&lt;code&gt; সিস্টেম বানাতে গেলে প্রথমে এই সিস্টেম কিভাবে কাজ করে সেটা জানতে হবে। আমরা সবাই জানি যে ১০০ এর ভিতরে ৮০ থেকে এর উপরে নাম্বার পেলেই &lt;/code&gt;A+`।  নিচের টেবিল টা লক্ষ্য করুনঃ&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;মার্ক&lt;/th&gt;
&lt;th&gt;ফলাফল&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;৮০ থেকে ১০০&lt;/td&gt;
&lt;td&gt;A+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৭০ থেকে ৭৯&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৬০ থেকে ৬৯&lt;/td&gt;
&lt;td&gt;A-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৫০ থেকে ৫৯&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৪০ থেকে ৪৯&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৩৩ থেকে ৩৯&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;৩৩ এর নিচে&lt;/td&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;উপরে শর্ত্য গুলো মেনেই গ্রড নির্ণয় করা হয়। &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;এই বিষয়টা সমাধান করা জন্য পাইথন অপারেটর এর প্রয়োজন হবে।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;এখানে কোড দেওয়া আছে। কোড থেকে বোঝার চেষ্টা করুন কিভাবে কি হয়েছে। তবে আগে নিজে নিজে চেষ্টা করে দেখুন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got A+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;79&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;69&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got A-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;49&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got D&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You got F&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Conditions (If-else-elif) Part-08</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Wed, 04 Sep 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/conditions-if-else-elif-part-08-3noh</link>
      <guid>https://forem.com/mislam-dev/conditions-if-else-elif-part-08-3noh</guid>
      <description>&lt;p&gt;ছোট বেলায় আমি সন্ধার পর দেরি করে বাড়িতে যেতাম। প্রায় প্রতিদিন। এই জিনিস টা আমার মা ঠিক পছন্দ করে না। একদিন তো একটা warning দিয়েই দিলেন। &lt;/p&gt;

&lt;p&gt;“কালকে থেকে যদি সন্ধ্যার  আগে তুই বাড়ি না আসিস, তাহলে তোর খবর আছে।” &lt;/p&gt;

&lt;p&gt;“আচ্ছা ঠিক আছে।” &lt;/p&gt;

&lt;p&gt;“তোর না কালকে বললাম সন্ধ্যার আগে বাড়িতে আসবি। সন্ধ্যা কখন হয়েছে কোন খবর আছে”&lt;/p&gt;

&lt;p&gt;“আর যদি ঠিক সময় মত চলে আসি তাহলে”&lt;/p&gt;

&lt;p&gt;“তাহলে তোকে ২টা ডিম সিদ্ধ করে খেতে দিব”&lt;/p&gt;

&lt;p&gt;পরের দিন সন্ধ্যাবেলা&lt;/p&gt;

&lt;p&gt;অনেকদিনের অভ্যাস এত সহজে যায়। তারপর শুরু হল উত্তম মধ্যম। এভাবেই চলছে কিছুদিন। কোন কাজ হল। &lt;/p&gt;

&lt;p&gt;তখন  আমার মা বলল আমাকে একদিন ডেকে বলল &lt;/p&gt;

&lt;p&gt;“শোন আমি একটা সিদ্ধান্ত নিয়েছি।”&lt;/p&gt;

&lt;p&gt;“কি সিন্ধান্ত”। আমি একটু চিন্তিত। না যা জানি কি বলে বসে। &lt;/p&gt;

&lt;p&gt;“কালকে থেকে তুই সন্ধ্যা হওয়ার ৫ মিনিটের মধ্যে বাড়িতে আসিস তাহলে তোকে ৫ টাকার ২ টা কেক দেওয়া হবে।”&lt;/p&gt;

&lt;p&gt;আমি তো শুনেই সেই খুশি। &lt;/p&gt;

&lt;p&gt;“থাম অত খুশি হওয়ার দরকার নেই। আর ১৫ মিনিট এর মধ্যে আছিস তাহলে ১ টা কেক পাবি”&lt;/p&gt;

&lt;p&gt;“বাহ ভাল তো”&lt;/p&gt;

&lt;p&gt;“আরেক টা জিনিস আছে। উপরের কোন টায় করতে না পারিস তাহলে কেক তো পাবিই না। সাথে তোর রাতে খাওয়া ও বন্ধ।”&lt;/p&gt;

&lt;p&gt;“এই টা কিন্তু ঠিক হচ্ছে না।”&lt;/p&gt;

&lt;p&gt;“ঠিক নাকি ভুল আমি সেটা বুঝব। তোর কাছে অপশন দিয়ে দিছি তোর যেই টা ভালো লাগবে সেইটা করবি ”&lt;/p&gt;

&lt;p&gt;এখান থেকে কি কিছু বুঝতে পারছেন? আমার কপালে দুঃখ আছে। শর্ত অনুযায়ী কাজ না করলে তো থাকবেই। চাকরির ক্ষেত্রে চাকরিও চলে যেতে পারে। &lt;/p&gt;

&lt;p&gt;এখানে লক্ষ্য করলে বুঝতে পারবেন যে, &lt;/p&gt;

&lt;p&gt;প্রথম দৃশ্যে যদি লক্ষ করেন তাহলে খেয়াল করবেন এখানে কাজ ২ টা কিন্তু হবে যে কোন একটা। কোন কাজ টা হবে সেটা নির্ভর করছে একট শর্তের উপর (সন্ধ্যার আগে বাড়ি ফিরছি কিনা)। &lt;/p&gt;

&lt;p&gt;আমি যেহেতু ওই দিন বাড়ি সময় মত ফিরতে পারি নি এই জন্য। আমার ক্ষেত্রে প্রথম কাজ টাই হয়েছে । উত্তম মধ্যম দিয়েছে আরকি। &lt;/p&gt;

&lt;p&gt;এই একই বিষয়টা পাইথনেও আছে। নিচের কোড টা লক্ষ্য করুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# condition সত্য হলে এই নিচের কোড রান হবে
&lt;/span&gt;    &lt;span class="c1"&gt;# expression
&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# condition সত্য না হলে বা মিথ্যা হলে এই নিচের কোড রান হবে
&lt;/span&gt;    &lt;span class="c1"&gt;# expression
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে &lt;code&gt;if&lt;/code&gt; হল পাইথনের কিওয়ার্ড। &lt;code&gt;if&lt;/code&gt; এর পরে একটা &lt;code&gt;condition&lt;/code&gt; হবে এবং এই condition এর উপর ভিত্তি করে কোন ব্লকের কোড রান হবে তা নির্ধারিত হবে। condition সত্য হলে প্রথম ব্লক টা রান হবে আর সত্য না হলে পরবর্তী else ব্লকে চলে যাবে। নিচের কোড টা রান করলেই বুঝতে পারবেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# ১ আর ১ সমান
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Condition is false&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;বিঃদ্রঃ পাইথন অপারেটরের মাধ্যমে এখানে condition চেক করতে হবে।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;এবার আসুন দ্বিতীয় দৃশ্যে &lt;/p&gt;

&lt;p&gt;এখানে কিন্তু ২ টা condition আছে। এখন কি করবেন? খুব সহজ। আপনি একটু ভাবলেই পেরে যাবেন। আগে একটু ভাবেন। &lt;/p&gt;

&lt;p&gt;এখানে প্রথম condition এর জন্য উপরে মত করে if else ব্যবহার করব। তারপর else ব্লক এর ভিতরে ২য় condition এর জন্য if else লিখবে। confusing লাগছে? নিচের কোড টা দেখলে বুঝতে পারবেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# 1st layer condition
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;1st Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# 2nd layer condition
&lt;/span&gt;        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2nd Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;No Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;উপরে কোড কে পরিবর্তন করে নিজের মত করে কোন condition দেখতে পারেন। &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;কাজঃ আপনার এই if else ব্যবহার করে একটা Marking Grading System বানিয়ে ফেলুন। আর কোডের screenshot কমেন্ট এ শেয়ার করুন।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;উপরে কোডে লক্ষ্য করলে দেখবেন এখানে 1st layer condition চেক করা পর 2nd layer condition এর চেক করছে । এখানে চাইলে একটু ভালোভাবে কোড লেখা যায়। নিচের কোড টা দেখুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;1st Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2nd Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;No Condition is true&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এর আগের লেখা কোড  আর এই কোডের আউটপুট একই  আসবে। কিন্তু এই কোড আগের কোডের থেকে সহজে বোঝা যায়। পরবর্তীতে আমাদের সময় বাচাবে। &lt;/p&gt;

&lt;p&gt;এখানে শুধু একটা নতুন condition add করেছি elif কিওয়ার্ড দিয়ে। এখানে খেয়াল করলে দেখবেন এখানে কিন্তু কোডের লেয়ার একটা কমে গেছে &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;কাজঃ এবার আপনার  if else ব্যবহার করে Marking Grading System কে elif এ convert করে ফেলুন  । আর কোডের screenshot কমেন্ট এ শেয়ার করুন।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;আজ এই পর্যন্ত। এতক্ষন সাথে থাকার জন্য ধন্যবাদ। আপনার মতামত অবশ্যই জানাতে ভুলবেন না। কমেন্ট এ যদি বলতে সমস্যা হয় তাহলে আমার inbox তো খোলায় আছে।&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Operators Part-07</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Mon, 02 Sep 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/operators-part-07-35d5</link>
      <guid>https://forem.com/mislam-dev/operators-part-07-35d5</guid>
      <description>&lt;p&gt;আসুন আমার আজকে কম্পিউটার এর ইতিহাস কিছুটা জানি। চার্লস ব্যাবেজ নামটা নিশ্চয় শুনেছেন। আইটি আছে আর  এই  নাম আপনি শোনেনি এটা আপনার জন্য দুর্ভাগ্য। যাই হোক, ইনি হলে কম্পিউটার এর জনক। &lt;/p&gt;

&lt;p&gt;চার্লস ব্যাবেজ ছিলেন একজন মেকানিক্যাল ইঞ্জিনিয়ার। এছাড়া অনেক সেক্টর ছিল যেমন গনিত অর্থনীতি এসব সেক্টরেও তার সমান পারদর্শীতা ছিল। তিনি প্রথম একটা যন্ত্র বানান যার দ্বারা গননা করা যেত। গণ্না এর ইংরেজি শব্দ &lt;code&gt;compute&lt;/code&gt; । এখানে থেকেই পরবর্তীতে কম্পিউটার শব্দের উদ্ভব হয়। &lt;/p&gt;

&lt;p&gt;এই কম্পিউটার নির্দিষ্ট সংখ্যক কাজ করতে পারত। কিন্তু বর্তমান যুগের কম্পিউটার ওই কম্পিউটার কয়েক লক্ষ কোটি গুন কাজ করতে সক্ষম। এবার আপনি একটু ভাবুন তো, একটা যন্ত্র দিয়ে যখন অনেকগুলো কাজ করতে চাইবেন তখন তার তৈরী প্রক্রিয়া কি রকম জটিল হতে পারে?&lt;/p&gt;

&lt;p&gt;কম্পিউটার জিনিস টাও একটু জটিল। এজন্য কম্পিউটার কে কাজ করাতে চাইলে প্রায় সবকিছুই বলে দেওয়া লাগে। না বললে কি হবে?&lt;/p&gt;

&lt;p&gt;জগাখিচুড়ির সৃষ্টি হবে। আপনি ভাববেন এক, আর হবে আরেক। এসব সমাস্যার সৃষ্টি না সে জন্য কিছু সাংকেতিক চিহ্ন রয়েছে। এসব চিহ্নের মাধ্যমে যাব তীয় যৌক্তিক ও গানিতিক হিসাব নিকাশ সম্পন্ন করা হয়। এসব চিহ্নকে প্রোগ্রামিং লাংগুয়েজে অপারেটর বলে। &lt;/p&gt;

&lt;h3&gt;
  
  
  পাইথনে মোট ৭ ধরনের অপারেটর রয়েছে।
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Arithmetic Operators: গানিতিক অপারশন সম্পন্ন করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Relational Operators: দুই বা ততোধিক মানের ভিতর তুলনা করার জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Assignment Operators: ভেরিয়েবলে ভ্যালু আসাইন করার জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Logical Operators:দুই বা ততোধিক মানের ভিতর যৌক্তিক সম্পর্কের তুলনা করার জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Bitwise Operators: বিট ম্যানুপুলেশন এর জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Membership Operators: কোন ভ্যালু কোন লিস্ট-এ আছে কিনা তা চেক করা করার জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;Identity Operators: ফলসি ভ্যালু চেক করার জন্য ব্যবহার করা হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Arithmetic Operators
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;+&lt;/code&gt;&lt;/strong&gt; (Addition): দুটি সংখ্যা যোগ করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;-&lt;/code&gt;&lt;/strong&gt; (Subtraction): একটি সংখ্যা থেকে অন্যটি বিয়োগ করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;*&lt;/code&gt;&lt;/strong&gt; (Multiplication): সংখ্যা গুণ করতে বা স্ট্রিংকে একাধিক বার পুনরাবৃত্তি করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/&lt;/code&gt;&lt;/strong&gt; (Division): সংখ্যা ভাগ করতে ব্যবহার করা হয়, এবং সবসময় একই ডিভাইজনের প্রকারভেদ দেয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;%&lt;/code&gt;&lt;/strong&gt; (Modulus): একটি সংখ্যা দিয়ে অন্যটি ভাগ করতে এবং মডুলোসহ প্রস্তুত হয়া বাকি অংশ হিসেবে নেওয়া হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;`&lt;/strong&gt;`** (Exponentiation): একটি সংখ্যা কে অন্যটি সংখ্যার পাওয়ার হিসেবে নেওয়া হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;নিচের কোড টি রান করলে বিষয়গুলো আরো ভালো ভাবে পরিষ্কার হবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Logical Operators:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;and&lt;/code&gt;&lt;/strong&gt;: দুটি শর্ত সত্য হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;or&lt;/code&gt;&lt;/strong&gt;: দুটি শর্ত যেকোনো একটি সত্য হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;not&lt;/code&gt;&lt;/strong&gt;: একটি শর্ত মিথ্যা হলে সত্য প্রদান করে&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;নিচের কোড টি রান করলে বিষয়গুলো আরো ভালো ভাবে পরিষ্কার হবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Comparison Operators:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;==&lt;/code&gt;&lt;/strong&gt; (Equal to): দুটি মান সমান হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/strong&gt; (Not Equal to): দুটি মান সমান নয় হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/strong&gt; (Less than): একটি মান অপর মানের থেকে ছোট হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/strong&gt; (Greater than): একটি মান অপর মানের থেকে বড় হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/strong&gt; (Less than or equal to): একটি মান অপর মানের থেকে কম বা সমান হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/strong&gt; (Greater than or equal to): একটি মান অপর মানের থেকে বড় বা সমান হলে সত্য প্রদান করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;নিচের কোড টি রান করলে বিষয়গুলো আরো ভালো ভাবে পরিষ্কার হবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Assignment Operators:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;=&lt;/code&gt;&lt;/strong&gt; (Assignment): একটি মান একটি ভেরিয়েবলে সম্পাদন করতে ব্যবহৃত হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;+=&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;=&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;=&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;/=&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;//=&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;%=&lt;/code&gt;&lt;/strong&gt;: ভেরিয়েবলে একটি মান যোগ, বিয়োগ, গুণ, ভাগ, পূর্ণাংশ ভাগ, বা মডুলো করতে এবং ফলাফলটি ভেরিয়েবলে সংরক্ষণ করতে ব্যবহৃত হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;নিচের কোড টি রান করলে বিষয়গুলো আরো ভালো ভাবে পরিষ্কার হবে। এই আপরেটর গুলো সামনে যখন লুপ ব্যবহার কর তখন কাজে লাগবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a = 10
print(a)
a+= 10
print(a)
a-= 10
print(a)
a*= 10
print(a)
a/= 10
print(a)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;আপাতত নিচের দুইটা অপারেটর এর কোন উদাহরণ দিচ্ছি না এখন। সামনে যখন লিস্ট নিয়ে কাজ করা হবে তখন দেখানো হবে।  ইনশাল্লাহ&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Membership Operators:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;in&lt;/code&gt;&lt;/strong&gt; : একটি মান একটি সিকুয়েন্সে বিদ্যমান থাকলে সত্য প্রদান করে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;not in&lt;/code&gt;&lt;/strong&gt;: একটি মান একটি সিকুয়েন্সে বিদ্যমান না থাকলে সত্য প্রদান করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Identity Operators:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;is&lt;/code&gt;&lt;/strong&gt;: একটি অবজেক্ট আরেকটি অবজেক্টের সাথে একই অবস্থানে আছে কিনা তা চেক করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;is not&lt;/code&gt;&lt;/strong&gt;: একটি অবজেক্ট আরেকটি অবজেক্টের সাথে একই অবস্থানে নেই কিনা তা চেক করতে ব্যবহার করা হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;আপনার মতামত দিতে ভুলবেন না। এতক্ষন সাথে থাকার জন্য ধন্যবাদ।&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Type Casting Par-06</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Sat, 31 Aug 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/type-casting-par-06-6ho</link>
      <guid>https://forem.com/mislam-dev/type-casting-par-06-6ho</guid>
      <description>&lt;p&gt;কম্পিউটারের সামনে বসে থাকতে থাকতে বিরক্ত হয়ে গেছি। ব্রেন টার একটু রিফ্রেসমেন্ট দরকার। তাই বিকাল বেলা একটু হাটতে বের হলাম। রাস্তা দিয়ে হাটছি। আশে পাশে গাড়ির বিকট শব্দ। এসব শব্দ কানের রারো টা বাজিয়ে দিচ্ছে। একটু শান্তি খুজতে এসে বড় অশান্তির আগমন। তাই শহর থেকে একটু দূরে চলে আসলাম এখানে কোন গাড়ির বিকট শব্দ নেই। মনোরম পরিবেশ। জায়গা টা একটু জঙ্গলের মত । আশে পাশে অনেক গাছপালা রয়েছে।  গাছগুলো আকারে অনেক বড়। আনুমানিক বয়স ৩০-৪০ বছর তো হবে। কয়েক টা আছে যে গুলো আকারে একটু ছোট। ১০-১৫ বছর বয়স হবে হয়ত। &lt;/p&gt;

&lt;p&gt;জায়গা টা দারুন লাগছে। বসন্তের শুরুতে এখানে এসেছি। মৃদ হাওয়াও বইছে। শরীরে যখন পড়ছে, প্রানে অদ্ভুত শিহরনের সৃষ্টি হচ্ছে। ভালোই লাগছে। সাথে বিশেষ কেউ থাকলে আরেকটু ভালোই হত। কিছুক্ষন হাটাহাটির পর দেখি একটা ভাঙ্গা বাড়ি। অনেক পুরাতন ,আনুমানিক ৫০-৬০ বছর আগের বাড়ি হবে। বাড়ি একটু পর্যবেক্ষন করার ইচ্ছা হল। তাই বাড়ি টার ভেতরে ঢুকে পড়লাম। ভিতর টা কিছুটা অন্ধকার। বাড়ির ভিতরে কিছুক্ষন ঘুরাঘুরির পর গোলাকার আকৃতির একটা পয়সার মত কিছু একটা দেখি নিচে পড়ে আছে। এই টা আবার কি জিনিস। হাত দিয়ে উঠালাম দেখতে অনেক টা একটার কয়েন এর মত তবে একটু মোটা। জিনিস টা কি হতে পারে? &lt;/p&gt;

&lt;p&gt;এক সেকেন্ড আমি এখানে ঘুরতে এসেছি। এসব জিনিশ নিয়ে মাথাই চাপ দেওয়ার কোন মানেই হয় না। এ জন্য বস্তুটাকে পকেটে ভরে ঘোরাঘুরি শুরু করে দিলাম। &lt;/p&gt;

&lt;p&gt;যাই হোক ভালোই লাগছে । ব্রেন সম্পূর্ন ফ্রেস হয়ে গেছে। হঠাত মনে পড়ল আজ তো একটা ব্লগ পাবলিস করার কথা ছিল। কিন্তু আমি তো সম্পূর্ন ভুলে গেছি। কোন কিছু তো লেখায় হয়নি। তাই ওখান থেকে বের হয়ে পড়লাম। সময় একটু বেশিই লেগে গেল। ফিরতে ফিরতে সন্ধ্যা হয়ে গেছে। &lt;/p&gt;

&lt;p&gt;সন্ধ্যা ৬ টা বেজে গেছে। এসে প্রথমে ওয়াস যেয়ে হাত মুখ ধুচ্ছি সেই সময় পকেটে রাখা সেই বস্তুটার কথা মনে হল। জিনিস টা খুব ময়লাযুক্ত। পানি দিয়ে ধোয়ার চেষ্টা করলাম। কিছুই হল না। না, এই ভাবে হবে না।  আলাদা কিছু করা দরকার। টুথপেষ্ট দিলে কেমন হয়?&lt;/p&gt;

&lt;p&gt;টুথপেষ্ট আর একটা পুরাতন ব্রাশ নিয়ে কাজ শুরু করে দিলাম। প্রথমবার টুথপেষ্ট লাগিয়ে ব্রাশ কিছুক্ষন ঘসলাম। কিছুটা পরিষ্কার হয়েছে। আরো কয়েক একই কাজ করলাম। পরিষ্কার ভালোই হচ্ছে। এভাবেই চলছে। একটা সময় যেয়ে টুথপেষ্ট আর বের হচ্ছে না। বুঝলাম টুথপেষ্ট শেষ। &lt;/p&gt;

&lt;p&gt;এখন মোটামুটি ভালোই পরিষ্কার হচ্ছে। চক চক করছে। দেখতে অনেকটা সাদা হয়ে গেছে। ধুসর রঙের মত। বস্তুটাকে দেখে মনে হচ্ছে রুপা জাতীয় কোন জিনিস তবে আমি নিশ্চিত না। যদি কোন ভাবে সোনার টুকরো হয় তাহলে আমি জিনিস টা বেচে বড় লোক হয়ে যেতাম, তারপর পায়ের উপর পা তুলে  সুপার কম্পিউটার চালাবো। তবে এটা মনে হয় হবে না। সোনা দেখতে আর ধুসর রঙের হয় না। আমার আর সুপার কম্পিউটার কেনা হল না। &lt;/p&gt;

&lt;p&gt;আচ্ছা একটার বদলে যদি হাজার খানেক এক ধরনের বস্তু থাকত তাহলে এভাবে ব্রাশ ঘষতে ঘষতে বাকি জীবন টা পার হয়ে যাবে। এ জন্য একটা মেশিন বানালে কেমন হয়? পয়সা গুলো ভিতরে দেব আমাকে পরিষ্কার করে ফেরত দিয়ে দিবে। এই রকম মেশিন থাকলে ভালোই হত। &lt;/p&gt;

&lt;p&gt;কিন্তু আমার জন্য তো ভালো হচ্ছে না। আমার কাছে তো একটা মাত্র বস্তু রয়েছে আর সেটা আমি আগেই পরিষ্কার করে ফেলেছি। এই জাতীয় মেশিন আমার দরকার নেই। &lt;/p&gt;

&lt;p&gt;সব কিছু রেখে কম্পিউটারের সামনে বসলাম। ব্লগ টা লিখব।&lt;/p&gt;

&lt;p&gt;আজকের বিষয় হচ্ছে Type Casting in Python। উপরে গল্প টা পড়েন তাহলে আপনি টাইপ কাস্টিং এর কনটেপ্ট ইতিমধ্যেই বুঝে গেছেন। সহজ ভাবে বললে, Type Casting হল ডাটার ডাটা টাইপ পরিবর্তন করা। &lt;/p&gt;

&lt;p&gt;এখন আপনার কাছে যদি প্রশ্ন করি “200” এর ডাটা টাইপ কি? &lt;/p&gt;

&lt;p&gt;উত্তর খুবই সহজ এটা তো নাম্বার। জি না, এটা নাম্বার না। খেয়াল করলে দেখতে পারবেন কোটেশনের ভিতরে আছে নাম্বার টা আছে। আর কোটেশনের ভিতরে যাই থাকুক , সেটা String। &lt;/p&gt;

&lt;p&gt;এখন আপনার যদি এটাকে নাম্বার এ কনভার্ট করতে বলা হয় কি করবেন? &lt;/p&gt;

&lt;p&gt;এটাও সহজ, কোটেশন তুলে দিব। &lt;/p&gt;

&lt;p&gt;আপনার উত্তর ঠিক আছে । কিন্তু সমস্যার সৃষ্টি হবে, আমি যদি প্রশ্ন একটু পরিবর্তন করে দিই। &lt;/p&gt;

&lt;p&gt;মনে করুন আপনি একটা সফটওয়্যার বানাচ্ছেন, সেখানে আপনাকে ডাটা ইনপুট নিতে হবে। সেটা নাম্বার এ নিতে হবে। &lt;/p&gt;

&lt;p&gt;কি করবেন এখন? এখানে তো আর কোটেশন তুলতে পারবেন না। &lt;/p&gt;

&lt;p&gt;একটা উদাহরন  দিলে বিষয় টা বুঝতে পারবেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে আউটপুট আসবে &lt;code&gt;&amp;lt;class 'str'&amp;gt;&lt;/code&gt; । এখন এটা integer এ কনভার্ট করতে হবে।  কিন্তু শর্ত হচ্ছে,  প্রথম লাইনে কোড টাচ করা যাবে না। &lt;/p&gt;

&lt;p&gt;এই টা করার জন্য পাইথনে &lt;code&gt;int()&lt;/code&gt;  একটা ফাংশন আছে। নিচের কোডটা কপি করে রান করুন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;ageInteger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ageInteger&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output কি এসেছে? &lt;/p&gt;

&lt;p&gt;&lt;code&gt;int()&lt;/code&gt;  ফাংশন বাদেও আরো দুইটা ফাংশন আছে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;float()&lt;/code&gt;  ফাংশন ব্যবহার করা হয় float ডাটা টাইপে কনভার্ট করার জন্য।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;str()&lt;/code&gt;   ফাংশন ব্যবহার করা হয় string ডাটা টাইপে কনভার্ট করার জন্য।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এবার আপনি বাকি দুইটার practice করবেন এবং তাদের &lt;code&gt;screenshot&lt;/code&gt;  কমেন্টে দিয়ে দিবেন। &lt;/p&gt;

&lt;p&gt;যাক ব্লগ লেখা শেষ। &lt;/p&gt;

&lt;p&gt;আমার একটা বন্ধু ফোন দিয়েছে কথার আদান প্রদান হল কিছুক্ষন। কথার এক পর্যায়ে জানতে পারলাম যে ওর কাছে  যে বস্তু পেয়েছিলাম ওই টা পরিষ্কার করার একটা মেশিন আছে। শালার আচ্ছা মত গালি দিলাম। আগে জানালে আমার টুথপেষ্ট টা নষ্ট হত না। সময় ও বেছে যেত। আবার নতুন টুথ পেষ্ট কিনতে হবে।&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Data Types Part-05</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Thu, 29 Aug 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/data-types-part-05-3l13</link>
      <guid>https://forem.com/mislam-dev/data-types-part-05-3l13</guid>
      <description>&lt;p&gt;আমি নতুন প্রোগ্রামিং শিখছি নতুন নতুন কফি খেতে ভাল লাগছে না। বোরিং। তাই ভাবলাম নতুন কিছু ট্রাই করা দরকার। কফির একমাত্র অলটারনেটিভ হচ্ছে চা। কিছুক্ষন খোজা খুজির পড় বুঝতে পারলাম চা তৈরির জন্য প্রয়োজনীয় জিনিস পত্র আমার কাছে নেই। তাহলে কি করা যায়। একটাই অপশন চা।&lt;/p&gt;

&lt;p&gt;এখন আমি চায়ের দোকানের উদ্দেশ্যে হাটছি। কিছুদুর যেতেই আমার দুইজন বন্ধুর সাথে দেখা। তাদের ভিতর একজন জিজ্ঞাসা করল,&lt;/p&gt;

&lt;p&gt;“কোথায় যাচ্ছিস?”&lt;/p&gt;

&lt;p&gt;“চা খেতে যাচ্ছি।” &lt;/p&gt;

&lt;p&gt;“তাই নাকি।”&lt;/p&gt;

&lt;p&gt;“তোরা যাবি ? ”&lt;/p&gt;

&lt;p&gt;“হ্যা চল আমরাও যাব।” &lt;/p&gt;

&lt;p&gt;৩ জন মিলে চা খেলাম (পান করলাম আরকি)। সাথে বিস্কুট । চা খাওয়া শেষ এবার বিল দেওয়ার পালা। এবার আমি আমার বন্ধুদের কাছে টাকা চাইলাম। একজন বলে উঠল &lt;/p&gt;

&lt;p&gt;“তুই তো কম্পিউটার ইঞ্জিনিয়ার। তুই তো শালা বড়লোক”&lt;/p&gt;

&lt;p&gt;বড় লোক কথাটা শোনার পর আমি একটু হাসলাম। &lt;/p&gt;

&lt;p&gt;“বিল তুই দিবি। আর আমরা তো তোর সাথে এসেছি। বিল টা দেওয়া তোর নৈতিক দায়িত্ব”&lt;/p&gt;

&lt;p&gt;“আচ্ছা ঠিক আছে। আমিই বিল দিচ্ছি”&lt;/p&gt;

&lt;p&gt;আমি ভালো করেই জানি ওদের সাথে আমি কোন দিন পারবেন না। &lt;/p&gt;

&lt;p&gt;দোকানদার মামার কাছে চায়ের বিল জানতে চাইলে, উনি কিছুক্ষন একটু ভাবলেন। মনে মনে হিসাব করছেন। কিছুক্ষন পর বললেন।আমি বিল মিটিয়ে  চলে আসলাম। নিজের এনার্জি ফেরত পেয়েছি। সেই জন্য ভাবলাম প্রোগ্রামিং নিয়ে কিছু শেখা দরকার। কিছুক্ষন ঘাটাঘাটি করার পর আমি সিদ্ধান্ত নিলাম , Python এর ডাটা টাইপ শিখব। অনলাইন থেকে ২-৩ টা ব্লগ ওপেন করে তার ভিতর থেকে একটা সিলেক্ট করে পড়া শুরু করলাম। প্রথম দিকে কিছুই বুঝতে না পরলেও আস্তে আস্তে আমার মাথায় কিছু যাওয়া শুরু করল। কিছুক্ষন আমি বলেই উঠলাম&lt;/p&gt;

&lt;p&gt;“এগুলো তো আমি জানি। এই জিনিস আমি তো আমি প্রতিদিন ব্যবহার করি”। &lt;/p&gt;

&lt;p&gt;সম্পূর্ন ব্লগ টা পড়ার পর মনে হল এই জিনিস গুলো নোট করে রাখা উচিত। তাই প্রয়োজনীয় জিনিস গুলো নোট করে ঘড়ির দিকে দেখলাম। হাতে কিছু সময় আছে । তাই  ফেসবুক যাওয়ার সিন্ধান্ত নিলাম।ফেসবুক ওপেন করেই দেখি আপনার মেসেজ । আপনি সমস্যায় পড়েছেন, ডাটা টাইপ মাথায় ঢুকছে না। সময় যেহেতু আছে আসুন আপনাকে ডাটা টাইপ শেখায়। &lt;/p&gt;

&lt;p&gt;ডাটা টাইপ কি সেটা তো জানেন? জানেন না। ডাটা টাইপ হলো ডাটার ধরন। ডাটা কি ধরনের হবে সেটা। ছোট ক্লাসে  অংক করেছেন তখন দুই ধরনে সংখ্যা ছিল । পূর্নসংখ্যা এবং ভগ্নাংশ। দুই টা কিন্তু ২ ধরনের সংখ্যা। পূর্নসংখ্যা এবং ভগ্নাংশ হল আলাদা দুইটা ডাটা টাইপ। &lt;/p&gt;

&lt;p&gt;ডাটা টাইপ মূলত ২ ধরনের হয়ে থাকে। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রেমিটিভ&lt;/li&gt;
&lt;li&gt;নন-প্রেমিটিভ।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;প্রিমিটিভ ডাটা টাইপ হল ও ওই সকল ডাটা টাইপ যেগুলো অলরেডি বিদ্যমান। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integer (পূর্ণসংখ্যা)&lt;/li&gt;
&lt;li&gt;Float (দশমিক যুক্ত নাম্বার)&lt;/li&gt;
&lt;li&gt;Boolean ( True/False)&lt;/li&gt;
&lt;li&gt;String (Text)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;নন-প্রিমিটিভ ডাটা টাইপ হল ও ওই সকল ডাটা টাইপ অলরেডি বিদ্যমান ডাটা টাইপ ব্যবহার করে নতুন ডাটা টাইপ তৈরি করা হয়। &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List&lt;/li&gt;
&lt;li&gt;Tuple&lt;/li&gt;
&lt;li&gt;Dictionary etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;আপনার মনে একটা প্রশ্ন আসতে পারে ডাটা টাইপ শেখার কি কোন দরকার আছে?&lt;/p&gt;

&lt;p&gt;অবশ্যই আছে। আমরা ভাল করে জানি কম্পিউটার নিজের মত করে কাজ করার কোন ক্ষমতা নেই। তাকে আমরা যেমন নির্দেশনা দেব তেমন ভাবে কাজ করবে। এখন মনে করুন আপনার ২ টা সংখ্যা যোগ করতে হবে।  আপনি কম্পিউটার কে বলে দিলেন না সংখ্যা দুইটি কোন ধরনের। কিছুক্ষন পর রেজাল্ট আসল যেটা ভুল। এখানে সমস্যা টা কোথায়?&lt;/p&gt;

&lt;p&gt;সমস্যা টা হলে  কম্পিউটার তো জানে না সংখ্যা দুইটি কোন ধরনের । এখন সে নিজের মত করে একটা ধরে নিয়ে ফলাফল দিবে। যা বেশির ভাগ সময় ভুল দেখাবে।  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;বিঃদ্রঃ&lt;/strong&gt; পাইথনে আলদা ভাবে ডাটা টাইপ বলে দেওয়ার প্রয়োজন হয় না। পাইথনের কম্পাইলার অটোমেটিক ডাটা টাইপ সিলেক্ট করে নেই।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Integer
&lt;/h2&gt;

&lt;p&gt;Integer এর বাংলা অর্থ হল পূর্ণসংখ্যা। অর্থ্যাত ০, ১,২ থেকে শুরু করে তার পরবর্তী এবং পূর্ববর্তী সকল সংখ্যাই পর্ণসংখ্যা। &lt;/p&gt;

&lt;p&gt;উপরোক্ত সমস্যার ক্ষেত্রে যদি আপনি সংখ্যার ক্ষেত্রে Integer বলে দেন তাহলে কম্পিউটার integer যেভাবে কাজ করে বা যোগ করতে হয় সেভাবে যোগ করে ফলাফল দেখাবে। &lt;/p&gt;

&lt;p&gt;এখন বলুন তো আমি যে বিল টা চায়ের দোকানদার কে দিলাম সেটা কোন ডাটা টাইপ?&lt;/p&gt;

&lt;p&gt;নিচের কোড টা রান করুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;intVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intVar&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output নিচের মত আসবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;class &lt;span class="s1"&gt;'int'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Integer এর short form হল int.&lt;/p&gt;

&lt;h2&gt;
  
  
  Float
&lt;/h2&gt;

&lt;p&gt;এবার আসি float এ। Float শব্দের বাংলা অর্থ কি বলুন তো? যদি জানেন তাহলে তো ভাল । না হলে google Translate তো আছে। &lt;/p&gt;

&lt;p&gt;যাই হোক, আপনি দশমিক নাম্বার তো বুঝেন। ২০ দশমিক ৫ (২০.৫) , ২৭ দশমিক ৯(২৭.৯)। ইংরেজি টে বলতে চাইলে , 20 point 5(20.5), 27 point 9(27.9)। এবার আপনার বলুন তো আপনার SSC এর রেসাল্ট কত?&lt;/p&gt;

&lt;p&gt;এই যে পয়েন্ট বা দশমিক দিয়ে কোন সংখ্যা লিখছি,  এই ধরনের সকল সংখ্যা গুলোই হল Float ডাটা টাইপ এর অন্তর্ভুক্ত। &lt;/p&gt;

&lt;p&gt;নিচের কোড টা রান করুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;intVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;20.5&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;intVar&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output নিচের মত আসবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;class &lt;span class="s1"&gt;'float'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  String
&lt;/h2&gt;

&lt;p&gt;এখন আমি যদি আপনার নাম জিজ্ঞাসা করি আপনি বলবেন “আমার নাম পাইথন”।  এখন আপনার কাজ হচ্ছে এই লেখা টা কম্পিউটারে সেভ করতে হবে। কম্পিউটারে কিভাবে সেভ করবেন। কম্পিউটার কে তো বলে দিতে হবে। এটা কি? &lt;/p&gt;

&lt;p&gt;যখন ‘’ বা “” এর মধ্য যখন কোন কিছু রাখা হয় তখন তাকে String বলা হয়। &lt;/p&gt;

&lt;p&gt;নিচের কোড টা রান করুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;I am Python&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output নিচের মত আসবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;class &lt;span class="s1"&gt;'str'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;str&lt;/code&gt; হল string সর্ট ফর্ম। &lt;/p&gt;

&lt;h2&gt;
  
  
  Boolean
&lt;/h2&gt;

&lt;p&gt;এখন আমি যদি আপনাকে জিজ্ঞাসা করি, &lt;/p&gt;

&lt;p&gt;আপনি কি সকাল সকাল ঘুম থেকে উঠেন ? অথবা&lt;/p&gt;

&lt;p&gt;আপনি কি প্রতিদিন সকালে গোসল করে কাজে যান?&lt;/p&gt;

&lt;p&gt;আপনি কি রাতে ঘুমানোর আগে বাইরে হাটতে যান ? &lt;/p&gt;

&lt;p&gt;আপনি কি রাতে ঘুমানোর আগে বই পড়েন?&lt;/p&gt;

&lt;p&gt;প্রশ্ন গুলো একটু এনালাইসিস করুন। কিছু পেলেন?&lt;/p&gt;

&lt;p&gt;এখানে যত গুলো প্রশ্ন আছে, সব গুলোর উত্তর &lt;code&gt;হ্যা&lt;/code&gt; অথবা &lt;code&gt;না&lt;/code&gt;  দিয়ে দিতে হবে। বুলিয়ান ডাটা টাইপ ঠিক একই ধরনের হয় &lt;code&gt;হ্যা&lt;/code&gt; হবে নতুন  &lt;code&gt;না&lt;/code&gt; হবে। হ্যা বলতে &lt;code&gt;True&lt;/code&gt; এবং না বলতে &lt;code&gt;False&lt;/code&gt; কে বোঝায়। &lt;/p&gt;

&lt;p&gt;নিচের কোড টা রান করুন&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;boolValue1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;boolValue2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolValue1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolValue2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output নিচের মত আসবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;class &lt;span class="s1"&gt;'bool'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;class &lt;span class="s1"&gt;'bool'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;bool&lt;/code&gt; হল Boolean সর্ট ফর্ম। &lt;/p&gt;

&lt;p&gt;কিছু মনে পড়েছে? আমিও কিন্তু বুলিয়ান এর ব্যবহার করেছি। কোথায় বলুন তো?&lt;/p&gt;

&lt;p&gt;নন-প্রমিটিভ ডাটা টাইপ (list, tuple , set , dictionary) এর নিয়ে আলোচনার জন্য সামনের ব্লগ এ হবে। সাথে থাকার জন্য ধন্যবাদ&lt;/p&gt;

&lt;p&gt;প্রশ্নের উত্তর গুলো  জানাতে ভুলবেন না।&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Variables Part-04</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Tue, 27 Aug 2024 06:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/variables-part-04-22i4</link>
      <guid>https://forem.com/mislam-dev/variables-part-04-22i4</guid>
      <description>&lt;p&gt;মনে করুন আপনি চা খাবেন। না, চা না। কফিই খান। প্রোগ্রামার হচ্ছেন কফি তো খেতেন পারেন। কফিকে প্রোগ্রামারদের সঙ্গি বললে ভুল হবে না । &lt;/p&gt;

&lt;p&gt;যাই হোক। এখন কফি তৈরী করার জন্য আপনার কি কি প্রোয়োজন? গরম পানি, চিনি, আর কফি। আর যদি খুব বেশি বড় লোক হন তাহলে দুধও add করতে পারেন। আমি গরিব মানুষ। &lt;/p&gt;

&lt;p&gt;প্রথমে পানি গরম করে কফির পাত্র থেকে কফি, চিনির পাত্র থেকে চিনি নিবেন। দুধের দরকার হলে দুধের পাত্রে থেকে নেবেন। তারপর মিক্স করে, পান করিবেন। &lt;/p&gt;

&lt;p&gt;এবার আপনার কাছে আমার প্রশ্ন।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;আপনি তো চাইলেই আপনার প্রয়োজন মত চিনি দোকান থেকে আনতে পারতেন। তাহলে কেন আপনি আপনার আগে থেকে সংরক্ষিত চিনি পাত্র থেকে চিনি নিলেন?&lt;/li&gt;
&lt;li&gt;কফি ও দুধ ক্ষেত্রে একই কাজ করেছেন কিন্তু কেন?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;আপনি হয়ত বলবেন, আমার সুবিধার জন্য। একটু বিস্তারিত জানতে চাইলে আপনার উত্তর এই রকম হতে পারে, “প্রতিদিন তো আমার এই জিনিস গুলো লাগে, তো বার বার দোকানে না যেয়ে একবারে এনে রেখে দিয়ে প্রয়োজন মত ব্যবহার করব।“&lt;/p&gt;

&lt;p&gt;কিন্তু কেন ?&lt;/p&gt;

&lt;p&gt;“এতে আমার সময় ও শক্তি দুইটাই বাচবে”&lt;/p&gt;

&lt;p&gt;গল্প তো হলো, চলুন এবার মূল জায়গায় যাই,&lt;/p&gt;

&lt;p&gt;variable হল অনেক টা উপরের চিনির পাত্রের মত, যেখানে আপনার প্রয়োজনীয় বিভিন্ন ডাটা রাখতে পারেন। আর চিনির মত প্রয়োজন মত বিভিন্ন স্থানে ব্যবহার করতে পারেন। &lt;/p&gt;

&lt;p&gt;নিচের কোডটা দেখুনঃ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;variable_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;কিছুই বুঝতে পারছেন না? বোঝার কথাও না। চিন্তা কি কই বাত নাহি, মে হু না।&lt;/p&gt;

&lt;p&gt;পাইথনে variable declare বা ঘোষনা করা জন্য প্রথমে variable এর একটা ভ্যালিড নাম, তারপর &lt;code&gt;=&lt;/code&gt; চিহ্ন এবং  &lt;code&gt;=&lt;/code&gt; চিহ্ন এর পর একটা মান বসাতে হবে। &lt;/p&gt;

&lt;p&gt;চলেন এবার, আপনার চিনির পাত্রে চিনি রাখার জন্য একটি variable declare করিঃ&lt;/p&gt;

&lt;p&gt;মনে করুন আপনি ১০০ গ্রাম চিনি রাখবেন। চিনির খুব দাম।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sugarBox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে &lt;code&gt;sugarBox&lt;/code&gt; হচ্ছে variable এর নাম আর &lt;code&gt;100&lt;/code&gt; হচ্ছে মান। &lt;/p&gt;

&lt;p&gt;এখন আপনার মনে প্রশ্ন জাগতে পারে variable দিয়ে আমার লাভ কি?&lt;/p&gt;

&lt;p&gt;লাভ অবশ্যই আছে। আমি কিন্তু শুদ্ধ বাংলা লিখছি। আপনারা কিন্তু অন্য কিছু ভাববেন না।&lt;/p&gt;

&lt;p&gt;আপনি চাইলে খুব সহজে variable এর মান এর নামকে ব্যবহার করে access করতে পারবেন। নিচের কোডকে দেখুনঃ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sugarBox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sugarBox&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;উপরের কোডকে রান করলে নিচের মত output আসবে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আপনার চাইলে এই variable কে যত খুশি ততবার ব্যবহার করতে পারবেন। &lt;/p&gt;

&lt;p&gt;নিচের মত করেঃ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sugarBox &lt;span class="o"&gt;=&lt;/span&gt; 100
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
print&lt;span class="o"&gt;(&lt;/span&gt;sugarBox&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;100
100
100
100
100
100
100
100
100
100
100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;আপনি তো প্রোগ্রামার হয়ে গেছেন। এবার তো আপনি বড় লোক হয়ে যাবেন। এখন কি আপনার ১০০ গ্রাম চিনিতে হবে? &lt;/p&gt;

&lt;p&gt;সেই জন্য আপনি আরো ২০০ গ্রাম চিনি নিয়ে আসলেন এবং চিনির পাত্রে রেখে দিলেন তাহলে মোট চিনিত কত গ্রাম হল? ৩০০ গ্রাম।&lt;/p&gt;

&lt;p&gt;এবার আপনি কোডের সব কিছু ঠিক রেখে &lt;code&gt;100&lt;/code&gt; এর স্থানে &lt;code&gt;300&lt;/code&gt; বসিয়ে দেন। output লক্ষ্য করেন। কিহ? সময় কি save হল?&lt;/p&gt;

&lt;p&gt;যাই আজকে এই পর্যন্ত যদি বুঝতে অসুবিধা হয় তাহলে এক কাপ নিয়ে আবার পড়তে বসুন। কফি বানানোর রেসিপি তো উপরে দেওয়াই আছে। এরপরও যদি বুঝতে না পারেন তাহলে অবশ্যই জানাবেন। &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;বিঃদ্রঃ উপরে অনেক কথা বার্তা সিরিয়াস মনে হতে পারে। দয়া করে সিরিয়াসলি নিবেন না। সব কিছু মজা করার জন্য লিখেছি।&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>First Program Part-03</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Wed, 06 Mar 2024 13:00:00 +0000</pubDate>
      <link>https://forem.com/mislam-dev/first-program-part-03-41og</link>
      <guid>https://forem.com/mislam-dev/first-program-part-03-41og</guid>
      <description>&lt;p&gt;এই টা tutorial সিরিজ এর সব চেয়ে ছোট ব্লগ হবে। কারন এখানে শুধু মাত্র একটা বিষয় নিয়ে আলোচনা করার চেষ্টা করব। আজকে আমরা প্রোগ্রামিং এর জগতে পা দিব। ভয় পাচ্ছেন?&lt;/p&gt;

&lt;p&gt;ভয় পাওয়ার কোন প্রয়োজন নেই। একবার ভেবে দেখুন তো যারা এখন প্রোগ্রামিং খুব ভালো পারে তারা কিভাবে শিখেছে। তারা আপনার মত এইরকম পর্যায়ে ছিল। তারা শিখতে পেরেছে আপনিও পারবেন। &lt;/p&gt;

&lt;p&gt;যাই হোক , চলুন এবার শুরু করি,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রথমে PyCharm ওপেন করুন। নিচের মত একটা window আসবে। এখান থেকে New project এ click করতে হবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhi6bdenbw1vlzaqom57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhi6bdenbw1vlzaqom57.png" alt="Step 0. Open PyCharm and Create a Project" width="776" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;এরপর নিচের মত window আসলে, এখান থেকে Project এর নাম type করে create এ ক্লিক করতে হবে।&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70q2w2wq1bj1bqbvyvcw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70q2w2wq1bj1bqbvyvcw.png" alt="Step 1. Set Pycharm Configuration" width="785" height="638"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;এরপর নিচের মত একটা window আসবে। বাম side panel টি হলো ফাইল ম্যানেজার আর ডানদিকের অংশ টি হল code editor।&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqb3lygcd9zze5hopj42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqb3lygcd9zze5hopj42.png" alt="Step 2. Overview" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;এবার ডান দিকের যত কোড আছে কেটে দিতে হবে। তারপর নিচের কোডটাকে রান লিখতে হবে।
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmhv4zs5g9eucmzlekr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmhv4zs5g9eucmzlekr5.png" alt="Step 3" width="397" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;এর Menu Bar থেকে Navigation Bar টা Enable করতে হবে। এই জন্য View → Appearance → Navigation Bar এর ক্লিক করতে হবে। এরপর নিচের মত একটা Bar দেখা যাবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fln5bhyzyi8vrfdrmxte0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fln5bhyzyi8vrfdrmxte0.png" alt="Step 4" width="800" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;এখানে থেকে Play আইকন এ ক্লিক করতে হবে। এবার প্রোগ্রাম রান করবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre79nn3tr3yhq7ru8bm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre79nn3tr3yhq7ru8bm1.png" alt="Step 5" width="540" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;প্রোগ্রাম এর Output দেওয়ার জন্য নিচের দিকে একটা প্যানেল ওপেন হবে এবং সেখানই আমারদের প্রোগ্রাম এর Output দেখাবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r4v7zd9idctvpf1vbi4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r4v7zd9idctvpf1vbi4.png" alt="Step 6" width="800" height="837"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;অতপর সফল ভাবে প্রথম প্রোগ্রাম রান করতে পেরেছি। &lt;/p&gt;

&lt;p&gt;আজ এই পর্যন্তই কোন কিছু বুঝতে অসুবিধা হলে অবশ্যই জানাবেন।&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Python Environment Setup Part-02</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Mon, 23 Oct 2023 10:28:10 +0000</pubDate>
      <link>https://forem.com/mislam-dev/python-environment-setup-part-02-4b7l</link>
      <guid>https://forem.com/mislam-dev/python-environment-setup-part-02-4b7l</guid>
      <description>&lt;p&gt;Environment Setup বলতে আমাদের system কে পাইথন কোড লেখা ও রান করা উপযুক্ত করে তোলাকে বোঝানো হয়েছে। &lt;/p&gt;

&lt;p&gt;Environment Setup করতে ২টা জিনিসের প্রয়োজনঃ &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python Interpreter&lt;/li&gt;
&lt;li&gt;Code editor বা IDE (Integrated Development Environment)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Interpreter Setup
&lt;/h2&gt;

&lt;p&gt;পাইথন interpreter, install করা খুব সহজ। পাইথন কে ইন্সটল করতে নিচের step গুলো অনুসরন করুনঃ &lt;/p&gt;

&lt;p&gt;১। প্রথমে &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;https://www.python.org/&lt;/a&gt; অথবা এই &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;লিঙ্ক&lt;/a&gt;-এ  প্রবেশ করতে হবে। প্রবেশ করলে নিচের মত একটা ভিউ দেখতে পাবেন।&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91y7dsnm0gjhsorioi39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91y7dsnm0gjhsorioi39.png" alt="Python Env Setup" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;২। এরপর &lt;code&gt;Download&lt;/code&gt; এ click করতে হবে। [নিচের চিত্রে মত ]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsib6pe9smssil9tcx3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsib6pe9smssil9tcx3e.png" alt="Python Env Setup" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;৩। &lt;code&gt;Download Python 3.12.0&lt;/code&gt; বাটনে click করতে হবে। সাথে  সাথেই পাইথন download হতে থাকবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqa7eq6w3knuqxhle27r3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqa7eq6w3knuqxhle27r3.png" alt="Python Env Setup" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;বিঃদ্রঃ Download এর সময় internet speed এর উপর নির্ভশীল।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;৪। পাইথন download শেষ হয়ে গেলে। ফাইল ম্যানেজার থেকে উক্ত ফাইল টিকে ওপেন করতে হবে।  Open করার পর নিচের মত একটা window ওপেন হবে। এখানে থেকে &lt;code&gt;Add python.exe to path&lt;/code&gt; এ সিলেক্ট করতে হবে। তারপর &lt;code&gt;install now&lt;/code&gt; তে click করতে হবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7rz056320gsx5ji7zgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7rz056320gsx5ji7zgs.png" alt="Python Env Setup" width="650" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;এরপর পাইথন install হতে থাকবে &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg9szeeb4lmwot6epybv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg9szeeb4lmwot6epybv.png" alt="Python Env Setup" width="652" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setup শেষ হলে নিচে মত একটা &lt;code&gt;successfull&lt;/code&gt; window দেখাবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklxw3gz2dj9fsro1lyir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklxw3gz2dj9fsro1lyir.png" alt="Python Env Setup" width="650" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;পাইথন install করা শেষ। চেক করা করার জন্য cmd  ওপেন করে &lt;code&gt;python --version&lt;/code&gt; লিখে &lt;code&gt;enter&lt;/code&gt; বাটনে click করুন। যদি নিচের মত output আসে তাহলে পাইথন &lt;code&gt;install&lt;/code&gt; সঠিক ভাবে হয়েছে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fesi0j5g0mrzkz63cm769.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fesi0j5g0mrzkz63cm769.png" alt="Python Env Setup" width="439" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Editor Setup
&lt;/h2&gt;

&lt;p&gt;বিগিনারদের জন্য &lt;code&gt;Pycharm&lt;/code&gt; code editor (it’s an IDE) সবচেয়ে সেরা। এখানে অনেক কিছুই বিল্টইন দেওয়া থাকে। &lt;/p&gt;

&lt;p&gt;Pycharm &lt;code&gt;install&lt;/code&gt; করতে নিচের step গুলো অনুসরন করুনঃ &lt;/p&gt;

&lt;p&gt;১। প্রথমে এই  লিঙ্ক-এ প্রবেশ করলে নিচের মত একটা ভিউ আসবে&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih6qxc416ywfpsf6tul1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih6qxc416ywfpsf6tul1.png" alt="Python Env Setup" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;তারপর &lt;code&gt;2022.2.2 - Windows (exe)&lt;/code&gt; click করলে &lt;code&gt;pycharm&lt;/code&gt; download হওয়া শুরু হবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbq2nt59j2slll3dzz7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbq2nt59j2slll3dzz7x.png" alt="Python Env Setup" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;বিঃদ্রঃ Download এর সময় internet speed এর উপর নির্ভশীল।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;২। &lt;code&gt;Download&lt;/code&gt; হওয়ার পর &lt;code&gt;File manager&lt;/code&gt; open করতে হবে। নিচের মত window আসবে। এবার next এ ক্লিক করতে হবে।&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6im3osb3h34sprjacr0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6im3osb3h34sprjacr0p.png" alt="Python Env Setup" width="503" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkna9w3xbplfcbr7stib4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkna9w3xbplfcbr7stib4.png" alt="Python Env Setup" width="505" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;২। এরপর নিচের মত window আসলে । ছবির মত সব configuration রেখে next ক্লিক করতে হবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focy72a21d2da425jnpif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Focy72a21d2da425jnpif.png" alt="Python Env Setup" width="502" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkins17vmxez8ehf0fily.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkins17vmxez8ehf0fily.png" alt="Python Env Setup" width="502" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;৩। এরপর এই window আসলে নিচের মত আসলে cancel বাটনে ক্লিক করতে হবে। তারপর  &lt;code&gt;pycharm&lt;/code&gt; install হতে কিছু সময় নিবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo03u6fxwog1ncousycf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo03u6fxwog1ncousycf3.png" alt="Python Env Setup" width="501" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm2fptimogwksugvprpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm2fptimogwksugvprpb.png" alt="Python Env Setup" width="498" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;৪। &lt;code&gt;Pycharm&lt;/code&gt; install হওয়ার পর নিচের মত একটা window আসবে। নিচের মত configuration করে finish বাটন এ ক্লিক করতে হবে। &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchk01gyb2yepccluj1m6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchk01gyb2yepccluj1m6.png" alt="Python Env Setup" width="497" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;৫। এরপর Computer কে Restart করতে হবে। &lt;/p&gt;

&lt;p&gt;এখন python কোড রান করার জন্য আমাদের সিস্টেম Ready. &lt;/p&gt;

&lt;h2&gt;
  
  
  শেষ
&lt;/h2&gt;

&lt;p&gt;আপনি চাইলে pycharm বাদে অন্য যেকোন editor যেমন, vs code , sublime ইত্যাদি ব্যবহার করতে পারেন। &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;সব কিছু সুন্দর ভাবে বোঝানোর জন্য আমার সিস্টেম-এ  install থাকা python uninstall করে নতুন করে install করেছি।&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;আপনার মতামত অবশ্যই জানাবেন। &lt;/p&gt;

&lt;p&gt;ধন্যবাদ এতক্ষন সাথে থাকার জন্য।&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introduction to Python Part-1</title>
      <dc:creator>Monirul Islam</dc:creator>
      <pubDate>Mon, 23 Oct 2023 04:56:57 +0000</pubDate>
      <link>https://forem.com/mislam-dev/-introduction-to-python-part-1-13m4</link>
      <guid>https://forem.com/mislam-dev/-introduction-to-python-part-1-13m4</guid>
      <description>&lt;h2&gt;
  
  
  শুরু
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Simplicity is the best&lt;/code&gt; আপনি যদি এই উক্তিটি ফলো করেন তাহলে পাইথন প্রোগ্রামিং লাংগুয়েজ আপনার জন্য। &lt;/p&gt;

&lt;p&gt;পাইথন একটি বহুল ব্যবহৃত general purpose এবং high level language। ১৯৯১ সালে &lt;code&gt;Guido van Rossum&lt;/code&gt; পাইথন উদ্ভাবন করেন। প্রথম দিকে তিনি পাইথনের কোড মেইনটেন্যান্স করতেন কিন্তু পরবর্তী &lt;code&gt;Python Software Foundation&lt;/code&gt; পাইথনের সকল কিছু নিয়ন্ত্রন করে। &lt;/p&gt;

&lt;h2&gt;
  
  
  পাইথন কেন?
&lt;/h2&gt;

&lt;p&gt;পাইথন ল্যাঙ্গুয়েজ কি জন্য এসেছে সেটা যদি জানতে হলে  তার আগে জানতে হবে , ওই সময়ে বিদ্যমান থাকা প্রোগ্রামিং ল্যাঙ্গুয়েজ। যখন সি প্রোগ্রামিং ল্যাঙ্গুয়েজ মার্কেটে আসে এবং সেটা কম্পিউটার সাইন্স এক ধরনের revolution বলা যেতে পারে কারণ  এর আগে যেসব প্রোগ্রামিং ল্যাঙ্গুয়েজ বিদ্যমান ছিল সেগুলো অনেক লো লেভেলে কাজ করতো। প্রোগ্রামের প্রোগ্রামিং করতে অনেক সমস্যা হতে হতো । C  আসার পরে এসকল সমস্যা অনেকাংশে সমাধান হয়ে গেছে। &lt;/p&gt;

&lt;p&gt;সি প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে কোন সমস্যা সমাধান করতে গেলে তা অনেক সময় লেগে যেত যা একজন প্রোগ্রামারের সময় নষ্ট করত।  এজন্য C এর সকল Feature আর নতুন কিছু Feature, এক করে  C++ উদ্ভাবন করা হয়।  C++-এ অনেক নতুন নতুন feature সংযুক্ত করা হয়।  কিন্তু C++ -এ C এর মত অনেক কোড লেখা লাগত আর developer friendly ও ছিল না। একজনের লেখা কোড অন্য জনের বুঝতে একটু সময় লেগে যেত। &lt;/p&gt;

&lt;p&gt;এই সমস্যাটা সমাধান করার জন্যই পাইথন উদ্ভাবন করেছিলেন। পাইথন কে ডেভেলভ করা মূল উদ্দেশ্য ছিল  ডেভলপার ফ্রেন্ডলি করা। সহজ সহজ সিনট্যাক্স ব্যবহার করা। কম কোড করে  বড় বড় সমস্যার সমাধান করা। &lt;/p&gt;

&lt;h2&gt;
  
  
  পাইথনের বৈশিষ্ট্য
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interpreted:&lt;/strong&gt; পাইথন একটি Interpreted ল্যাঙ্গুয়েজ। যার কারনে কোডকে খুব সহজে  রান যায়। সরাসরি সোর্স কোড থেকে রান হওয়ার হয়। কম্পাইল করার প্রয়োজন হয় না।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;প্লাটফর্ম অনির্ভশীলতাঃ&lt;/strong&gt;  যেকোন প্লাটফর্ম (windows , linux , mac etc) -এ পাইথন ব্যবহার করা যায়। পাইথন Interpreter সোর্স কোডকে প্রথমে বাইট কোডে রুপান্তর কর। তারপর  Machine এর জন্য Native machine কোড-এ রুপান্তর করে।&lt;/li&gt;
&lt;li&gt;ওপেন সোর্সঃ পাইথন সবার জন্য উন্মুক্ত। আপনার যথেষ্ট knowledge এবং Skill থাকলে আপনি Python এ contribute করতে পারবেন।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Level:&lt;/strong&gt; পাইথন মেশিনের অনেক উপরে থেকে কাজ করে। পাইথন হাই লেভেল হওয়ায় অল্প কোড  লিখে বড় বড় সমস্যার সমাধান করা যায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ব্যবহার ক্ষেত্র
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Web Development&lt;/li&gt;
&lt;li&gt;Software Development&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/li&gt;
&lt;li&gt;AI (Artificial Intelligence)&lt;/li&gt;
&lt;li&gt;Data Science&lt;/li&gt;
&lt;li&gt;Desktop Application Development&lt;/li&gt;
&lt;li&gt;Console Application etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উপরেরর ক্ষেত্র গুলো ছাড়াও অনেক কাজে পাইথন ব্যবহার করা হয়। তবে এসবে ভিতর থেকে Machine Learning , AI এবং Data Science এর জন্য পাইথন সেরা। কারন এখানে অনেক কোড লেখার প্রয়োজন হয় যদি পাইথন ব্যবহার না করে অন্য কোন language ব্যবহার করেন। &lt;/p&gt;

&lt;h2&gt;
  
  
  পাইথনে অসুবিধা
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;পাইথনের সবচেয়ে বড় অসুবিধা হচ্ছে কোড রান হতে C , C++ এর তুলনায় বেশি সময় নেই।&lt;/li&gt;
&lt;li&gt;ব্লক তৈরি করতে  কোড-এ Indentation (1 tab or 4 space) ব্যবহার করতে হয়। নতুবা হলে Error রিটার্ন করবে।&lt;/li&gt;
&lt;li&gt;কোড রান করতে অনেক মেমরীর প্রয়োজন হয়।&lt;/li&gt;
&lt;li&gt;প্যাকেজ ম্যানেজ করা অন্যান্য language এর তুলনায় অনেক কঠিন।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;পাইথনের কোড অনেক সময় নেয়, যে কারনে backend development  সেরা পছন্দ না। তাছাড়া যেখানে অ্যাপ্লিকেশান এর speed প্রথম priority থাকে সেখানে python suitable না। &lt;/p&gt;

&lt;h2&gt;
  
  
  শেষ
&lt;/h2&gt;

&lt;p&gt;পরিশেষে একটা কথাই বলব, Python (language) is python (Snake)। কারন Python সাপের মত python language  খুবই শক্তিশালি এবং বিশাক্ত।&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
