[프로그래밍 언어론] 변수의 범위
·
CS/프로그래밍 언어론
변수 선언 대부분의 프로그래밍 언어에서 변수를 사용하기 위해서는 반드시 선언(Declaroation)을 먼저 해야 한다. 이러한 원칙을 사용 전 선언이라 한다. 선언된 변수가 유효한, 사용될 수 있는 프로그램 내의 범위 / 영역을 변수의 영역, 유효범위라고 한다. 정적 유효범위 규칙은 선언된 블록 안에서만 변수가 유효한 규칙이며, 이 규칙이 대부분의 프로그래밍 언어에서 사용된다. 이제 언어 S에서 지역 변수 선언을 위한 블록으로 사용되는 let 문을 살펴보자. -> ... | id = ; | let in end; -> { id [ = ]; } -> { } -> int | bool | string 이 let 구문의 의미는 다음과 같다.1. 변수 id는 타입의 변수이며, 초기화 가능하다.2. 초기..
[프로그래밍 언어론] 어휘 분석기
·
CS/프로그래밍 언어론
토큰 어휘 분석(Lexical Analysis)은 소스 프로그램을 읽어 토큰이라는 의미 있는 문법 단위로 분리하는 행위이다. 이러한 어휘 분석을 담당하는 툴을 어휘 분석기, 혹은 스캐너(Scanner)라고 한다. 토큰이란 의미 있는 문법적 단위로 일반적으로 식별자(Identifier), 상수(Constant), 예약어(Keyword), 연산자(Operator), 구분자(Delimiter) 등이 토큰으로 이용된다. 언어 S의 각 토큰을 아래와 같이 정해보겠다. 예약어 언어에서 미리 그 의미와 용법이 지정되어 사용되는 단어로 예약어 / 키워드라고 한다. 괄호 안이 예약어에 해당되는 문자열이다. BOOL("bool"), TRUE("true"), FALSE("false"), IF("if"),THEN("the..
[운영체제] 운영체제 개요
·
CS/운영체제
운영체제의 목표1. 자원 할당: 운영체제는 여러 방식을 이용해 자원을 할당한다.2. 제어 프로그램: 운영체제는 컴퓨터의 부적절한 사용 방지하기 위해 프로그램의 실행을 제어함. 컴퓨터 시스템 동작- CPU와 장치 제어기는 공유 버스를 통해 연결되어 있음- CPU는 장치에 직접 명령하지 않고, 장치 제어기에 명령을 전달함- event 발생 -> 하드웨어 / 소프트웨어로부터 발생한 인터럽트(interrupt)에 의해 신호 보내짐.- 인터럽트 기반 동작: CPU가 인터럽트 받아 해당 처리를 담당하는 서비스 루틴으로 이동- Interrupt: 하드웨어에서 발생하는 비동기적 이벤트- Trap(소프트웨어 인터럽트): 사용자 요청(시스템 콜) 혹은 오류(divide 0, 잘못된 메모리 접근 등)로 발생 저장장치 구조-..
[프로그래밍 언어론] Parser와 추상 구문 트리
·
CS/프로그래밍 언어론
파서의 구현 이전 포스팅에서 프로그래밍 언어 정의의 필수 요소인 구문법은 파서(Parser)를 통해 검사할 수 있다고 했었다. 이번 포스팅에서는 프로그래밍 언어 S의 파서 구현을 위해 필요한 요소를 알아보자. 파서의 주요 요소는 다음과 같다.1. 어휘 분석기(Lexical Analyzer): 입력 프로그램을 토큰 단위로 분리하여 반환2. 파서(Parser): 프로그램 내 문장들의 추상 구문 트리를 생성하여 반환3. 추상 구문 트리(Abstract Syntax Tree, AST): 프로그램의 구문 구조를 추상적으로 보여주는 트리. 인터프리터의 입력.4. 인터프리터(Interpreter): 프로그램 내 각 문장의 AST를 순회하며 각 문장의 의미에 따라 해석하여 수행. S 언어 S 언어는 실제 있는 언어는 ..
[프로그래밍 언어론] 구문법 - 파스 트리와 모호성
·
CS/프로그래밍 언어론
개요 지난 프로그래밍 언어론 구문법 포스팅에서 다루지 않았던 것이 있다. 바로 파스 트리(Parse Tree)이며, 이것은 Derivation Tree 혹은 Syntax Tree로도 불린다. Parse Tree(Derivation Tree)수식 문법에서 3 + 4 * 5 유도하기E -> E * E | E + E | (E) | NN -> ND | DD -> 0 | 1 | 2 | ... | 9 E => E + E => N + E => D + E => 3 + E => 3 + E * E => 3 + N * E => 3 + D * E => 3 + 4 * E => 3 + 4 * N => 3 + 4 * D => 3 + 4 * 5위 수식 유도를 살펴보자. 파스 트리란 별 것 없이 위 유도 과정을 한 눈에 알아보기 쉽게..
[프로그래밍 언어론] 구문법
·
CS/프로그래밍 언어론
구문법 구문법이란 '문장을 구성하는 방식'으로 앞선 포스팅에서 알아보았듯이 어휘 분석, 의미론과 함께 프로그래밍 언어 정의를 위해 필수적인 개념이다. 그렇다면, 가능한 문장은 무한히 많을 것인데, 이런 무한한 것들을 유한한 것으로 어떻게 정의할 수 있을까? 우리는 이것을 재귀식을 이용해 해결할 수 있다. 이 포스팅에서 여러 구문의 구문법들을 알아보자. 이진수의 구문법 이진수는 0 혹은 1로 표현된다. 이것을 다음과 같이 표현해보자. 1. 숫자 D는 '0' 또는 '1'이다.2. 이진수 N을 구성하는 방법은 다음 두 가지이다. 숫자 D 하나로 표현하는 것과 이진수 N 다음에 숫자 D를 하나 붙여 구성하는 것이다. 위의 두 가지의 이진수 구성 방법을 논리 규칙 형태로 표현해 보자.1. D는 숫자이다. -> ..
[프로그래밍 언어론] 프로그래밍 언어론 개요
·
CS/프로그래밍 언어론
개요 사실 프로그래밍 언어론이라는 것을 들으면.. 그게 뭔데? 하는 반응이 많을 것이다. 요즘 대학원 랩실만 보더라도 거의 모든 곳에서 AI를 활용한 연구를 진행하다 보니 프로그래밍 언어를 주 주제로 하는 곳을 많이 찾아보기도 힘든 상황이니.. 그런데 사실 프로그래밍 언어론도 AI 모델에서 상당히 중요한 부분을 차지하고 있다. 프로그래밍 언어론을 기반으로 컴파일러를 만들고, 컴파일러 가속을 통해 인공지능 / 딥러닝 모델의 성능을 향상하는 것도 가능하니 프로그래밍 언어론도 인공지능과 영 관련이 없다고는 할 수 없겠다. 사담이 길었는데, 짧게 요약하면 프로그래밍 언어론은 결국 프로그래밍 언어의 구조, 의미, 설계 방식에 대해 다루는 학문이다. 프로그래밍 언어 먼저 프로그래밍 언어란 '계산 과정을 기계가 ..
[COLMAP] TanksAndTemples를 활용한 재구성 평가
·
CS/COLMAP
또 다시 긴 시간만에 돌아온 포스팅.. 종강 이후 약간의 요양을 하며 쉬었다. 더 늦기 전에 학부때 배운 내용을 최대한 많이 이 블로그에 정리해 보려고 한다. 동국대학교 컴퓨터공학과라면 이 블로그에서 조금이라도 도움을 얻어가길 개요https://hyeon0117.tistory.com/25 [COLMAP] COLMAP 오픈소스 튜토리얼근 1개월만에 돌아온 CS 관련 포스팅.. 시험기간과 제출할 프로젝트 기간이 겹쳐버려 쉬지도 못하고 너무 힘들게 4월을 보내버렸다..그래도 전공과목 공부하며 얻은 것이 없지는 않으니 조금 더hyeon0117.tistory.com 지난 COLMAP 포스팅에서는 COLMAP 툴을 이용해 여러 각도에서 찍은 사진을 재구성하고, 해당 재구성 파일의 카메라 정보, 메쉬 정보까지 따로 ..