Dato che la definizione di programmazione per computer è così ampia e l’uso di programmi così pervasivo, in realtà esistono molti tipi di programmazione per computer, spesso definiti in modi completamente diversi. I tipi più elementari di programmazione per computer possono essere suddivisi in base al linguaggio di programmazione, come C, Lisp o Java®, utilizzato dal programmatore. In altri contesti, potrebbero esserci solo due tipi di programmazione per computer: sistema e applicazione. Vengono fatte alcune distinzioni tra programmazione di rete, programmazione basata sul web e programmazione desktop. I diversi tipi di programmazione a volte possono essere separati dalla piattaforma di destinazione, come la programmazione di sistemi embedded, la programmazione di sistemi in tempo reale (RTS) o la programmazione di database.
I diversi tipi di programmazione del computer spesso sono definiti dal linguaggio utilizzato per scrivere il software. Sono disponibili molti linguaggi, ma generalmente rientrano in linguaggi strutturati come C o linguaggi orientati agli oggetti come Java®, entrambi comunemente utilizzati dai professionisti per compiti diversi. Anche i linguaggi possono essere imperativi, come quelli citati in precedenza, o funzionali, come il Lisp, in cui i programmi sono costituiti da una serie di funzioni anziché da comandi. Alcuni programmi di computer vengono eseguiti esclusivamente con linguaggi di scripting, che sono documenti leggibili interpretati dall’uomo che eseguono operazioni all’interno di un altro framework.
Tradizionalmente c’è stata una distinzione tra due grandi tipi di programmazione per computer. Il primo è la programmazione di applicazioni e prevede la scrittura di programmi che possono essere utilizzati direttamente per alcune funzioni. In alternativa, c’è la programmazione di sistema, che cerca di progettare programmi per la gestione di hardware o framework in cui possono essere eseguite applicazioni, come i sistemi operativi.
Poiché la tecnologia per il networking e le comunicazioni remote è diventata più ampiamente utilizzata, alcuni tipi di programmazione hanno iniziato a distinguersi dagli altri campi della programmazione informatica. La programmazione di rete è considerata diversa a causa della conoscenza richiesta dei protocolli di rete e delle interfacce hardware. La programmazione di applicazioni o server basati sul Web richiede una conoscenza specifica delle restrizioni di sicurezza, dei protocolli Internet e dei modelli di progettazione di programmazione univoci.
Esistono anche tipi di programmazione per computer specifici per un determinato campo o hardware di destinazione. La programmazione del database implica l’utilizzo di linguaggi di query speciali, script e altri elementi per interagire con infrastrutture di database specifiche. La programmazione di giochi implica la conoscenza dell’hardware grafico, degli algoritmi grafici e talvolta di tecniche di ottimizzazione speciali. I sistemi integrati, come i dispositivi palmari o le console, possono comportare specifiche hardware uniche e la conoscenza delle librerie dei fornitori. La programmazione del sistema in tempo reale più avanzata può comportare la scrittura di software di controllo fail-safe per centrali nucleari o hardware militare.