Systeemsoftware heeft een ware explosie gekend na 1965: teneinde een optimaal gebruik te maken van de nog zeer dure hardware gebruikte men meestal zeer complexe multiprogrammatie besturingssystemen die, voor performantieredenen volledig in assembler geschreven werden. Daar dergelijke programmatie techniek niet geschikt was om zeer grote programma's foutloos te verwezenlijken, en vele problemen inherent aan het beheer van multiprogrammatie nog niet helemaal begrepen werden, is het niet verrassend dat de besturingssystemen van de derde generatie eerder een slechte reputatie hadden qua betrouwbaarheid. Vooral bij interactief gebruik, wanneer uitbatingsincidenten rechtstreeks konden waargenomen worden door alle gebruikers, was deze situatie moeilijk aanvaardbaar. In dezelfde periode werden minicomputers meestal interactief, met vereenvoudigde vormen van multiprogrammatie, gebruikt voor zeer specifieke taken, zoals het sturen van industriële fabricatieprocessen of van complexe meetsystemen. In kleine bedrijven of in geïsoleerde afdelingen van grote bedrijven werden zij soms gebruikt als centrale computer, maar meestal was het besturingssysteem weinig aangepast voor dergelijk gebruik.
De derde generatie computers waren getuigen van een zeer diepe crisis op het vlak van de programmatie: Eerst probeerde men de zeer krachtige derde generatie computers te programmeren zoals men tweede generatie computers had geprogrammeerd. Deze benadering leidde echter tot het spectaculair mislukken van vele grote automatiseringsprojecten.
Dit deed vragen rijzen omtrent vele programmatie tradities en uiteindelijk kwamen er gans nieuwe programmeertechnieken (software engineering), ondersteund door nieuwe talen, uit de bus.
Teneinde de uitgebreide mogelijkheden van de nieuwe computers beter te benutten begon men met de bestaande programmeertalen uit te breiden (zo kreeg FORTRAN bijvoorbeeld nieuwe instructies om met schijfgeheugens te kunnen werken).
Er werden ook nieuwe talen ontworpen: BASIC voor het ontwikkelen van kleine programma's op time-sharing systemen, PL1 als een opvolger voor COBOL en FORTRAN om zowel administratieve als wetenschappelijke programma's te verwezenlijken en APL om time-sharing systemen te kunnen gebruiken als zeer krachtige programmeerbare tafelrekenmachines.
Tijdens de tweede generatie konden alleen maar relatief kleine programma's uitgevoerd worden. Deze programma's werden meestal in enkele dagen door één enkele persoon geschreven. Programmeerfouten waren bij dergelijke werkwijze geen echt probleem: wanneer er iets mis liep of wanneer resultaten ongeloofwaardig schenen las de auteur zijn programma eens aandachtig en vond hij de fout.
Het is dus niet verrassend dat programmeertalen uit die periode geen bijzondere voorzieningen bevatten om fouten te voorkomen en hun detectie te vergemakkelijken.
De software crisis.
Derde generatie computers konden reusachtige programma's aan. Dergelijke programma's konden echter niet meer door één enkele persoon in een redelijke tijd geschreven worden en ploegwerk drong zich op. Met meerdere programmeurs aan één enkel programma werken stelde echter veel organisatorische problemen en bleek een belangrijke bron van moeilijk te verbeteren fouten te zijn. Ambitieuze projecten die na veel werk opgegeven werden omdat het niet mogelijk bleek alle fouten uit de programma's te krijgen waren niet uitzonderlijk.
Daarbij kwam er een nieuw probleem opduiken: het onderhoud van de programma's. Tweede generatie programma's werden meestal gebruikt door hun auteurs, die ze, zonder al te veel moeite konden aanpassen wanneer de gebruiksomstandigheden evolueerden. De veel omvangrijkere programma's van de derde generatie daarentegen werden meestal gemaakt door programmeurs die weinig afwisten van de toepassingen en afgewerkte programma's afleverden aan de gebruikers die ze besteld hadden.
Dergelijke programma's vergden typisch veel onderhoud omdat ze niet perfect aangepast waren aan de wensen van hun gebruikers, en dat onderhoud was bijzonder duur en inefficiënt omdat de oorspronkelijke programmeerploeg meestal niet meer beschikbaar was voor het onderhoud. Ventilatie van kosten door organisaties die veel omvangrijke software ontwikkelden toonde aan dat 25% van de totale kost van een software produkt gespendeerd werd aan het testen en het verbeteren van fouten vóór de ingebruikname van de programma's en 50% aan hun onderhoud.
Deze cijfers betekenen in feite dat 75% van de totale softwarekost gespendeerd wordt aan het wijzigen van programma's. Deze vaststelling heeft aanleiding gegeven tot een nieuwe benadering van het programmeren: in plaats van het accent te leggen op vernuftige truukjes om programma's kleiner en/of sneller te maken werd voortaan prioriteit geschonken aan eenvoud, duidelijkheid en modulariteit teneinde de programma's beter verstaanbaar te maken en alzo de kansen op fouten te verminderen en het wijzigen door mensen die weinig vertrouwd zijn met de programma's mogelijk te maken.
Nieuwe programmeertalen, zoals Pascal, werden ontworpen om programmeurs aan te leren hoe ze correcte en eenvoudig te onderhouden programma's moesten schrijven. Bestaande programmeertalen zoals FORTRAN werden uitgebreid om het gebruik van de duidelijke constructies die door Pascal gepopulariseerd waren ook toe te laten.