Download presentation
Presentation is loading. Please wait.
Published byAnis Robertson Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.