본문 바로가기

분류 전체보기

(47)
[PL] 12. Exception Handling and Event Handling 기본 개념 Exception 하드웨어 또는 소프트웨어에서 감지될 수 있는 비정상적인 이벤트. 에러일 수도 있고 에러가 아닐 수도 있다. 보통 특별한 처리가 필요할 수 있다. Exception handling 예외가 감지된 후에 필요한 특별한 처리 Exception handling을 해주는 code unit(코드 단위)은 exception handler라고 부른다. 예외 Exception 예외(상황)란? 심각하지 않은 오류 혹은 비정상적 상황 예외 발생 시 계속 수행할 수 있도록 처리해야 함 발생된 예외를 처리하지 못하면 프로그램 종료 예외에 대한 적절한 처리 안전한 프로그램 실행을 위해 매우 중요 C++, Java, Python 등 최신 언어들은 예외 관련 기능을 제공함 -> Reliability가 아니..
[PL] 11. Support for Object-Oriented Programming Object-Oriented Programming 언어의 주요 특징 Abstraction 추상화 implementation을 숨김 - Readability가 올라간다. 재사용성이 올라감 + 모듈화(유지보수 쉬워짐) Encapsulation 캡슐화 Member와 접근하는 Method를 합침, Member에 접근하려면 Method를 통해서만 가능 - 보안성이 높아짐 Re-use 재사용 Inheritance(상속)를 통해서 가능 - 모듈별로 재사용 가능하게 한다. Polymorphism 다형성 Dynamic Function(Method) Binding - 정의된 함수가 실행될 때 run-time에 어떤 객체인지 보고 결정 Inheritance (상속) Re-use로부터 생산성을 향상할 수 있다. 상속이 없는 ..
[PL] 10. Abstract Data Types and Encapsulation Constructs Abstraction 추상화 : 가장 중요한 속성만 포함하는 entity(개체)의 view or representation (관점 or 표현) 추상화 개념은 프로그래밍과 컴퓨터 과학에서 중요한 개념이다. 거의 모든 프로그래밍언어는 subprogram을 통한 프로세스 추상화를 지원한다. Process abstraction 1980년 이후로 설계된 거의 모든 프로그래밍언어는 데이터 추상화를 지원한다. Data abstraction 객체지향 언어 Simula-67 : 실세계에 있는 객체들을 표현, 이들 사이의 상호작용을 시뮬레이션하기 위한 언어. 클래스 개념 도입 Smalltalk : 순수한 객체지향 언어로 설계, 최초로 GUI를 제공하는 언어 C++ : C에 클래스 개념 도입 / 상속, 가상함수, 추상 클래..
[PL] 09. Implementing Subprograms Subprogram Linkage Subprogram이 call하고 return하는 것을 함께 부르는 것 Subprogram이 call한다는 것의 일반적 의미 Parameter의 전달 방법 (Actual parameter가 formal parameter로 전달) Local 변수를 Stack-dynamic으로 할당해준다. 호출하는 프로그램(calling program)이 실행 상태를 저장한다. Transfer of control and arrange for the return (return을 위해 제어와 arrange를 전환) 중첩을 지원하면, non-local 변수에 대한 접근이 지원(arrange)되어야 한다. Subprogram이 return한다는 것의 일반적 의미 out mode / inout mo..
[PL] 08. Subprograms Subprogram 각 Subprogram은 하나의 entry point(진입점)를 가진다. Calling program은 Subprogram이 실행되는 동안 일시 정지된다. Subprogram이 종료되면 Control은 항상 Caller로 반환된다. Function의 Declaration(function body가 X)과 Define(function body가 포함)이 구분되는 언어 C/C++/Java (Python은 구분 X) Subprogram Definition Subprogram 추상화의 동작과 interface를 설명 Python의 function definition은 실행 가능하다. 다른 모든 언어의 function definition은 실행 불가능하다. Subprogram Call Subp..
[PL] 07. Statement-Level Control Structures Control Statements 60년대에 알고리즘은 “Sequential / two-way selection / pretest logical loop 로 표현 가능하다.”라고 했다. 어셈블리어 예시 Conditional (BEQ, BNE 등) Ex) 500 BEQ R2, R4 2000 / R2, R4가 같으면 500에서 2000으로 이동 Unconditional (JMP 등) Ex) 500 JMP 10000 / Unconditional하게 10000으로 이동 Control Structure 컨트롤 명령어(if, while 등)와 그 명령어에 의해서 제어되는 명령어들의 집합 (control statement + statement whose execution it controls) 구조적 프로그래밍 go..
[PL] 06. Expressions and Assignment Statements Expression 프로그래밍 언어에서 computation을 특정하는 기본 수단 V : (State, Expr) -> Value V는 상태 S에서의 E의 값 S = {x=1, y=2} , V(S, x+y) = 3 산술 계산 Arithmetic Expression : V(s, E1+E2) = V(s, E1) + V(s, E2) 비교 연산 Relational Expression = 논리 연산 Boolean : V(s, E1==E2) = T if V(s, E1) == V(s, E2) Logic Expression Arithmetic Expression 초기 프로그래밍 언어 개발의 동기 구성 operator(연산자) operand(피연산자) 괄호 function call(함수 호출) Operator : 단항 ..
[PL] 05. Data Types 기본 개념 Data type 내가 사용할 수 있는 값의 집합 + 내가 행할 수 있는 연산의 집합 integer 변수와 boolean 변수에는 같은 값이 들어갈 수도 있다. (Variable은 최소 할당가능한 크기가 ‘바이트’이기 때문) boolean은 한 바이트에 0 또는 1의 값이 들어가도록 제한. 그리고 integer와 boolean이 행할 수 있는 연산은 다르다. Descriptor Variable의 타입마다 하나씩 따라다닌다. Variable을 꾸미는 값 int a에 대해서, a의 속성을 갖고 있다. Variable을 관리할 때, 시스템이 필요한 정보를 모아 놓는다. scope이나 lifetime은 굳이 변수 하나마다 따라다니면서 저장할 속성은 아니다. 코드 자체적으로 정해지기 때문 value를 ..