Introduction Programming Language Design and Implementation 4 th

























- Slides: 25



Introduction Programming Language Design and Implementation (4 th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections 1 -1. 3. 2


Organization of Programming Languages § § Understand how languages are designed and implemented 구조 – Lexicon – What sorts of words are legal? – Syntax -- What a program looks like? – Semantics -- What a program means? Implementation -- How a program executes Understand most appropriate language for solving specific problems, For example: – Pascal, C -- procedural, statement oriented – C++, Java, Smalltalk -- Object oriented – ML, Lisp -- Functional – Prolog -- Rule-based – Java. Script, PHP – Procedural, Event-driven accessing

Language Goals § During 1950 s--1960 s - Compile programs to execute efficiently. – There is a direct connection between language features and hardware - integers, reals, goto statements – Programmers cheap; Machines expensive; Keep the machine busy § But today – Compile programs that are built efficiently – CPU power and memory very cheap – Direct connection between language features and design concepts - encapsulation, records, inheritance, functionality, assertions – Event-driven programming, Service-oriented approach, Web-service, Very High-level Language


Why study programming languages? (1) § To improve your ability to develop effective algorithms – Improper use of recursion – Object-oriented programming, logic programming, concurrent programming § To improve your use of your existing programming language – Data structures for arrays, strings, lists, records, set, bag, table (associative array) – Malloc() garbage collection – Implementation details of recursion, object classes, subroutine calls, exception(event) handling … – Service-oriented developing • Web-service, Semantic web, Script language

Why study programming languages? (2) § To increase your vocabulary of useful programming constructs – Increase programming vocabulary and its implementation tech. – Coroutine, Semaphore, event-driven programming, associative array § To allow a better choice of programming language – Numeric computation : C, FORTRAN, Ada – AI : LISP, Prolog – Internet applications : Perl, Java, HTML, XML, Web Service(SOAP), PHP

Why study programming languages? (3) § To make it easier to learn a new language – Web programming (Java. Script, PHP), Semantic web § To make it easier to design a new language – User interface design § *** C, COBOL, SMALLTALK의 덧셈의 속도 차이를 초래하는 언어개념 및 구현의 차이

Evolution of software architecture § 1950 s - Large expensive mainframe computers ran single programs (Batch processing) § 1960 s - Interactive programming (time-sharing) on mainframes § 1970 s - Development of Minicomputers and first microcomputers. Apple II. Early work on windows, icons, and PCs at XEROX PARC § 1980 s - Personal computer - Microprocessor, IBM PC and Apple Macintosh. Use of windows, icons and mouse § 1990 s - Client-server computing - Networking, The Internet, the World Wide Web § 2000 s - P 2 P, Grid Computing, Web Service, Eventdriven approach, Service-oriented programming, Script language, …

Attributes of a good language (1) § Clarity, simplicity, and unity provides both a framework for thinking about algorithms and a means of expressing those algorithms – Conceptual integrity – 나쁜 예: APL, SNOBOL 4 § Orthogonality - every combination of features is meaningful – Fewer exceptions C언어에서 !!! – Logical errors and inefficiency



Attributes of a good language(2) § Naturalness for the application program structure reflects the logical structure of algorithm – Sequential algorithm, concurrent algorithm, logic algorithm, non-deterministic algorithm – Appropriate data structures, operations, control structures, natural syntax § Support for abstraction - program data reflects problem being solved – Data abstraction <D, O, C> – Encapsulation

Attributes of a good language (3) § Ease of program verification - verifying that program correctly performs its required function – Verification/validation – Comments, assert() – Design specification § Programming environment - external support for the language – – Debugger, syntax-directed editor Supporting function, platforms Smalltalk Supporting all the software lifecycle phases

Attributes of a good language (continued) § Portability of programs transportability of the resulting programs from the computer on which they are developed to other computer systems – Transportability – C, C++, Pascal Java (Byte-code) – ML : single source implementation § Cost of use - program execution, program translation, program creation, and program maintenance – Code optimization, (Smalltalk, Perl), lifecycle costs

Language paradigms § Imperative languages – Goal is to understand a machine state (set of memory locations, each containing a value) – Statement oriented languages that change machine state (C, Pascal, FORTRAN, COBOL) – Syntax: S 1, S 2, S 3, . . . § Applicative (functional) languages – Goal is to understand the function that produces the answer – Function composition is major operation (ML, LISP) – Syntax: P 1(P 2(P 3(X))) – Programming consists of building the function that computes the answer




Language paradigms (continued) § Rule-based languages – Specify rule that specifies problem solution (Prolog, BNF Parsing) – Other examples: Decision procedures, Grammar rules (BNF) – Syntax: Answer specification rule – Programming consists of specifying the attributes of the answer § Object-oriented languages – Imperative languages that merge applicative design with imperative statements (Java, C++, Smalltalk) – Syntax: Set of objects (classes) containing data (imperative concepts) and methods (applicative concepts)


New Paradigm § Internet, Home Computing, Ubiquitous Computing, Embedded Computing, etc § Languages and Compilers that are smart, small and safe – Moveable code agents – Independent from machines and programming environments – Supporting pragmatics or intelligence § Java, XML, Mobile computing. Mobile code § Event driven approach, Service-oriented Architecture, Web Service
