If you don't know Prolog, I can give a very warm recommendation to spend some time and get familiar with Prolog. It's an extremely simple programming language that is a good example of taking a formal abstraction (predicate logic) and turning it into a practical programming language.<p>Prolog is also a very good example of the power of the unification algorithm. Unification is also used in e.g. type inference algorithms in programming languages like ML or Haskell.<p>Prolog is also homoiconic ("code is data", like Lisp) so it's very well suited for doing experiments in languages. A commonly used example is to create a Prolog dialect with fuzzy logic semantics.<p>Finally, while you might never get a chance to use Prolog in your day job, it's a programming language that will expand your horizons and learning it will, in my opinion, make you a better programmer.