হার্ডওয়্যার এবং সফটওয়্যার (Hardware & Software)
    কম্পিউটারের সে সকল অংশ আমরা দেখতে পারি, ছুঁতে পারি অর্থা যন্ত্রাংশ সমূহকে হার্ডওয়্যার বলা হয়। যেমন-
Monitor, Keyboard, Mouse, Mother Board, VGA Card, Hard Disk, Floppy Disk, Magnetic Tape, CD-ROM, DVD-ROM, Sound Card ইত্যাদি। আর সফটওয়্যার হচ্ছে কম্পিউটারের সুবিন্নস্ত কমান্ড বা প্রোগ্রাম সমূহ যার মাধ্যমে আমরা সুনির্দিষ্ট কোনো কাজ সম্পন্ন করতে পারি। সহজভাবে বলতে গেলে সফটওয়্যার হচ্ছে কম্পিউটারের সে সমস্ত জিনিস যাদের আমরা দেখতে পারি না, ছুঁতে পারি না কিন্তু কোনো কাজ করতে গেলে বা কোনো প্রোগ্রাম চালাতে গেলে তার অস্তিত্ব বুঝতে পারি তাদেরকে সফটওয়্যার বলে

🔘    সফটওয়্যার সমূহকে (তিন) ভাগে ভাগ করা যায়ঃ
        ) সিস্টেম সফটওয়্যার (System Software)
        ) ব্যবহারিক সফটওয়্যার (Application Software)
        ) ভাষা সফটওয়্যার (Language Software)












    সিস্টেম সফটওয়্যার (System Software)

যে সকল সফটওয়্যার কম্পিউটার ব্যবহারকারীর মধ্যে সেতু বন্ধন অর্থা কম্পিউটার চালাতে ব্যবহারকারীর নির্দেশ অনুযায়ী কাজ করতে সহায়তা করে তাদেরকে সিস্টেম সফটওয়্যার বলে। সিস্টেম সফটওয়্যারের মধ্যে কম্পিউটার নির্দেশাবলী সুবিন্নস্তভাবে সাজানো থাকে। 




সিস্টেম সফটওয়্যারকে (ছয়) ভাগে ভাগ করা যায়ঃ 

) অনুবাদক প্রোগাম (Translate Program)
) লাইব্রেরী প্রোগ্রাম (Library Program) 
) ইউটিলিটি প্রোগ্রাম (Utility Program) 
) লোডার প্রোগ্রাম (Loader Program) 
ত্রুটি নির্দেশক প্রোগ্রাম (Diagnostic Program) 
) অপারেটিং সিস্টেম (Operating System) 


)   অনুবাদক প্রোগাম (Translate Program)

আমরা জানি, কম্পিউটার এবং ছাড়া কিছু বোঝে না। তাই আমরা যাই লিখি বা বলি না কেন কম্পিউটার তা বাইনারী পদ্ধতিতে বা যান্ত্রিক ভাষায় রূপান্তরিত করে বুঝে নিয়ে, আমাদের নির্দেশ মতো কাজগুলো সম্পন্ন করে। আমাদের নির্দেশাবলী বা কাজ রূপান্তরিত করার জন্য যে সকল প্রোগ্রাম সহযোগিতা করে তাদের অনুবাদক প্রোগাম বলে। অনুবাদক প্রোগ্রামের কার্য পদ্ধতি অনুসারে অনুবাদক প্রোগ্রামকে (তিন) ভাগে ভাগ করা যায়-



i) অ্যাসেম্বলার (Assembler) 
ii) কম্পাইলার (Compiler) 
iii) ইন্টারপ্রেটর (Interpreter) 


)     লাইব্রেরী প্রোগ্রাম (Library Program) 

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




)    ইউটিলিটি প্রোগ্রাম (Utility Program) 

ব্যবহারিক প্রোগ্রাম তৈরি সেই সকল প্রোগ্রামের ভূল ত্রুটি সংশোধন সহায়তা করাই ইউটিলিটি প্রোগ্রামের প্রধান কাজ। ইউটিলিটি প্রোগ্রাম বিভিন্ন ধরনের হয়ে থাকে। Editor Program ব্যবহারিক প্রোগ্রাম তৈরীর ক্ষেত্রে নতুন কিছু সংযোজন, বর্জন পরিবর্তন ইত্যাদি কাজে সহায়তা করে। আর Debugging Program তৈরীকৃত ব্যবহারিক প্রোগ্রামের ভুল ত্রুটি সংশোধন করতে সহায়তা করে। ইউটিলিটি প্রোগ্রাম মূলত বিশেষ সহায়ক প্রোগ্রাম। কম্পিউটার প্রস্তুতকারী প্রতিষ্ঠান এই ধরনের প্রোগ্রাম তৈরি করেন এবং ইহা সহায়ক স্মৃতিতে সংরক্ষিত থাকে। 



)     লোডার প্রোগ্রাম (Loader Program) 

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





)      ত্রুটি নির্দেশক প্রোগ্রাম (Diagnostic Program) 

ত্রুটি নির্দেশক প্রোগ্রাম কম্পিউটারের কোনো যন্ত্রাংশে কোনো প্রকার ত্রুটি আছে কিনা তা খুঁজে বের করতে সহায়তা করে। 

)       অপারেটিং সিস্টেম (Operating System) 

অপারেটিং সিস্টেম কম্পিউটারের যাবতীয় কাজ নিয়ন্ত্রণ করে থাকে। এই সকল প্রোগ্রামের মাধ্যমে মূলতঃ ব্যবহারকারী মেশিনের মধ্যে সেতু বন্ধন রচিত হয়। কম্পিউটার কিভাবে চলবে, অর্থা কম্পিউটার ইনপুট হতে কিভাবে ডাটা গ্রহণ করবে, ডাটা গ্রহণ করে কি কাজ করবে, তার ফলাফল কি হবে, আউটপুটে কিভাবে ফলাফল প্রদর্শন করবে ইত্যাদি যন্ত্রাংশ এবং সাথে সংযুক্ত কী বোর্ড, মাউস, মনিটর, ডিস্ক ড্রাইভ, প্রিন্টার ইত্যাদির মধ্যে সহ বিভিন্ন প্রোগ্রাম চালানোর কাজে সহায়তা করে। মূলতঃ অপারেটিং সিস্টেম হচ্ছে অনেকগুলো সুবিন্নস্ত প্রোগ্রামের সমষ্টি এবং এটি কম্পিউটারের একটি অবিচ্ছেদ্য অংশ। কম্পিউটার পরিচালনার জন্য বর্তমানে বিভিন্ন ধরনের অপারেটিং সিস্টেম ব্যবহৃত হচ্ছে। যেমন- DOS, WINDOWS, WINDOWS NT, OS-WARP, LAN, NOVEL, UNIX ইত্যাদি। 


২।      ব্যবহারিক সফটওয়্যার (Application Software)

কম্পিউটার ব্যবহারকারী ব্যবহারিক কাজে বিভিন্ন প্রয়োজনে যে সকল সফটওয়্যার ব্যবহার করে থাকেন তাদেরকে ব্যবহারিক সফটওয়্যার বলে। বিভিন্ন প্যাকেজ প্রোগ্রাম, ইউটিলিটি প্রোগ্রাম, বিনোদনের জন্য বিভিন্ন গেইম ইত্যাদি ব্যবহারিক সফটওয়্যারের মধ্যে পরে। যেমন- MS Word, MS Excel, Fox pro, Anti Virus Program ইত্যাদি। 

৩।       ভাষা সফটওয়্যার (Language Software)

কম্পিউটারের বিভিন্ন সফটওয়্যার তৈরির জন্য যে সকল সফটওয়্যার ব্যবহার করা হয় তাদেরকে Language Software বলে। Language Software হচ্ছে বিভিন্ন কোড, সংকেত বা নির্দেশাবলী যা কম্পিউটার বুঝে এবং সেই অনুসারে কাজ সম্পন্ন করে থাকে। 

Language Software কে আবার (তিন) ভাগে ভাগ করা যায়। যেমনঃ

) নিম্ন স্তরের ভাষা (Low Level Language)
) অ্যাসেম্বলি ভাষা (Assembly Language)

) উচ্চ স্তরের ভাষা (High Level Language)



) নিম্ন স্তরের ভাষা (Low Level Language)

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


) অ্যাসেম্বলি ভাষা (Assembly Language) 

যান্ত্রিক ভাষায় প্রোগ্রাম রচনার সমস্যা কাটিয়ে উঠার জন্য ১৯৫০ সাল থেকে অ্যাসেম্বলি ভাষার ব্যবহার শুরু হয়। এই ভাষায়এবং 1 এর পরিবর্তে কিছু সাংকেতিক সংকেত বা কোড ব্যবহার করা হয়। এই জন্য ভাষা সাংকেতিক ভাষা হিসাবেও পরিচিত। ভাষায় কয়েকটি বিট নিয়ে গঠিত নির্দেশ, ইহাতে শব্দের পরিবর্তে বিশেষ সংকেত ব্যবহৃত হয়। এই প্রোগ্রামকে যান্ত্রিক ভাষায় রূপান্তরের জন্য অনুবাদকের জন্য প্রয়োজন হয়। 

) উচ্চ স্তরের ভাষা (High Level Language) 

এই ভাষায় নিম্ন স্তরের ভাষা বা অ্যাসেম্বলি ভাষার ন্যায় জটিল নয়। এই স্তরের ভাষা অনেকটা আমাদের প্রচলিত ইংরেজি ভাষার ন্যায়। যা আমরা সচরাচর ব্যবহার করে থাকি এবং বুঝতে পারি। এখানে কোনো ধরনের কোড বা সংকেত ব্যবহার করা হয় না বলে বেশ সহজ। জাতীয় ভাষায় লেখা প্রোগ্রাম সামান্য রদবদল করে এক কম্পিউটার হতে অন্য কম্পিউটারে ব্যবহার করা যায়। এই প্রোগ্রামকে অনুবাদ করার জন্য কম্পাইলার প্রোগ্রামের প্রয়োজন হয়। যেমন- Basic, QBasic, C++, Pascal, Java, GW,-Basic, Visual Basic, Viusal C, C# ইত্যাদি