Proceduralny, obiektowy? A może strukturalny?

Czym tak naprawdę różnią się te wersje języków? W proceduralnych językach programowania cały kod był podzielony na mniejsze bloki (procedury i funkcje), które wywoływane przez program główny wykonywały swój kawałek kodu zwracając odpowiedni wynik. Języki strukturowe to rozszerzenia języków proceduralnych, w których kod dzielony jest na moduły, na które składają się pętle i instrukcje warunkowe, zalecane w programowaniu strukturalnym. Z kolei języki obiektowe nie są dzielone na procedury, do których odwołujemy się z głównego bloku. Cały program pisany jest w jednym bloku z odwołaniem do obiektów i klas. Najczęściej języki obiektowe umożliwiają pisane proceduralne, jednak zachęcają do pisania obiektowo poprzez zbliżony do naszego mózgu sposób odwoływania. Stąd łatwiej programuje się obiektowo, prościej ogarnąć większe programy.