In addition, language design is challenging. Knowing how to solve problems using the different paradigms is important for several reasons. You can find solutions to problems more surely if you have many different ways to approach problems. As parallel programming becomes more important, the use of functional and logic programming languages may increase. Already the use of object-oriented languages is increasing.
Similar comments hold true of the object-oriented and logic programming paradigms.
Understanding the semantics of major features of programming languages is necessary to use such features and to design new languages. For example, if you want to program in an object-oriented language you need to understand inheritance and message passing. The better you understand such features, the better you will be able to program, reason about, and debug your programs. Without understanding the semantics of such features, you may also have difficulty discussing programming language ideas with others, and will have difficulty in reading the technical literature. If you are planning in specializing in some other area of computer science, you may someday need to read some of the literature on programming languages, either to use results from programming languages, or to apply ideas from your area to programming language research.