Programming Languages Principles and paradigms - Tucker (McGraw Hill Higher Education, 2007)