To a native speaker, a language idiom is clear and concise; similarly, to a language expert, a programming idiom is easier to read and comprehend than the "straightforward" implementation it replaces.
Not all idioms are obfuscated, however. Some programming idioms make sense immediately; although the novice could not have synthesized them, s/he can understand them on first encounter. Smalltalk "inject:into:" is an example of a non-obvious idiom, "select:" of a straightforward idiom.
Actually, I think a ProgrammingIdiom is a small-scale pattern that only applies to a particular programming language -- it may or may not be a code snippet, as KentBeck will attest to. Anyway, I'm collecting them now for Java (JavaIdioms).
-- KyleBrown
I think of multiple-dereference as a programming idiom that spans several languages: typical example is with lists, where the list node has a ref-list field in it and much code passes around a ref-ref-list which is initially where the list header/carrier records the head of the list, but each time I add an item to the (tail of the) list I record it where my ref-ref-list is pointing and revise my ref-ref-list to point to where this new item wants to put its successor. This works in (at least) Algol 68 and C but I still think of it as a programming idiom. Similar tricks work for more complex data structures, so the approach is a pattern (unless I've misunderstood), but it's a pattern of implementation detail, not of design problem-solving. I think. -- EdwardWelbourne
This page mirrored in WikiPagesAboutWhatArePatterns as of April 29, 2006