Programming Language: Principles and Paradigms