Idiom Or Pattern

What's the difference between an idiom and a pattern? I have a hypothesis that:

Consequently, I have another hypothesis that patterns are big idioms. I'd like pattern folks to declare yea or nay.

I would state the converse, that idioms are merely small patterns. I think that pattern is the more general term. --KyleBrown

I'd agree. Idioms were the ideas used to guide the design and implementation of frameworks like ET++ and InterViews, and DesignPatterns was the result of those developers getting together after the fact and writing down what they learned in a more formal and collective manner. --ScottJohnston

Idioms are language-specific in that the problem they solve, or the context in which those problems are encountered, are caused by the language. Taking the JavaIdioms as examples, InterfacesForDefiningConstants or ClosuresThatWorkAroundFinalLimitation make no sense in any other language. On the other hand, some of the other patterns listed as JavaIdioms probably have wider applicability and so are more than just idioms; ValueObjectsShouldBeImmutable or CrossSection come to mind. Others are probably general patterns that are described in such a Java-specific way as to hide their generality: ParameterClasses could be generalised to refer to any dynamic loading mechanism, for example. --NatPryce

Idiom: an expression in the usage of a language that is peculiar to itself either grammatically (as no, it wasn't me) or in having a meaning that cannot be derived from the conjoined meanings of its elements (as Monday week for "the Monday a week after next Monday") --

We expect patterns to connect and flow into one another in the course of production. When this happens we say that the patterns form a PatternLanguage. We do not expect the same interaction between idioms, nor do we get it from the 23 DesignPatterns made famous by the GangOfFour, and hence the confusion. -- WardCunningham

If a set of patterns form a PatternLanguage, could that language have its own idioms? Has this been observed in the wild?

I'd claim that idioms pre-date patterns, and agree that they are indeed language (including software language) specific. I recall a wonderful collection of APL idioms back in the 70's. (Wish I could recall the author.)

There's a famous collection of APL (AplLanguage) idioms called "The FinnAPL Idiom Library", first published by the Finnish APL Association, Helsinki, 1981 at (That's a Finnish site, so "Idiot" is more likely to be a typo they made than a pun they made.) There was also a paper "An APL Idiom Inventory" by Howard A. Peel in 1987. Also "APL Idioms", IBM-APL User's Club, Japan, 1984 and "Programming with Idioms in {APL}", Alan J. Perlis and Spencer Rugaber, in "APL Quote Quad", Jun 1979, vol 9 no 4 pp 232-235. --DougMerritt

J, a successor to APL, is especially well suited to idomatic usage. Learning the language would require some effort, but, one can appreciate this particular aspect of the language by just browsing the JayPhraseBook.


EditText of this page (last edited July 15, 2004)
FindPage by browsing or searching

This page mirrored in JavaIdioms as of April 29, 2006