Computer Science/Programming :: 프로그래밍언어론 7

프로그래밍언어론 강의 9화 :: 타입, 원시타입, 사용자정의타입, 복합타입

프로그래밍언어론 9화를 듣고 배운내용 타입 데이터 집합 + 연산 집합 변수의 속성 중 한 가지 서브프로그램의 인자와 반환에도 이용 연산의 안정성 보장을 위해 필요 안정성 레벨에 따른 분류 강타입 언어 타입이 오류를 모두 검출 예) Haskell, ML, 약타입 언어 일부 타입 오류를 허용 예) C 무타입 언어 타입이 계속 변경될 수 있는 언어 예) Phython, 대부분의 스크립트 언어 원시타입(Primitive type) 기본적으로 제공하는 타입 미리 정의된 타입, 내장 타입 정수형, 실수형, 문자형, 논리형 등 사용자정의타입(User-defined type) 직접 정의해서 사용 배열, 구조체 등 데이터 형태에 따른 분류 단순타입(Simple type) 집합의 요소가 하나의 데이터로 구성 = 스칼라 타..

프로그래밍언어론 강의 8화 :: 변수 영역, 정적 영역, 동적 영역, 이름 공간

프로그래밍언어론 8화를 듣고 배운내용 변수의 영역(scope) 변수를 사용할 수 있는 범위 변수에 값을 입력하거나, 읽어올 수 있는 범위 영역의 시작: 변수 선언 수명의 시작 동적 바인딩 => 변수 선언 정적 바인딩 => 프로그램 수행 시작 블록(Block) 영역을 구분해주는 단위 블록안에서 변수 선언 가능 => 영역의 끝은 블록이 끝나는 곳 블록 표연이나 적용 기준은 언어별로 다르다 지역변수 블록 안에 선언된 변수 비지역변수 블록 밖에서 선언되고, 블록 안에서도 사용할 수 있는 변수 참조 환경 한 위치에서 사용할 수 이는 모든 변수의 모음 해당 위치에 모든 지역변수, 비지역변수 영역 규칙 정젹 영역 규칙, 동적 영역 규칙 자유변수 현재 블록에서 선언되지 않고 사용하려는 변수 비지역변수거나 오류일 수 있..

프로그래밍언어론 강의 7화 :: 변수, 바인딩

프로그래밍언어론 7화를 듣고 배운내용 변수(Variable) 데이터를 저장하거나 나중에 사용할 수 있도록 메모리를 추상화한 것 변수의 속성 변수명: 변수 이름, 식별자 타입: 변수에 저장할 수 있는 데이터 집합의 종류 주소: 변수가 사용하는 메모리 위치 값: 변수에 저장된 데이터, 바뀔 수 있다. 바인딩(Binding) 언어 구성 요소의 속성들이 구체적으로 결정되는 것 let x12 x12 = 1 + 5 * 2 이런 의미 변수명을 x12로 바인딩 하겠다. +을 덧셈 연산자로, *을 곱셈 연산자로 바인딩 하겠다. x12 값을 11로 바인딩 하겠다. 바인딩 일어나는 시점 언어의 정의 시점 언어의 구현 시점 컴파일 시점 링크 시점 로드 시점 프로그램 수행 시점 변수를 바인딩 하는 것은 변수명, 타입, 주소, ..

프로그래밍언어론 강의 6화 :: 언어 구현, 인터프리터, 컴파일러

프로그래밍언어론 6화를 듣고 배운내용 프로그래밍 언어 정의 구문 규칙 문맥 자유 문법과 EBNF로 주로 사용 의미 규칙 자연어 주로 사용 프로그래밍 언어 정의 예시: 로봇 제어 언어 구문 규칙 EBNF 사용: ::= { forward | left | right } 의미규칙 forward: 로봇이 앞으로 1만큼 이동 left: 로봇이 왼편으로 90도 회전 right: 로봇이 오른편으로 90도 회전 프로그래밍 언어 구현 그 언어로 작성된 프로그램을 수행하는 프로그램 CPU의 함수 모형 M[Pm](in) = out M: CPU 기계어 Pm: 기계어로 작성된 프로그램 in: 입력 데이터 out: 출력 데이터 프로그래밍 언어 구현 형태 인터프리터 함수 모형 lntL[PL](in) = out IntL: 연어 L의 ..

프로그래밍언어론 강의 5화 :: 구문 분석

프로그래밍언어론 5화를 듣고 배운내용 프로그램 분석 문자 => 어휘 => 구문 토큰: 어휘 분석을 통해 얻어지는 것 => 연산자, 구분자, 식별자, 예약어 등 구문 분석 유도 구문 규칙을 이용해서 프로그램을 만드는 과정 유도가 가능하면 문법적 오류가 없는 유효한 프로그램 파스 트리(Parse Tree) 유도를 트리 형태로 나타낸 것 구조 루트 노드: 시작 비단말 기호 비단말 노드: 비단말 기호 단말 노드: 단말 기호 끝에 있다 그래서 단말 노드라 그런다 비단말은 밑에 자식 노드가 있다는 뜻이겠네 단말 노드를 왼쪽부터 오른쪽으로 차례로 나열하면 프로그램이 된다. 파스트리가 존재하면 구문에 부합하는 표현 존재하지 않으면 오류 있는 표현 모호한 문법 동일한 표현에 대해 서로 다른 파스 트리가 만들어지는 문법 ..

프로그래밍언어론 강의 4화 :: 구문론과 의미론

프로그래밍언어론 4화를 듣고 배운내용 구문론 문장이 구성되는 방식 의미론 문장이 나타내는 의미 프로그램의 구문(구조) 문자: 영어 알파벳, 아라비아 숫자, 특수 기호 등 어휘(토큰): 문자의 모임. 최소한의 의미를 갖는 단어 구문: 프로그램을 작성하는 규칙, 토큰을 모아 프로그램 작성 어떤 형태로 작성해야 하는지 프로그램의 의미 프로그램을 통해 발생하는 현상 어떤 일이 일어나는지 프로그래밍 언어의 구문은 문맥 자유 문법으로 표현된다. 문맥 자유 문법(CFG: Context-Free Grammer) 비단말 기호: 정의될 대상 단말 기호: 언어에서 직접 사용되는 표현 시작 비단말 기호: 언어에서 독립적으로 사용될 수 있는 단어 규칙: 비단말 기호를 단말 기호와 비단말 기호의 조합으로 정의 => 각 규칙은 하..

프로그래밍언어론 강의 3화 :: 프로그래밍 패러다임

프로그래밍언어론 3화를 듣고 배운내용 프로그래밍 패러다임 프로그램을 작성하는 전형적인 방식 특정 언어에 종속적 X 프로그래머가 추구하는 프로그램 작성 방식 프로그래밍 패러다임 변화 명령형 프로그래밍 패러다임: 연산을 순서로 결정 절차형 프로그래밍 패러다임: 데이터 처리 방식 자체를 잘 정리(컴포넌트 방식인가?) 함수형 프로그래밍 패러다임: 값만 집중하자. 값을 넣고, 값만 받고 논리 프로그래밍 패러다임: 조건이 참 or 거짓, 규칙을 보자. 크게 보면 선언적 프로그래밍이다. 객체지향 프로그래밍 패러다임: 같은 데이터에 다른 처리 절차를 여러개 명시 프로그래밍 패러다임의 양립성 => 언어들에서 프로그래밍 패러다임은 양립할 수 있다. 변화의 배경 응용 도메인의 변화 요구사항의 변화 계산 분야 => 다양한 응..

728x90