Presentation is loading. Please wait.

Presentation is loading. Please wait.

강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness

Similar presentations


Presentation on theme: "강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness"— Presentation transcript:

1 강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
1주일에 프로그램 1개 정도, term project는 없음 각 장의 문제풀기 및 다른 문제 제공 시험 중간, 기말 및 1~2회 정도의 쪽지시험

2 참고자료 Http://borame.cs.pusan.ac.kr/lecture
강의참고자료 (한글) 2002년 강의 내용 2002년 리포트, 기타 참고사항 2003년 강의노트 강의 중에 이해가 안 되는 부분은 언제나 홈페이지의 묻고 답하기에 질문할 수 있음

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

4 Organization of Programming Languages
Understand how languages are designed and implemented 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

5 Language Goals During 1950s--1960s - 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

6

7 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 Malloc()  garbage collection Implementation details of recursion, object classes, subroutine calls, …

8 Why study programming languages? (2)
To increase your vocabulary of useful programming constructs Increase programming vocabulary and its implementation tech. Coroutine To allow a better choice of programming language Numeric computation : C, FORTRAN, Ada AI : LISP, Prolog Internet applications : Perl, Java

9 Why study programming languages? (3)
To make it easier to learn a new language To make it easier to design a new language User interface design *** C, COBOL, SMALLTALK의 덧셈의 속도차이

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

11 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 SNOBOL4 Orthogonality -every combination of features is meaningful Fewer exceptions Logical errors and inefficiency

12

13

14 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

15 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

16 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 ML : single source implementation Cost of use - program execution, program translation, program creation, and program maintenance Code optimization, (Smalltalk, Perl), lifecycle costs

17 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: S1, S2, S3, ... Applicative (functional) languages Goal is to understand the function that produces the answer Function composition is major operation (ML, LISP) Syntax: P1(P2(P3(X))) Programming consists of building the function that computes the answer

18

19

20

21 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)

22

23 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


Download ppt "강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness"

Similar presentations


Ads by Google