강의 내용 및 방법 접근방법 시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Advertisements

Product Lifecycle Management © 2003 IBM Corporation PLM Definition Product Lifecycle Management.
인공지능 소개 부산대학교 인공지능연구실. 인공 + 지능 인공지능이란 ? 2.
School of Computer Science and Engineering Seoul National University
Master Thesis Progress
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Chapter 2 정보시스템 아키텍처 (IS Architecture)
강의 내용 및 방법 접근방법 시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강
Mar OSEK/VDK Woo Dong Kyun.
IT집중교육1 (Mobile Multimedia Service & System Design)
(강의 홈페이지: 강좌 개요 서울대학교 통계학과 2010년 2학기 컴퓨터의 개념 및 실습 (강의 홈페이지:
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
4. ITIL 개요 * ICT : Information & Communication Technology
강좌 개요 2009년 1학기 컴퓨터의 개념 및 실습.
컴퓨터 소프트웨어.
Operating Systems Overview
과목 홈페이지  전산학개론 이메일 숙제를 제출할 경우, 메일 제목은 반드시 ‘[전산학개론]’으로 시작.
Introduction to Web Service Computing
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Internet Computing KUT Youn-Hee Han
컴퓨터 구조학 정보보호학과.
12. 데이터베이스 설계.
소프트웨어 공학 (Software Engineering)
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
Visual C++ Programming
Web상에서의 Network Management
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
강의 내용 및 방법 접근방법 시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강
Xen and the Art of Virtualization
Power Java 제1장 자바 소개.
제 1장 시스템 소프트웨어의 개요.
소프트웨어 소프트웨어란? 소프트웨어의 특성 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체
객체 지향 프로그래밍.
Chapter 1 Welcome Aboard.
Lecture 01: Compiler Overview
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
운영체제(Operating System)
Introduction to Programming Language
김 정 석 Web Programming 김 정 석
컴 파 일 러 Compilers.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
myfood.com 상명대 맛집 홈페이지 구축 제안서
시스템 분석 및 설계 글로컬 IT 학과 김정기.
언어교육 게임SW를 위한 음성인식 기술 IT 신성장 동력 분야별 기술개발 계획(안)
제 1 장. 자료구조와 알고리즘.
XML-II (eXtensible Markup Language) DTD/DOM
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 4 변수 및 바인딩.
Operating System Multiple Access Chatting Program using Multithread
Signature, Strong Typing
Signature, Strong Typing
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
제6장 소프트웨어와 정보시스템 김진수
Signature, Strong Typing
언어 언어 사람 사람 사람들간의 의사 소통을 위한 수단
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
창 병 모 숙명여대 전산학과 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Introduction to Computer System Spring, 2019
Programming Language Technology Trends
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
AJAX Technology for Web2.0
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Lecture 7 7-Segment LED controller using u-controller
Chapter 7: Deadlocks.
Presentation transcript:

강의 내용 및 방법 접근방법 시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강 Lambda Calculus, Proof of Correctness는 제외 리포트 2주일에 프로그램 1개 정도, term project는 없음 (ABEEK의 이론 과목임), 5월 말 이후 프로그램 숙제 없음 각 장의 문제풀기 및 다른 문제 제공 시험 중간, 기말 및 1~2회 정도의 쪽지시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강

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

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

언어란? 생각을 표현하는 도구!! 정보를 교환하는 도구!! 개념화 : 물체(Object), 물체와 관계, 추상화 중력의 법칙, 예측 인간은 전체를 듣지 않고도 부분을 이해함, 스스로 보완하여 인식함 불완전하며 모호함 프로그래밍언어 !! 우리의 생각을 컴퓨터가 처리할 수 있게 표현하는 도구 조금만 틀려도 이해 못함(수학적 명확성 필요) 오류가 없는 프로그램은 만들 수 없으며, 인간이 1,000만 줄 이상 프로그램은 만들 수 없다. (조던 폴락) 기계와 인간 간의 간격을 줄일수록 바람직함 추상화 단계가 높아져야 짧은 프로그램을 명확한 프로그래밍이 가능 기계뿐 아니라 인간도 이해해야 함 (쉽게 프로그램할 수 있어야)

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? Pragmatics – 실행 과정에서 해석? C언어의 ‘int’형 Implementation -- How a program executes Understand most appropriate language for solving specific problems, For example: Pascal, C, Perl -- procedural, statement oriented C++, Java, Smalltalk -- Object oriented ML, Lisp -- Functional Prolog -- Rule-based JavaScript, PHP, ASP.net, C# – Procedural, Event-driven accessing

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

Python Python is a general-purpose, high-level programming language. Its design philosophy emphasizes programmer productivity and code readability. Python's core syntax and semantics are minimalist, while the standard library is large and comprehensive. Python supports multiple programming paradigms (primarily functional, object oriented and imperative), and features a fully dynamic type system and automatic memory management; it is thus similar to Perl, Ruby, Scheme, and Tcl. Python was first released by Guido van Rossum in 1991.[3] The language has an open, community-based development model managed by the non-profit Python Software Foundation. While various parts of the language have formal specifications and standards, the language as a whole is not formally specified. The de facto standard for the language is the CPython implementation.

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 Named parameter (keyword argument) (Ada, Python, Smalltalk, Common Lisp) Name mangling (name decoration): _Z on C, C+ Filename mangling : Unix file names can contain colons or backslashes 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, ASP.net, Python

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

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, 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, SNOBOL4 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 standard, or specification requirements the needs of the intended end-user or customer 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, C++, Java) 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

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 Supports multiple paradigm : Python

다음을 조사하라!! (1) 왜 ActiveX가 새로운 Windows(비스타)에서 문제를 발생하는가? 왜 우리나라에서 유달리 ActiveX를 많이 쓰는가? ActiveX 대신 문제를 해결하는 방법은? Wikipedia를 참고하라!!! (2) Orthogonality가 C언어에서 발생시킬 수 있는 오류의 예를 들어라! (3)우리가 사용하는 언어는 왜 프로그래밍 언어로 부적합한가? (4) 프로그래밍 언어란 무엇인가?