This chapter introduces the key concepts around programming languages. It discusses the reasons for studying programming languages, including being able to express ideas in different ways and choosing the right language for a task. It also covers important criteria for evaluating languages, influences on language design like computer architecture and programming paradigms, different categories of languages, trade-offs in language design, and methods for implementing languages like compilation and interpretation.