Tarakilishi
Kompyuta haiwezi kufanya kazi mpaka kipatikane kitu kinachoitwa software, ambacho kinawakilisha programu zinazoendesha kompyuta. Programu hizo zimegawanyika katika sehemu kuu mbili:
Programming paradigm
Programming paradigm haiainishwi na lugha ya kutengeneza programu za kompuyta (programming language) tu. Karibu na lugha zote za kutengeneza programu za kompuyta za kisasa zinakubalia matumizi ya paradigms mbalimbali. Kwa mfano lugha ya C isiyo object-oriented inakubalia kutumiwa kufuatana na kanuni za object-oriented programming ingawa itakuwa na matatizo kadhaa. Functional programming inawezekana kutumiwa katika lugha yo yote ya imperative inayo functions na kadhalika.