* Behavioral ** FunctionalProgramming ** Imperative: *** ObjectOrientedProgramming *** StructuredProgramming * Declarative ** Relational ** Navigational *** XML ** LogicProgramming But, logical programming is closely related to functional programming, so something is probably wrong here. Or else, a hierarchy is inappropriate. I am also thinking of a triangle diagram with the following corners: Imperative, Functional, and Data-centric. ---- You might do better to start with a list of pairs, each being a style and a language that exemplifies the style. For example: * Functional/strict - ML * Functional/non-strict - Haskell * Logic - Prolog * ObjectOriented - Smalltalk * CSP - Occam * Dataflow - Lucid * Imperative - BCPL Then try to find similarities and differences. I suspect that a hierarchy is not appropriate, and that no simple structure will suffice. I suspect that each language needs to be ranked on several scales simultaneously. Then one could do PrincipleComponentAnalysis to see what scales are related, thereby finding the paradigms. ---- See Also: ProgrammingParadigm