Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은...

23
Introduction 1 강강 강강 강 강강 접접접접 Lambda Calculus, Proof of Correctness 접 접접접접 접접 접접접 접접접접접 접접접 접접 접접접 접접접 2 접접접 접접접접 1 접 접접 , term project 접 접접 접 접접 접접접접 접 접접 접접 접접 접접 접접 , 접접 접 1~2 접 접접접 접접접접

Transcript of Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은...

Page 1: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 1

강의 내용 및 방법 접근방법

– Lambda Calculus, Proof of Correctness 은 강의에서 제외 원하는 학생에게만 특별히 따로 강의함

리포트– 2 주일에 프로그램 1 개 정도 , term project 는 없음– 각 장의 문제풀기 및 다른 문제 제공

시험– 중간 , 기말 및 1~2 회 정도의 쪽지시험

Page 2: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 2

참고자료 Http://borame.cs.pusan.ac.kr/lecture

– 강의참고자료 ( 한글 )– 2002 년 강의 내용– 2002 년 리포트 , 기타 참고사항– 2003, 2004 년 강의노트

강의 중에 이해가 안 되는 부분은 언제나 홈페이지의 묻고 답하기에 질문할 수 있음

Page 3: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction

Programming Language Design and Implementation (4th Edition)

by T. Pratt and M. ZelkowitzPrentice Hall, 2001

Sections 1-1.3.2

Page 4: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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

Page 5: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 5

Language Goals During 1950s--1960s - Compile programs to execu

te efficiently. There is a direct connection between language f

eatures 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

Page 6: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 6

Era Application Majorlanguages

Otherlanguages

Business COBOL AssemblerScientific FORTRAN Algol, BASIC,

APLSystem Assembler JOVIAL, Forth

1960s

Artificialintelligence

LISP SNOBOL

Business COBOL, C++,Java, spreadsheet

C, PL/I, 4GLs

Scientific FORTRAN, C,C++, Java

BASIC

System C, C++, Java Ada, BASIC,Modula

Artificialintelligence

LISP, Prolog

Publishing TeX, Postscript,word processing

Process UNIX shell, TCL,Perl, Javascript

AWK, Marvel,SED

Today

New paradigms ML, Smalltalk Eiffel

Page 7: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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, set, bag

– Malloc() garbage collection– Implementation details of recursion, object classes, subroutine calls, exception(event) handling …

Page 8: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 8

Why study programming languages? (2)

To increase your vocabulary of useful programming constructs– Increase programming vocabulary and its implementati

on tech.– Coroutine, Semaphore

To allow a better choice of programming language– Numeric computation : C, FORTRAN, Ada– AI : LISP, Prolog– Internet applications : Perl, Java, HTML, XML, Web S

ervice(SOAP)

Page 9: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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 의 덧셈의 속도차이를 초래하는 언어개념 및 구현의 차이

Page 10: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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, Grid Computing, Web Service, Event-driven approach

Page 11: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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 C 언어에서 !!!– Logical errors and inefficiency

Page 12: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 12

Page 13: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 13

Page 14: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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

Page 15: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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

Page 16: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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 (Byte-code)– ML : single source implementation

Cost of use - program execution, program translation, program creation, and program maintenance– Code optimization, (Smalltalk, Perl), lifecycle costs

Page 17: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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

Page 18: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 18

Page 19: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 19

Page 20: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 20

Page 21: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

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

Page 22: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 22

Page 23: Introduction 1 강의 내용 및 방법 접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외 원하는 학생에게만 특별히 따로 강의함 리포트

Introduction 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 Event driven approach, Service-oriented Architecture,

Web Service