3 ms·
I can't pick one so I'll say: Learning Common Lisp; Making my own (unreleased) web framework from scratch; Learning the Rete algorithm (very fast matching of
by Hexstream 16y ago
I can't pick one so I'll say:
Learning Common Lisp;
Making my own (unreleased) web framework from scratch;
Learning the Rete algorithm (very fast matching of many patterns against many data items). It's the most elaborate algorithm I can implement, it was hard to learn mostly because of how incredibly abstract the descriptions of it are, but it's applicable in many situations to make really cool features possible so it was well worth it.
- mahmud 16y agoRe: Rete, that's really good. I can only imagine the breadth of knowledge you had to acquire just to grok it, much less implement it.
- Hexstream 16y agoThere actually isn't a lot of prerequisite knowledge before you can learn Rete, just general knowledge of graphs I think. I did spend a lot of time trying to understand how it all works with pen and paper, reading the original Rete description and the wikipedia article, it's a bit annoying because it seems descriptions of Rete are very few AND they use different terminology and approaches to explaining, AND there are really a lot of implementation choices to make depending on the specifics of your problem, so I had a lot of difficulty wrapping my head completely around the concept. In fact, the first implementation I made was very contrived and I unknowingly bypassed a lot of problems and I didn't even know my understanding was still incomplete. It's only when I tried to make another implementation for a more difficult problem that I realized and fixed my lackings. Now that I really understand it though, it really doesn't sound that complicated to me anymore, it's pretty "simple and intuitive". If I didn't remember all the pain I had to go through to understand it, I might think that it's in fact a pretty simple algorithm. I think the way too abstract and obtuse descriptions of it are to blame for much of the difficulty because there really isn't a lot to the fundamentals of the algorithm (though the explosion of implementation choices can get messy to sort through). I guess about now would be a great time for me to start a blog. ;)