This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
From a historical programming perspective, I remember the concepts being introduced in the following order:
Functional, Structured, OOP, AOP
Functional programming has been around since at least Lisp (1957) with structured programming coming into existence in the 1960s. OOP, as a term, started with Smalltalk in the 1970's though the concept existed in different forms well before then. AOP appear rather recently. These approaches are based on concepts that predate them making it hard to provide a definitive order.