Resumo rápido:
Porque no mundo real, mais cedo ou mais tarde, você precisa trabalhar com código processual.
Como as Linguagens procedurais podem funcionar como uma extensão ou uma introdução às Linguagens orientadas a objetos, em vez de apenas serem uma alternativa.
Complemento à resposta 2. Como a POO é mais complexa que a Programação Procedimental, é melhor aprender a Programação Procedimental primeiro.
Porque no mundo real, os programadores trabalham e combinam várias maneiras de resolver problemas, também conhecido como "programação multiparadigmática", e não apenas um único paradigma.
A maioria das linguagens de programação é multiparadigm, em algum nível, mesmo que seus designers ou desenvolvedores comuns digam o contrário.
[NOVO] Como a Programação Modular, geralmente misturada e confusa com a Programação Procedimental, pode ser aplicada ao OOP. Portanto, a pergunta pode ser lida como "Por que devemos aprender programação Modular antes de aprender a programação orientada a objetos"?
Descrição Aborrecida Estendida:
O ponto 1 é muito claro, sem mais explicações.
Ponto 2, Classes, Herança, Polimorfismo, Interfaces, etc.
Ponto 3, eu codifico Pascal processual antes de aprender Pascal orientado a objetos, quando cheguei lá, eu disse: "olha, as classes são como pequenos programas processuais ... ... e você pode fazê-los conversar, legal !!! "
Ouvi o mesmo de pessoas que passaram do C para o C plus plus.
Ponto 4, na maioria das vezes os programadores combinam várias técnicas ou paradigmas de programação, ou maneiras de resolver um problema. Funcional, procedural, OOP, lógico.
Mesmo o Java "Pure OO" não é tão simples quanto a programação de objetos.
+1 ponto para dizer "Programação procedural" em vez de "Programação estruturada". Ou programação modular. Isso é importante.
Embora muitas vezes esses termos sejam ensinados juntos e usados de forma intercambiável, eles não são. Programação Estruturada, inclui muitos conceitos, não apenas usando procedimentos, e um deles é fazer com que o programa não pareça com "Código de Espaguete".
Hoje eu li vários programas OO "puros" que se parecem com "Código de Espaguete Orientado a Objetos", significando que o programador usou OOP, mas seu código parece uma bagunça.
Muitas vezes, eu posso ler um código OO e dizer que o programador aprendeu a Programação Estruturada antes do OOP, porque o código é claro e organizado.
E para a Programação Modular, já vi vários aplicativos. em C ++ e PHP que não usa módulos. *