Hacker News new | ask | show | jobs
by gamegoblin 485 days ago
Played this back in the day

It's neat how teens & amateurs will reinvent classic techniques — e.g. there was a technique in the community known as "dynamic clustering" which was really just K-nearest neighbor, but presumably whoever named it dynamic clustering had reinvented it from first principles and wasn't aware

Looks like the robowiki includes this tidbit now:

> Dynamic clustering is a technique to find entries in your log similar to the current situation. Essentially, it is a K-nearest neighbor algorithm, and not actually clustering at all. Despite this misnomer, the term "Dynamic Clustering" has stuck with the Robocode community.

https://robowiki.net/wiki/Dynamic_Clustering

1 comments

> known as "dynamic clustering" which was really just K-nearest neighbor

I'm a self taught programmer. Recently had a technical interview - final interview before getting hired, everything had been going smoothly so far. Guy asked me to describe "dependency injection", and I had heard this phrase, but didn't know the definition off hand. I failed the interview because of this, and they told me so later when I tried to follow up.

So I looked up what dependency injection is, and realized it's something that to me is just basic programming common sense that I had already been using 30 years ago.

Sorry to hear dude. I've interviewed tons of people and I've had the brightest guys mess these things up. As an interviewer try to see if you can describe the problem instead of asking for definitions. As an interviewee, say what does come to mind and kindly ask for a hint. Even if you technically mess up the question you can often make up for it at least partially in social skills. Seriously, that happens on the job too and then you ask your local ai model about it.. Unless of course there was another candidate that just aced everything... In any case, don't get upset over it and keep a positive attitude. You'll get your job!
Yeah some names make a concept more confusing. Dependency injection is definitely one of those. I understand where the name comes from but it's just a really bad name. Sounds way more complex than it is.

Still, not as bad as "dynamic programming". Sounds complicated right? It's just recursion with caching. There the name was almost deliberately bad. "dynamic" is just a generic fancy sounding adjective (yeah really), and "programming" is not a reference to coding; it's a reference to scheduling. Because that's not at all confusing... "Cached recursion" doesn't sound like you've really invented anything though I guess.

Please can we all call it "cached recursion" from now on?

The historical context behind the naming of dynamic programming was discussed on HN before: https://news.ycombinator.com/item?id=17806913
While 'recursion with caching' is an easy way how to start explaining 'dynamic programming', there is a slight difference - recursion works top-down, while dynamic programming algorithms generally works bottom-up.
Memoization? ;)
Ha also a terrible name (why not "caching"?) At least it sounds like memorization so it's easy to remember what it means.