V počátcích počítačů software neexistoval - programovalo se hardwarově, pomocí kabelů nebo přestavováním celého počítače, a tam software neměl místo. První software neexistoval v počítačích, nýbrž u tkalcovských stavů. Software byl od hardwaru později oddělen. Programy byly uloženy na děrných páskách a štítcích a počítač je z nich načítal a rovnou prováděl. To mělo mnoho nevýhod, zvláště u rekurze, skoků a podprogramů - bylo nutno velké množství pásku přetočit, což zabralo mnoho času. O načítání celého programu před spuštěním do paměti se zasloužil především Neumann ve svých pravidlech, známých pod pojmem Von Neumannova koncepce nebo architektura.
Později se přišlo na to, že existence programu/ů ve vrstvě mezi aplikacemi a hardwarem by byla velice užitečná. Tak vznikly operační systémy. Nejprve byly závislé na počítači. Při vývoji nového počítače bylo nutno vyvinout také úplně nový operační systém, neb byly nepřenosné. Pak ale vzniky UNIX, operační systém naprogramovaný v jazyce C (a jazyk C byl naprogramován v UNIXu), který díky svému původu z vyššího programovacího jazyka přenosný byl. Díky tomu se velice rozšířil a dodnes se uplatňuje u výkonných počítačů v nejrůznějších mutacích. Byl upraven i pro osobní počítače. Od té doby se jak vyšší programovací jazyky, tak operační systémy ubíraly tímto směrem (přenositelnost).
Po zpřístupnění počítačů uživatelské veřejnosti vznikly uživatelsky zaměřené aplikace, jak je známe dnes. Předtím byly počítače určeny k vědeckým a vojenským výpočtům a předpokládalo se, že uživatel bude zároveň programátorem, často týmž, který aplikaci naprogramoval. Nikdo se tedy o žádné uživatelsky příjemné rozhraní nezajímal. Po pádu tohoto přístupu tedy nejen že programy dostaly hezčí „kabát“, ale zároveň začaly vznikat nevědecké aplikace - kancelářské programy, databáze, výukové programy, hry, různé utility a podobně.
Dalším převratným bodem v historii softwaru byl vznik nadstavbových programů. Jedná se o další vrstvu mezi programy a operačním systémem. Poskytují některé knihovny, převážně grafické, které zajišťují jednotné ovládání a vzhled programů a umožňují jejich zmenšení (knihovny jsou společné, není tedy potřeba, aby je měl každý program v sobě). Nadstavbové programy se někde udržely (Unix), někde se staly součástí operačního systému (Windows).