Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction 1 강의 내용 및 방법  접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외  원하는 학생에게만 특별히 따로 강의함  리포트 –2 주일에 프로그램 1 개 정도, term project 는 없음 –

Similar presentations


Presentation on theme: "Introduction 1 강의 내용 및 방법  접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외  원하는 학생에게만 특별히 따로 강의함  리포트 –2 주일에 프로그램 1 개 정도, term project 는 없음 –"— Presentation transcript:

1 Introduction 1 강의 내용 및 방법  접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외  원하는 학생에게만 특별히 따로 강의함  리포트 –2 주일에 프로그램 1 개 정도, term project 는 없음 – 각 장의 문제풀기 및 다른 문제 제공  시험 – 중간, 기말 및 1~2 회 정도의 쪽지시험

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

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

4 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

5 Introduction 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  Event-driven programming, Service-oriented approach, Web-service, Very High-level Language

6 Introduction 6

7 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 …

8 Introduction 8 Why study programming languages? (2)  To increase your vocabulary of useful programming constructs –Increase programming vocabulary and its implementation 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 Service(SOAP)

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

10 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

11 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

12 Introduction 12

13 Introduction 13

14 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 –Encapsulation

15 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

16 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

17 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

18 Introduction 18

19 Introduction 19

20 Introduction 20

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

22 Introduction 22

23 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


Download ppt "Introduction 1 강의 내용 및 방법  접근방법 –Lambda Calculus, Proof of Correctness 은 강의에서 제 외  원하는 학생에게만 특별히 따로 강의함  리포트 –2 주일에 프로그램 1 개 정도, term project 는 없음 –"

Similar presentations


Ads by Google