ইলেক্ট্রনীয় গণকযন্ত্র বা কম্পিউটারের বিভিন্ন অংশকে কর্মোপযোগী করা, একে পরিচালনা করা এবং একে দিয়ে কোনও বিশেষ ব্যবহারিক কাজ সম্পন্ন করার উদ্দেশ্যে যে বিভিন্ন নির্দেশনাক্রম তথা প্রোগ্রাম এবং পুনর্ব্যবহারযোগ্য নির্দেশনাক্রম তথা রুটিন বা ফাংশন ব্যবহার করা হয় (যাদের মধ্যে কম্পিউটারের পরিচালক ব্যবস্থা বা অপারেটিং সিস্টেম অন্তর্ভুক্ত), তাদের সবগুলিকে একত্রে সাধারণভাবে সফটওয়্যার (ইংরেজি: software) বা নির্দেশনাসামগ্রী বলা হয়।
সফটওয়্যারের ইতিহাস শুরু হয়েছিল প্রথম কম্পিউটার দ্বারা যা ছিল ১৯৫০-এর দশকের। এটি ব্যবহার করত লিঙ্কার, লোডার এবং নিয়ন্ত্রণ প্রোগ্রামগুলো। এটি জনপ্রিয় হয় ইউনিক্স-এর মাধ্যমে ১৯৭০-এর দশকে যেখানে গ্রিপ, এডব্লউকে, এবং মেক ব্যবহার করা হত। সফটওয়্যার টুল বা প্রোগ্রাম টার্মটি আসে ব্রায়ান কার্নিগান এবং পি. জে. প্লাজার-এর বই থেকে। এগুলো ছিল সত্যিকার অর্থে সাধারণ এবং ঝামেলাহীন। কিছু কিছু রক্ষণাবেক্ষণ করার সাথে সাথে এগুলো আবার একই সঙ্গে শক্তিশালী উন্নয়নকাজে ব্যবহার করা হত।
সফ্টওয়্যার হ'ল প্রসেসরের মাধ্যমে সম্পাদনের জন্য সঞ্চিত প্রোগ্রাম ডিজিটাল কম্পিউটারগুলির স্মৃতিতে সঞ্চিত প্রোগ্রামযুক্ত নির্দেশাবলীর একটি সেট। সফ্টওয়্যার হ'ল মানব ইতিহাসের সাম্প্রতিক বিকাশ এবং এটি তথ্য যুগের জন্য মৌলিক।

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

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

সঞ্চিত-প্রোগ্রামের আগে ডিজিটাল কম্পিউটার
----------------------------------------

### কম্পিউটার বিজ্ঞানের উৎস

আরও দেখুন: কম্পিউটার বিজ্ঞানের ইতিহাস

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

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

মেশিনের নির্দেশের জন্য বার্নোল্লি নাম্বারে লুইজি মেনাব্রেয়ার কাজ অনুবাদ করার জন্য, বিশ্লেষণাত্মক ইঞ্জিনের জন্য 19 ম শতাব্দীতে অ্যাডা লাভলেস লিখেছিলেন প্রথম জানা কম্পিউটার অ্যালগরিদম তবে এটি কেবল তাত্ত্বিকই থেকে গেল - এই দুই গণিতবিদদের জীবদ্দশায় ইঞ্জিনিয়ারিংয়ের কম রাজ্য বিশ্লেষণাত্মক ইঞ্জিনটি নির্মাণে অপর্যাপ্ত প্রমাণিত হয়েছিল।

অ্যালান টুরিং তার প্রথম ১৯৩৫ সালের প্রবন্ধের কমপ্যাটেবল সংখ্যায় এনটসিডেংস্প্রোব্লিমের (সিদ্ধান্তের সমস্যা) প্রয়োগের জন্য সফ্টওয়্যারটির প্রথম আধুনিক তত্ত্বটি প্রস্তাব করেছিলেন। 

গ্রেস হপার এবং ইউ.এন.আই.ভি.এ.সি.
এর ফলে শেষ পর্যন্ত কম্পিউটার বিজ্ঞান এবং সফটওয়্যার ইঞ্জিনিয়ারিংয়ের দুটি যুগের একাডেমিক ক্ষেত্র তৈরি হয়েছিল, যা সফ্টওয়্যার এবং এর সৃষ্টি উভয়ই অধ্যয়ন করে। কম্পিউটার বিজ্ঞান অধিকতর তাত্ত্বিক (টুরিংয়ের প্রবন্ধটি কম্পিউটার বিজ্ঞানের উদাহরণ), যেখানে সফ্টওয়্যার ইঞ্জিনিয়ারিং আরও ব্যবহারিক উদ্বেগের দিকে দৃষ্টি নিবদ্ধ করে।
যাইহোক, ১৯৪৬ সালের এর আগে, সফ্টওয়্যার যেমনটি আমরা এখন এটি বুঝতে পারি - সঞ্চিত প্রোগ্রাম ডিজিটাল কম্পিউটারগুলির স্মৃতিতে সঞ্চিত প্রোগ্রামগুলি এখনও বিদ্যমান ছিল না। প্রথম "ইলেক্ট্রনিক কম্পিউটিং ডিভাইসগুলির পরিবর্তে সেগুলিকে পুনরায় প্রোগ্রাম করতে" পুনরায় প্রোগ্রাম করা হয়েছিল। প্রথম ইলেকট্রনিক কম্পিউটারগুলির মধ্যে একটি, এএনআইএসি হ'ল পূর্বে মানব কম্পিউটার হিসাবে কাজ করে এমন মহিলারা প্রোগ্রাম করেছিলেন। ইঞ্জিনিয়াররা প্রোগ্রামারগুলিকে ENIAC তারের ব্লুপ্রিন্ট দিত এবং তারা মেশিনটিকে কীভাবে প্রোগ্রাম করবেন তা নির্ধারণ করার প্রত্যাশা করেছিল। প্রোগ্রামার হিসাবে কাজ করা মহিলারা এএনআইএএসিটিকে প্রথম প্রকাশ্যে প্রকাশের জন্য অগ্রণী ভূমিকা নিয়েছিল, বিক্ষোভের জন্য প্যাচ প্যানেলগুলি একসাথে তারযুক্ত করেছিল। ১৯৮০ সালে বার্কবেক কলেজে যে কম্পিউটারে তিনি কাজ করেছিলেন তার কম্পিউটার প্রোগ্রামিংকে আরও সহজ করার জন্য ক্যাথলিন বুথ ১৯৩০ সালে অ্যাসেম্বলি ল্যাঙ্গুয়েজ তৈরি করেছিলেন।

তথ্যসূত্র
---------

1. ↑  *Ancient Discoveries, Episode 11: Ancient Robots*, History Channel, মার্চ ১, ২০১৪ তারিখে মূল থেকে আর্কাইভ করা, সংগ্রহের তারিখ ২০০৮-০৯-০৬ উদ্ধৃতি টেমপ্লেট ইংরেজি প্যারামিটার ব্যবহার করেছে (link)
2. ↑  Hally, Mike (২০০৫)। *Electronic brains/Stories from the dawn of the computer age*। London: British Broadcasting Corporation and Granta Books। পৃষ্ঠা 79। আইএসবিএন 1-86207-663-4।