Софтуерът е набор от компютърни програми и свързаната с тях документация и данни. Това е в контраст с хардуера , от който е изградена системата и който всъщност изпълнява работата.

На най-ниското ниво на програмиране изпълнимият код се състои от инструкции на машинен език , поддържани от отделен процесор — обикновено централен процесор (CPU) или графичен процесор (GPU) . Машинният език се състои от групи от двоични стойности , означаващи инструкции на процесора , които променят състоянието на компютъра от предходното му състояние. Например, една инструкция може да промени стойността, съхранена в определено място за съхранение в компютъра - ефект, който не се наблюдава директно от потребителя. Една инструкция може също така да извика една от много операции за въвеждане или извеждане, например показване на някакъв текст на компютърен екран, причинявайки промени в състоянието, които трябва да бъдат видими за потребителя . Процесорът изпълнява инструкциите в реда, в който са предоставени, освен ако не е инструктиран да „прескочи" към друга инструкция или бъде прекъснат от операционната система. Към 2023 г. повечето персонални компютри , смартфон устройства и сървъри имат процесори с множество изпълнителни единици или множество процесори, извършващи изчисления заедно, така че изчисленията се превърнаха в много по- едновременна дейност, отколкото в миналото.

По-голямата част от безплатния софтуер е написан на езици за програмиране от високо ниво . Те са по-лесни и по-ефективни за програмистите, защото са по-близо до естествените езици , отколкото до машинните езици. Езиците от високо ниво се превеждат на машинен език с помощта на компилатор , интерпретатор или комбинация от двете. Софтуерът може също да бъде написан на асемблер от ниско ниво , който има силно съответствие с инструкциите на машинния език на компютъра и се превежда на машинен език с помощта на асемблер.