Computer Science

0. 프로그래밍 언어 스펙트럼 프로그래밍 언어 스펙트럼을 살펴보자. computation(연산)의 modle을 기준으로 분류할 수 있다. 이 스펙트럼의 가장 상위 분류에는 "선언적(Declarative)" 언어와 "명령적(Imperative)" 언어가 있다. 소 제목은 각 분류의 언어들의 주요 세부 분류(subfamilies) 1. 선언적(Declarative) 언어 선언적 언어는 주로 "컴퓨터가 무엇(WHAT)을 해야 하는가"에 중점을 둔다. 프로그래머는 원하는 결과물 또는 속성을 선언한다. 어떤 순서로 실행해야 하는지를 명시하지 않는다. 선언적 언어의 하위분류로는 함수형(Functional), 데이터플로우(Dataflow), 논리 또는 제약 기반(Logic or Constrained-Based) 언어..
0. 개요 이렇게 프로그래밍 언어의 발전 과정을 살펴보면서 의문이 들게 된다. "왜 이렇게 많은 프로그래밍 언어가 탄생했을까?" 이에 대한 대답은 아주 명확하다. "진화(Evolution)" 시간이 흐름에 따라 우리는 더 나은 방법으로 일을 수행하는 방법을 배워왔다. 프로그래밍 언어 또한 진화하였고, 다양성은 계속해서 발전하면서 새로운 아이디어와 개념을 통해 나타났다. 1. 제어 흐름(Control Flow)의 변화 초기 프로그래밍에서는 goto와 같은 제어 흐름이 주를 이루었으나, (Fortran, Cobol, Basic) 이후 구조화된 프로그래밍(Structured Programming)이 등장했다. goto의 남용을 방지하며, 대신 while 루프나 case (또는 switch) 문을 기반으로 한 ..
0. 개요 프로그래밍 언어론에 대한 깊은 이야기를 하기 전에 간단하게 들어가기에 앞서 프로그래밍의 역사와 진화에 대한 내용을 알아보자. (재미로 읽어보자) 1. 초기 과거의 프로그래밍은 상당히 무식한 방식이었다. 컴퓨터는 매우 거대한 장치였고, 프로그래머들은 비교적 저렴했다. 오히려 비싸다고 생각했는데, 아직 기술 초기 단계였고, 프로그래머들의 능력과 고급 기술은 그리 필요하지 않았기 때문이란다. 프로그래밍을 할 때에는 Machine Language(컴퓨터의 CPU를 직접 제어하기 위한 0과 1의 비트로 이루어진 코드)를 사용했다. 이를 통해 덧셈, 비교, 데이터 이동 등과 같은 기본 연산을 컴퓨터에게 지시할 수 있었다. 한 예를 들어, 두 정수의 최대공약수(GCD)를 계산하는 프로그램을 만들 때, x8..
나는 항상 근본을 좋아한다. 이 공부를 왜(Why) 해야 할까? 그 이유를 알고 시작하는 것과 모르고 시작하는 것은 흡수하는 정보의 양을 다르게 만든다. 프로그래밍 언어론을 배우는 이유는 무엇일까? 1. Why Study Programming Languages? 1. 관심과 실용성 프로그래밍 언어를 공부하는 이유는 간단하게 개인적인 관심과 실용성 때문이라고 할 수 있다. 어떤 사람들은 프로그래밍 언어가 어떻게 "내부적으로 작동하는지"에 대해 궁금해한다. 다양한 언어의 원리와 작동 방식을 이해하게 된다면, 구조적으로 코드가 어떤 방식으로 돌아가는지 알 수 있게 된다. 2. 언어 선택을 돕는다 프로그래밍 언어를 공부하면 특정 작업이나 프로젝트에 적합한 프로그래밍 언어를 선택하는 데 도움이 된다. 서로 다른 ..