10강. 복합타입

학습개요 지난 강의에서는 데이터 집합의 요소가 하나의 데이터로만 구성된 단순타입에 해당하는 여러 타입들을 배웠습니다. 하지만 실제 프로그램에서는 훨씬 복잡한 형태의 데이터를 다룰 필요가 있습니다. 이번 강의에서는 데이터 집합의 요소가 데이터들의 구조로 구성된 복합타입에 대해 살펴봅니다. 복합타입에 해당하는 배열, 문자열형, 연관배열과 해싱, 구조체, 공용체에 대해 알아본 후, 포인터형과 참조형에 대해 알아봅니다. 학습목표 배열과 문자열형을 설명할 수 … Read more

9강. 타입

학습개요 프로그램은 –1, 0, 1 같은 정수, 0.75, 3.141592 같은 실수, x, y, z 같은 문자 등 다양한 형태의 데이터를 처리합니다. 이러한 데이터들은 사람의 눈으로 보기에는 모두 글자의 조합이지만, 프로그래밍 언어 입장에서는 내부적인 표현 방법도 다르고 처리 방법도 다릅니다. 따라서 대부분의 프로그래밍 언어에서는 데이터를 효과적으로 처리학 위해 타입 개념을 지원합니다. 이번 강의와 다음 강의에서는 프로그래밍 … Read more

8강. 변수의 영역

학습개요 앞서 우리는 변수의 수명에 대해 배웠습니다. 그럼 수명이 있는 동안에는 무조건 변수를 사용할 수 있을까요? 안타깝게도 대부분의 프로그래밍 언어에서는 그렇지 않습니다. 이번 강의에서는 프로그램에서 변수를 사용할 수 있는 범위인 변수의 영역에 대해 알아봅니다. 우선 변수의 영역 및 이와 관련된 기본 개념을 알아본 후, 두 가지 영역 규칙인 정적 영역 규칙과 동적 영역 규칙에 대해 … Read more

7강. 변수와 바인딩

학습개요 우리는 지금까지 몇 주에 걸쳐 프로그래밍 언어의 구현과 관련된 내용을 알아보았습니다. 오늘부터는 프로그래밍 언어의 구성 요소에 대해 다룰 예정입니다. 그 첫 여정으로 앞으로 두 주에 걸쳐 변수에 대해 알아보겠습니다. 변수는 프로그램의 기본이면서 가장 중요한 개념입니다. 이번 강의에서는 변수의 개념과 변수의 바인딩에 대해서 알아봅니다. 바인딩이라는 용어 자체가 생소하기에 바인딩의 개념을 먼저 알아본 뒤 변수의 속성별로 … Read more

6강. 프로그래밍 언어의 구현

학습개요 앞서 우리는 프로그래밍 언어의 구문론과 의미론, 구문 분석 이론에 대해 살펴보았습니다. 그렇다면 구체적으로 프로그래밍 언어는 어떻게 구현할 수 있을까요? 다시 말해서 프로그래밍 언어의 인터프리터나 컴파일러를 어떻게 작성할 수 있을까요? 프로그래밍 언어 구현이 복잡하긴 하지만 실제로는 우리에게 잘 알려진 자료 구조를 사용합니다. 구문 분석을 위해서는 조금 복잡한 알고리즘이 사용되는데, 성능을 크게 고려하지 않는다면 사람이 이해하기 … Read more

5강. 구문 분석

학습개요 앞서 우리는 문자가 모여 어휘를 구성하고 이 어휘들이 구문에 맞게 모여 프로그램을 구성하는 것을 보았습니다. 이렇게 만들어진 프로그램을 실행하기 위해서는 우선 그 프로그램을 분석하여 어떤 구문이 사용되었는지 파악한 후 그에 맞춰 기계적으로 수행하면 됩니다. 이번 강의에서는 프로그램 분석에 필요한 어휘 분석과 구문 분석에 대해 알아봅니다. 특히 구문 분석을 위한 유도와 파스 트리의 개념을 학습하고, … Read more

4강. 구문론과 의미론

학습개요 프로그래밍 언어의 두 가지 측면으로 프로그램 형태에 관한 이론인 구문론과 프로그램 수행 의미에 관한 이론인 의미론이 있음을 앞에서 배웠습니다. 이번 강의에서는 프로그래밍 언어의 형식적 정의를 위한 구문론과 의미론에 대해 본격적으로 알아봅니다. 우선 구문론과 의미론의 개념을 살펴본 후, 구문을 표현하는 방법과 의미를 표현하는 방법에 대해 학습합니다. 특히 구문의 표현법인 BNF, EBNF, 구문 도표에 대해서는 자세히 … Read more

3강. 프로그래밍 언어 패러다임

학습개요 프로그램으로 인해 컴퓨터 사용 방법은 획기적으로 바뀌게 됩니다. 단순히 계산만 빠르게 수행했던 기계였던 컴퓨터가 사람의 여러 가지 업무를 도와주고 처리할 수 있는 일로 바뀌게 된 거지요. 수학만 잘했던 모범생이 일 처리의 달인이 되었다고나 할까요? 프로그램 자체도 컴퓨터 사용 방식의 일대 변혁을 가져왔지만 프로그래밍 언어 자체에도 변화가 일어나기 시작했습니다. 여러 다양한 프로그래밍 방식을 지원하기 위해서 … Read more

2강. 프로그래밍 언어의 발전 및동작원리

학습개요 프로그래밍 언어는 어떻게 발전되어 왔을까요? 역사를 모르는 사람에게 미래는 없다고 하는데, 그렇다면 프로그래밍 언어의 발전 과정에서 우리는 무엇을 배워야 할까요? 도대체 프로그래밍 언어는 컴퓨터에서 어떻게 동작하는 것일까요? 프로그래밍 언어론을 배우고 나면 프로그래밍 언어를 더 잘 이해하고 현명하게 프로그래밍 언어를 선택할 수 있다고 했는데 그렇다면 좋은 프로그래밍 언어란 무엇일까요? 프로그래밍 언어의 어떤 특성이 좋은 프로그래밍 … Read more

1강. 프로그래밍 언어 소개

학습개요 프로그래밍 언어는 무엇일까요? 세상에 배워야 할 것이 많은데, 프로그래밍 언어론은 왜 또 배워야 하는 것일까요? 사실 컴퓨터가 없었다면 프로그래밍도 없었을 것이고 프로그래밍 언어도 나타나지 않았을 겁니다. 하지만 컴퓨터라는 재미있는 기계가 세상에 나타났고, 그 덕분에 우리는 실로 많은 일을 편하게 할 수 있습니다. 프로그래밍 언어란 컴퓨터를 쉽게 다루기 위해 수많은 사람들이 노력한 결과입니다. 이번 강의에서는 … Read more