LECTURE NOTES ON PRINCIPLES OF PROGRAMMING LANGUAGES II B. Tech II semester (JNTUH-R15) DEPARTMENT OF INFORMATION TECHNOLOGY
CONTENTS UNIT-I 1. Reasons for studying 2. Concepts of programming languages 3. Programming domains 4. Language Evaluation Criteria 5. Influences on Language design 6. Language categories 7. Programming Paradigms – Imperative, Object Oriented, functional Programming, and Logic Programming. 8. Programming Language Implementation – Compilation and Virtual Machines 9. Programming environments. UNIT-II 1. Introduction 2. primitive 3. character 4. user defined, array 5. Associative, record, union, pointer and reference types, design and implementation uses related to these types. 6. Names, Variable, concept of binding, type checking. 7. Strong typing 8. Type compatibility 9. Named constants 10. Variable initialization
UNIT-III 1. Fundamentals of sub-programs 2. Scope and lifetime of variable 3. Static and dynamic scope 4. Design issues of subprograms and operations, local referencing environments 5. Parameter passing methods 6. Overloaded sub-programs 7. Generic sub-programs 8. Parameters that are sub-program names 9. Design issues for functions user defined overloaded operators, co routines. UNIT-IV 1. Abstract Data types 2. Concurrency 3. Exception handling 4. Logic Programming Language UNIT-V 1. Functional Programming Languages 2. Introduction 3. LISP, ML, Haskell 4. Scripting Language: Pragmatics 5. Python 6. Procedural abstraction, data abstraction, separate compilation, module library
UNIT - I PRELIMINARY CONCEPTS Reasons for Studying Concepts of Programming Languages • Increased ability to express ideas. • It is believed that the depth at which we think is influenced by the expressive power of the language in which we communicate our thoughts. It is difficult for people to conceptualize structures they can’t describe, verbally or in writing. • Language in which they develop S/W places limits on the kinds of control structures, data structures, and abstractions they can use. • Awareness of a wider variety of P/L features can reduce such limitations in S/W development. • Can language constructs be simulated in other languages that do not support those constructs directly? • Improved background for choosing appropriate languages • Many programmers, when given a choice of languages for a new project, continue to use the language with which they are most familiar, even if it is poorly suited to new projects. • If these programmers were familiar with other languages available, they would be in a better position to make informed language choices. • Greater ability to learn new languages • Programming languages are still in a state of continuous evolution, which means continuous learning is essential. • Programmers who understand the concept of OO programming will have easier time learning Java.