3 ms·
"For example, I recently wrote a no-inserts hash table, because for my particular application I wanted to start with a populated table and then gradually remove
by plinkplonk 17y ago
"For example, I recently wrote a no-inserts hash table, because for my particular application I wanted to start with a populated table and then gradually remove entries; by removing the ability to insert entries, I made the code much simpler and faster (no need for rehashing!) -- but if I hadn't been entirely familiar with standard hash tables, I wouldn't have been able to do this."
The great thing about this answer is that it gives a specific example from personal experience - which the submission explicitly asked for (vs platitudes about how acquiring algorithmic knowledge is "cool" in general, with references to code monkeys/CRUD/dumb managers and so on).
Everyone agrees deep algorithmic knowledge is a good thing to have in general. Specific, practical examples, based on personal work or experience are hard to find - Skiena's book on algorithms gives some examples. He calls them "war stories".
I suspect that the student is right in that most programmers never use the algorithmic theory they learn and most jobs are the "stitch together api s" type. But if she is building something like etherpad for example, she would need seep algorithmic knowledge - essentially when a programmer "goes where no one has gone before" and builds something truly innovative.
- plinkplonk 17y agoI'd really like to hear any answers to "Are there Open Source projects which demand a high level of algorithmic knowledge?" I suspect (but don't know for sure) that the linux/bsd etc kernels and networking code would be full of neat algorithm/data structure tricks. Maybe a shortcut to find such projects or applications would be to look for projects where high performance is a critical (vs nice to have) property of the program.
- cperciva 17y agoI'd really like to hear any answers to "Are there Open Source projects which demand a high level of algorithmic knowledge?" I know at a minimum that the FreeBSD kernel uses sophisticated algorithms for keeping track of virtual memory, TCP connections, and internet protocol routing, because I've seen CVS/SVN commits related to those. Beyond that, I can't really say -- I know algorithms, but I don't know kernel.