Introdução à Programação Estruturada
A noção da "crise do software" surgiu já no final dos anos 60 e uma das primeiras e mais conhecidas referências ao termo foi feita por Edsger W. Dijkstra, em 1972 no Prêmio Turing da Association for Computing Machinery, no manuscrito intitulado "The Humble Programmer".
Os problemas encontrados nas etapas do processo de desenvolvimento de software começaram a ser observados no final da década de 60 e continuam atormentando a vida dos projetistas até hoje. A crise se manifesta de várias formas, citando: a baixa produtividade dos programadores (projetos ultrapassando os prazos e orçamentos), a falta de uma "metodologia formal" para o desenvolvimento de software e os códigos de baixa qualidade (programas literalmente sem a possibilidade de serem mantidos). As soluções para a crise de software passam principalmente pelo uso de melhores técnicas, métodos e ferramentas.
O histórico com o surgimento das linguagens de programação está intensamente ligado a evolução das tecnologias de hardware e de software. Foi com o aumento da tecnologia e da capacidade dos computadores que problemas mais complexos puderam ser resolvidos pela máquina.
Década de 40, programação física em linguagem de máquina (conhecimento total do hardare).
Década de 50, linguagens de 1ª geração, programação lógica (abstração do hardware), linguagens montadoras como assembler (ainda exigiam conhecimentos do hardware), ênfase em cálculos matemáticos. Linguagens: Fortran, List e Algol 58.
Década de 60, linguagens de 2ª geração, ênfase no processamento de dados (sistemas bancários). Linguagens: Fortran, Algol 60, Lisp, Basic e Cobol.
Década de 70, linguagens de 3ª geração, ênfase na estruturação do código