Вообще-то, больше всего под вашу задачу подходит Haskell, но популярность этого языка - спорный вопрос. Поэтому наверное вам все-таки нужен C++. Если речь о GUI, тогда с wxWidgets или Qt. Еще можно посоветовать Python / Ruby и прочие языки, но у них проблема в том, что они требуют наличия интерпретатора или виртуальной машины.
1. Берите случайную задачу из списка http://eax.me/programming-language-learning/ 2. Решайте 3. Goto 1
Тут писал рецензии на пару книжек, правда, они совсем по основам и без шейдеров http://eax.me/books-issue-5/