С уточнението, че класификациите са много и темата е прекалено голяма ще опитам да спомена най-често изпозваните в практиката видове.
Видове програмиране по отношение на моделирането:
=================================================
Има няколко големи типа програмни парадигми, които са най-често срещани:
Императивно програмиране:
Това са типовете, които повечето учим като въвеждащи в програмирането. Накратко означава, че програмиста предлага стъпки за изчисления. Най-голяма част от използваните езици са императивни: C, C++, Java, Python, Lua, Ruby, Pascal, JavaScript, C#, ...
Функционално програмиране:
Занимава се основно с функции и много малко със състояния. Функциите са написани напълно в релация с входящите параметри и без състояния или странични ефекти. Те се наричат чисти (pure) функции. За дадено множество от входящи параметри имаме един и същ резултат (не зависещ и не променящ се от състояния). Езици задължаващи да се ползва такъв тип програмиране са: Haskell, Clojure, F#, Scala. Всички императивни езици могат да бъдат използвани по функционален начин, но те не задължават такова използване.
Декларативно програмиране:
В този тип езици се представя крайното състояние или казано по друг начин какво искаме да се случи, но не и как искаме да се случи. Езиците от този тип работят след стартиране на програмата, за да решат как да се достигне търсеното състояние. Езици ползващи декларативно програмиране са Prolog и Erlang.
Обектно ориентирано програмиране:
Има няколко ООП стила, които могат да бъдат допълнително дискутирани. Класическия клас/инстанция стил в ООП често е рефериран като Симула стил. C, C++, Ruby, Java, ... поддържат този стил. Стила Smalltalk също използва класове и инстанции, но вместо извикване на техни методи използва изпращане на съобщения. Една от основните разлики е, че невалидните съобщения могат също да бъдат манипулирани. Език използващ тази парадигма е Objective-C. Стила "прототип" не различава класове от инстанции. Прототипните обекти са просто именувани стойности. Едно име може да реферира функция, метод или стойност и може да бъде клонирано от други обекти. Езици използващи този стил са Javascript, Io, Lua.
По-детайлни описания има за тези и други има тук:
https://en.wikipedia.org/wiki/Programming_paradigm
Видове програмиране по отношение на продукта:
=============================================
Две гледни точки има тук:
http://hyperiondev.com/hub/software-development/10-different-types-software-development/
https://jamesmccaffrey.wordpress.com/2006/04/24/the-7-types-of-software-development/
Видове програмиране по отношение на клиента:
============================================
Системно програмиране - извършва се дейност свързана с поддръжка и разработване на драйвери, модификации на части от ОС, код подпомагащ достъп до периферия, виртуализация, сигурност, конфигуриране на стартирането, спирането и други важни състояния за системата
Разработване на фронт-енд - използват се умения за дизайн и разработване на потребителски интерфейс, компютърна графика, често употребявани контроли.
Разработване и поддръжка на бази данни - използване и конфигуриране на бази от данни, работа по сигурността.
Разработване на бек-енд компоненти - възможно е да ползва програмиране за бази данни, сигурност, конкурентно или разпределено програмиране, в някои случаи сигурност и познания по мрежи. Рядко се налага да работи с графични и други потребителски интерфейси.
Разработване на системи свързани с качеството - занимава се с валидация, проверка на процеси, съответстсвие с клиентски спецификации, автоматизация.