30

In some sports certain techniques or elements are named after the athlete who invented or first performed them—for example, Biellmann spin.

Is their widespread use of such names for programming techniques and idioms? What are they? To be clear, I am explicitly not asking about algorithms, which are quite often named after their creators.

For example, one is Schwartzian transform, but I can't recall any more.

Alice
  • 2,291
  • 2
  • 15
  • 11
  • 9
    Must... suppress... urge... to make up fanciful story about somebody called Septimus Q Object... – itowlson Mar 02 '10 at 22:29
  • 3
    The word you're looking for is "eponymous". – Michael Myers Mar 02 '10 at 22:30
  • 8
    Votes to reopen... People have a serious problem here. This is a very well formulated question and I think there are a lot techniques that are not algorithms that may qualify. Honestly as soon as you give people a tiny bit of power they abuse it. Votes to reopen. – SyntaxT3rr0r Mar 02 '10 at 22:38
  • @Alicia: I think upon reflection that the "Carmack squareroot" qualifies because it's not really an 'algorithm' for it depends on hardware specifities (related in this case to relative speed of CPU/FPU back in the days). – SyntaxT3rr0r Mar 02 '10 at 22:39
  • @itowlson - OK, slow grokking day... what's the significance of "Septimus Q"? – Alice Mar 02 '10 at 22:39
  • @see... The question already has +6 upvotes and two persons who favorited it. This *is* something programmers may want to be able to find. The question is a real question. – SyntaxT3rr0r Mar 02 '10 at 22:44
  • Alicia: It has no significance -- it was just a throwaway line about pretending that object-oriented programming was named after somebody called "Object," and I had to think of a first name... – itowlson Mar 02 '10 at 22:45
  • 6
    WizardOfOdds, Alicia: voted to reopen, but it should probably be made wiki as there is no specific correct answer. – itowlson Mar 02 '10 at 22:46
  • I also think this question should -not- have a correct answer. It's very subjective. – Xorlev Mar 02 '10 at 23:54
  • How do I make it "wiki"? – Alice Mar 03 '10 at 00:16
  • Never mind - figured it out. It was well hidden in Edit. – Alice Mar 03 '10 at 00:41
  • 2
    Remember: German Chocolate Cake was named after a guy named German. B-) – Brian Postow Mar 05 '10 at 15:07

18 Answers18

23
  • The functional programming technique currying is named after its (re)-inventor, Haskell Curry.
  • Boolean logic is named after George Boole
  • Duff's device is pretty famous and seems to me to qualify as technique/idiom.
  • I used to do a "Carmack" which was referring to the "fast inverse square root" but according to the Wikipedia entry the technique was probably found by the smarties at SGI in 1990 or so.

    Even if it doesn't fit your description, it's still a pretty amazing read :)

  • Kleene closure: it's the * operator in regular expressions. It means "0 or more of what precedes it".
  • At one point in time, the Karnaugh Map could have been considered a technique to facilitate programming (albeit at a low level).
  • Markov Chains are named after Andrey Markov and used in programming to generate:

    • Google PageRank
    • Generating Spam-Mail Texts
    • Mnemonic Codewords to replace IDs/Hashvalues
  • The graphics world is full of eponymous techniques:

  • Fisher-Yates shuffle, the standard way to implement an in-place random shuffle on an array.

Please edit to add more if found...

Raekye
  • 5,081
  • 8
  • 49
  • 74
ire_and_curses
  • 68,372
  • 23
  • 116
  • 141
9

In Standard ML and other functional programming languages which use tuple and record literals, I sometimes see literals written thus:

( first
, second
, third
)

or

{ name = "Atwood"
, age = 37
, position = "founder"
, reports_to = NONE
}

This highly idiomatic layout, as opposed to layout where the commas or semicolons appear at the end of the line, is something that I have always heard referred to as MacQueen style, after Dave MacQueen (formerly of Bell Labs, now at the University of Chicago).

Norman Ramsey
  • 198,648
  • 61
  • 360
  • 533
  • I like to use the same style in my non-functional programs - for me the line of commas gives a visual cue like an indent bar; and extra or missing commas become immediately obvious. – Lars Mar 02 '10 at 23:45
  • @Norman - It is a VERY widerly used style in all languages (and not only applicable to commas), and most good developers I know use it for it leads to easier code maintenance. Yet, I never realized it had a name - thanks! – Alice Mar 03 '10 at 00:38
9

K&R (Kernighan and Ritchie) and Allman indentation styles.

mikerobi
  • 20,527
  • 5
  • 46
  • 42
7

I think timsort would qualify. It's used in python and open jdk 7

daveb
  • 74,111
  • 6
  • 45
  • 51
7

How about anything related to Bayes: Bayesian filtering, Bayesian inference, Bayesian classification. While rooted in statistics, these techniques have found their ways into plenty of programming-related applications.

Steve Tjoa
  • 59,122
  • 18
  • 90
  • 101
6

Carmack's Reverse:

Depth fail

Around 2000, several people discovered that Heidmann's method can be made to work for all camera positions by reversing the depth. Instead of counting the shadow surfaces in front of the object's surface, the surfaces behind it can be counted just as easily, with the same end result. This solves the problem of the eye being in shadow, since shadow volumes between the eye and the object are not counted, but introduces the condition that the rear end of the shadow volume must be capped, or shadows will end up missing where the volume points backward to infinity.

  1. Disable writes to the depth and colour buffers.
  2. Use front-face culling.
  3. Set the stencil operation to increment on depth fail (only count shadows behind the object).
  4. Render the shadow volumes.
  5. Use back-face culling.
  6. Set the stencil operation to decrement on depth fail.
  7. Render the shadow volumes.

The depth fail method has the same considerations regarding the stencil buffer's precision as the depth pass method. Also, similar to depth pass, it is sometimes referred to as the z-fail method.

William Bilodeau and Michael Songy discovered this technique in October 1998, and presented the technique at Creativity, a Creative Labs developer's conference, in 19991. Sim Dietrich presented this technique at a Creative Labs developer's forum in 1999 [2]. A few months later, William Bilodeau and Michael Songy filed a US patent application for the technique the same year, US patent 6384822, entitled "Method for rendering shadows using a shadow volume and a stencil buffer" issued in 2002. John Carmack of id Software independently discovered the algorithm in 2000 during the development of Doom 3 [3]. Since he advertised the technique to the larger public, it is often known as Carmack's Reverse.

Michael Stum
  • 177,530
  • 117
  • 400
  • 535
  • Except Bilodeau and Songy beat him by two years. I can't think of a single thing Carmack has actually *invented* (as opposed to implemented) – Andreas Brinck Mar 23 '10 at 10:04
  • @Michael Stum: +1 because you got the Carmack's Reverse correct... My answer got +12 upvotes, I got the name right but my memory played tricks on me for I described something else : ) – SyntaxT3rr0r Apr 21 '10 at 15:19
6

ADL - Argument Dependent Lookup is also known as Koenig lookup (after Andrew Koenig although I don't think he appreciates it, as it didn't turn out the way he originally planned it)

Exception guarantees are often called Abrahams guarantees (Dave Abrahams) see (http://en.wikipedia.org/wiki/Abrahams_guarantees)

Liskov substitution principle http://en.wikipedia.org/wiki/Liskov_substitution_principle - Barabara Liskov

tony
  • 3,737
  • 1
  • 17
  • 18
6

I am shocked that no one has mentioned Backus–Naur Form (BNF), named after John Backus and Peter Naur.

Paul R
  • 208,748
  • 37
  • 389
  • 560
5

The method of constructing programs by computing weakest preconditions, as expounded in Edsger Dijkstra's book A Discipline of Programming, is usually referred to as Dijkstra's Method. It's more of a programming methodology than a technique, but it might qualify.

Norman Ramsey
  • 198,648
  • 61
  • 360
  • 533
5

Several hard to fix or unusual software bugs has been categorized after famous scientists. Heisenbug could be the most known example.

Tyler
  • 21,762
  • 11
  • 61
  • 90
Jonas Elfström
  • 30,834
  • 6
  • 70
  • 106
3

Boyer-Moore string search algorithm: it can find a string inside a string of length N with fewer than N operations.

Gabe
  • 84,912
  • 12
  • 139
  • 238
3

Seriously shocked to see that no one yet has mentioned Hindley Milner Type Inference.

missingfaktor
  • 90,905
  • 62
  • 285
  • 365
2

In C++, the Barton-Nackman trick.

GManNickG
  • 494,350
  • 52
  • 494
  • 543
2

The BWT (Burroughs Wheeler Transform) is pretty important in data compression.

Eric
  • 6,364
  • 1
  • 32
  • 49
1

Jensen's Device

Kevin Panko
  • 8,356
  • 19
  • 50
  • 61
Heikki Naski
  • 2,610
  • 1
  • 21
  • 13
0

How about: Ada named after Ada Lovelace the first computer programmer??

Aim Kai
  • 2,934
  • 1
  • 22
  • 34
0

Perhaps Hungarian notation might qualify? It was invented by Charles Simonyi (who was Hungarian).

JonnyBoats
  • 5,177
  • 1
  • 36
  • 60
0

In C++, the Schwartz counter (aka Nifty Counter) idiom is used to prevent multiple, static initialization of shared resources. It's named after Jerry Schwartz, original creator of the C++ iostreams at AT&T.

Drew Hall
  • 28,429
  • 12
  • 61
  • 81