One of the foci of this website is multiparadigm software architecture. What do we mean by multiparadigm software?
Language researcher and author Timothy Budd defines a programming paradigm as “a way of conceptualizing what it means to perform computation, of structuring and organizing how tasks are to be carried out on a computer” [Budd 1995, p. 3].
In programming languages, many different paradigms have emerged: procedural, functional, object-oriented, logic, concurrency-oriented, language-oriented, etc.
A multiparadigm programming language is a language that provides explicit and convenient support for two or more programming paradigms. Budd reports, “Research results from the psychology of programming indicate that expertise in programming is far more strongly related to the number of different programming styles understood by an individual than it is by the number of years’ experience in programming” [Budd 1995, p. viii]. He also states that the “goal of multiparadigm computing is to provide … a number of different problem solving styles” so that a programmer can “select a solution technique that best matches the characteristics of the problem to be solved” [Budd 1995, p. 6].
Thus multiparadigm software are programs whose designs leverage multiple ways of conceptualizing the computations and perhaps whose implementations use a multiparadigm programming language.
Currently, most of the Multiparadigm Group’s work is in the context of the relatively new multiparadigm programming language Scala [Odersky 2010]. It has fundamental features that support the imperative, object-oriented, functional, and component- oriented styles. Scala also has extensions defined in libraries to support the concurrency-oriented and language-oriented styles of programming.
References[Budd 1995] Timothy A. Budd. Multiparadigm Programming in Leda, Addison-Wesley, 1995. [Odersky 2010] Martin Odersky, Lex Spoon, and Bill Venners. Programming in Scala: A Comprehensive Step-By-Step Guide, Second Edition, Artima, Inc., November 2008.