
1) Advanced Programming Language Design by Raphael Finkel - A classic (late 90s) book comparing a whole smorgasbord of languages.
2) Design Concepts in Programming Languages by Franklyn Turbak et al. - A comprehensive (and big) book on PL design.
3) Concepts, Techniques and Models of Computer Programming by Peter Van Roy et al. - Shows how to organically add different programming paradigms to a simple core language.
Rustaceans would do well to read something like Raphael Finkel's book Advanced Programming Language Design where a whole bunch of languages and their unique features are shown/compared.
Next time a rustacean starts jumping up and down, show them Raphael Finkel's book Advanced Programming Language Design so that they can understand there is nothing new under the sun.
I found the following useful to get back (ongoing) my "joy of programming";
1) Advanced Programming Language Design by Raphael Finkel.
2) Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi.
3) Understanding Formal Methods by Jean-Francois Monin.
4) Design Concepts in Programming Languages by Turbak and Gifford.
You will want Knuth's TAOCP (especially since you mentioned you've had trouble with sorting and searching algorithms), but it's not something to start with. Likewise, Hopcroft and Ullman's "Introduction to Automata Theory, Languages and Computation" is a crucial text, but it's highly abstract (much more so than Knuth, which is a very practical work) and very, very slow going. Pick it up later when you're comfortable with mathematical formalisms.
You'll want to, relatively early on, find a readable introduction to discrete mathematics (the mathematics of "countable" objects, like sets and integers) and some of the more useful optimization techniques like linear programming. I used Grimaldi's "Discrete and Combinatorial Mathematics" to good effect.
Eventually, pick up some good textbooks on programming language design (not parsing and compilation), like Turbak et al's "Design Concepts in Programming Languages" and Finkel's "Advanced Programming Language Design."
Also, a few more sitting on my bookshelf that I also highly recommend -- "Computer Organization and Design," "Operating System Concepts" (the famous "Dinosaur book"), and (if you want to get into the nuts and volts of hardware), Horowitz's "Art of Electronics." Great works.
That should tide you over for the next few years -- but it'll be fun reading. Really!