Summary/Outline of Lecture 1 COP 4020 This class is not just about learning a bunch of programing languages, it's more theoretical. Rather, we are studying the ideas behind the development of different PLs. We will analyze the capabilities, strengths and weaknesses of different types of PLs. Practical Goals of this class: 1) Learn enough about a vastly different set of PLs so that you can make an intelligent choice of what PL to use for a specific project. 2) Learn enough about the "right way" to use each type of PL so that you can write efficient code, no matter what language you are coding in. Textbook reasons for studying PL: 1) Increased capacity to express ideas 2) Improved background for choosing a language 3) Increased ability to learn new languages 4) Better understanding of significanse of implementation 5) Increased ability to design new languages 6) Overall development of computing Programming Domains 1) Scientific applications 2) Business applications 3) Artificial Intelligence (symbolic computation) 4) Systems programming 5) Scripting languages 6) Special Purpose Language Evaluation Criteria I. Readability a. Overall Simplicity b. Orthogonality c. Control Statements d. Data types and structures e. Syntax considerations II. Writability a. Simplicity & Orthogonality b. Support for abstraction c. Expressivity III. Reliability a. Type Checking b. Exception Handling c. Aliasing d. Readability & Writability IV. Cost a. Hardware b. Software