ℓ 프로그래밍 언어란 무엇인가?
프로그래밍 언어에 대한 정의로 "기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 서술하기 위한 표기 체계이다."
이 정의에서 나타난 세 가지 주요 개념은 다음과 같다.
● 계산(computation)
튜링 머신이라는 수학적 개념을 가지고 형식적으로 정의할 수 있다.
컴퓨터가 수행할 수 있는 작업으로 간주한다.
● 기계가 읽을 수 있는(machine-readable)
단순한 구조를 가지고 있어야 한다.
제한된 시간 내에 번역이 가능하다.
프로그래밍 언어의 구조를 문맥 자유 언어로 제한한다.
● 사람이 읽을 수 있는(human-readable)
추상성을 제공해야 된다. 그래서 자연어를 닮게 된다.
소프트웨어 설계 기법을 지원하는 소프트웨어 개발 환경의 한부분이 되었다.
ℓ 프로그래밍 언어를 배워야 하는 이유
● 현재 사용하고 있는 언어를 더욱 잘 이해하게 된다.
● 유용한 프로그래밍을 구사할 수 있는 능력을 증대시킨다.
● 프로그래밍 언어를 선택할 수 있는 능력을 증대시킨다.
● 새로운 프로그래밍 언어를 배우기 쉽게 해 준다.
● 새로운 프로그래밍 언어를 설계하기 쉽게 해 준다.
ℓ 프로그래밍 언어에서의 추상화
● 자료 추상화
(1) 기본적 추상화
기본적 자료 추상화란 컴퓨터 내부의 자료 표현을 추상화 한다.
기억 장치의 위치는 변수로 추상화되고, 자료의 값은 2진법 표기가 아닌 정수, 실수와 같은 자료형으로 추상화된다.
(2) 구조적 추상화
자료값의 집합의 추상화한 방법이다. 대표적인 예로 배열과 레코드가 있다.
구조적 추상화된 자료형들은 구조 자료형 또는 단순히 구조형이라고 부른다.
프로그래머가 생성한 새로운 자료형이다.
(3) 단위 추상화
큰 프로그램에서는 한 자료형의 생성과 사용에 대한 정보를 한 장소에 모아둔다.
이러한 체계를 자료 캡슐화 혹은 추상 자료형이라고 하며, 단위 자료 추상화의 대표적인 예이다.
전형적인 예로 class 등 있다.
● 제어 추상화
(1) 기본적 추상화
기본적 제어 추상화는 몇 개의 기계 명령어를 모아 이해하기 쉬운 추상 구문으로 만든 것을 말한다.
x := x + y
<예>
(2) 구조적 추상화
프로그램에서 어떤 검사된 값에 따라 분할된 명령어의 한 그룹을 수행하도록 하는 것이다.
대표적인 예로 if문 같은 택일문, 구조화된 반복문, 프로시저 추상화가 있다.
(3) 단위 추상화
라이브러리처럼 프로시저의 집합을 추상화시킬 수 있다.
ℓ 계산 전형
● 절차적 언어
명령의 순차적 실행, 기억장소 위치를 표현하는 변수의 사용, 변수의 값을 변경하기 위한 배정문의 사용으로 특정지울 수 있다.
● 함수적 언어
● 논리형 언어
함수개념에 기분을 둔 함수적 언어와 기호 논리학에 기반한 논리형 언어는 많은 자료에 동시 적용될 수 있는 계산, 비결정적인 계산, 혹은 순서에 의존하지 않는 계산을 기술하는데 매우 비효율적이다.
논리형 언어는 계산의 내용만을 선언하듯이 기술하여 선언적 언어라고도 부른다.
● 객체 지향 언어
객체에 기반된 언어이다.
객체는 기억장소와 이 기억장소의 값을 변경할 수 있는 연산의 집합이라고 기술할 수 있다.
대표적인 예로 C++, JAVA 등이 있다.
ℓ 언어 정의
● 언어 구문론
프로그래밍 언어의 구문은 많은 면에서 자연어와 유사하다.
언어의 구문에 관한 부분은 형식화가 많이 되어 있는 부분으로 오늘날 거의 대부분의 언어가 문맥 자유 문법을 사용하고 있다.
● 언어 의미론
언어 구문은 언어의 표면적인 구조만을 정의한다.
언어의 의미론은 이보다 훨씬 복잡하다.
의미론은 프로그램의 실행 시 어떠한 일이 일어나는가를 기술한다.
'컴퓨터 과학 > 프로그래밍 언어 개념' 카테고리의 다른 글
함수 호출 방식에 대한 이해: Python, C, C++, Java 비교 (1) | 2024.09.29 |
---|---|
프로그래밍 언어 개념 Chapter 2.1 :: 언어의 변천 (0) | 2023.09.27 |