Sunday, July 20, 2008

Speed kiddies

Speed kiddie:

Someone who learns or uses a low-level (often compiled) language for the constant coefficient performance increase. These people often have no regards for computational complexity and are usually confused by asymptotic notation. They frequently suffer from severe cases of premature optimization and believe that manageability comes second to runtime speed (in all applications). You can often find them trolling around web-forums bragging about their pointer or bit manipulation skills (the code is generally characterized by non-reusable design and a significant lack of readability).

Examples:
  • "What do you mean my algorithm runs at O(n!)? It's twice as fast as yours with this small test set"
  • "How do you write efficient code in Python... It doesn't even have pointers!"
  • "I don't need to write readable code, I'm not going to forget my own code..."
  • "High level languages are for the weak, real men enjoy pain... PAIN!!!"
  • "Lisp doesn't offer anything new to me, C has macros too!"
  • "RAWRRR POOINTERRRZZZ!!!!!!!!!!!!!!!!!!"

7 comments:

Gabriel said...

we all have been teenagers ^^, I just hope they ARE effectively teenagers...

k3rni said...

Plenty of them in Gentoo-land, it seems. See http://funroll-loops.info/ for some quotes.

kib said...

:)
I like the Lisp vs C macros one !

Paris said...

Where would the programming world be without the performance kiddies? Not to say it ever matters, unless your developing app's for mobile devices or under very strict environments, most of the time the language will handle of the performance tricks within itself and there isn't much you can do besides avoid a never ending loop and horrible queries.

Wybiral said...

"Where would the programming world be without the performance kiddies?"

The real thing that separates speed kiddies from wise programmers is that speed kiddies try to optimize everything, whereas a wise programmer will know how to pick his battles and do lots of profiling first.

The wise programmer knows that premature optimization is the root of all evil, and she refuses to solve any problems that she isn't sure will be a problem.

David Rodríguez Ibeas said...

There are still places where you need that small differential speed gain. I know, I am there. If you need to communicate 200 periodic messages at a 50Hz rate everything counts.

Then again, for any other project, at least memory management is a must have (Java/.NET) not counting on the fact that nowadays VMs can optimize code _after_ the application is already running.

Wybiral said...

"There are still places where you need that small differential speed gain."

Yeah, I agree. My dislike is for those people who don't understand the difference between situations that need it and ones that don't. Obviously in something like systems programming, you're going to need it more often than something like application programming or web development. Coefficient speed increase in those areas isn't as important as algorithmic increase and manageability (not to mention speed to market, you can't compete feature-wise when you're busy pushing unnecessary bits around).