Seconded, but for a broader reason.
Learn languages which are not merely procedural. Most of the languages simply describe the way to structure data and manipulate data. Essentially, they lay out the opcodes which the machine will execute in order. Go for something that diverges from that: do things with logical, declarative, inference, numerical, symbolic, even visual languages. At the very least, you'll gain insights on how to express procedural code which solves problems more effectively.
--
[ e d @ h a l l e y . c c ]