정보처리기사 자격증 필기내용 중 프로그래밍 언어 파트에서 언어유형에 대해 말해본다. 우선 프로그래밍 언어에는 절차적 프로그래밍 언어와 객체 지향 프로그래밍 언어, 그리고 선언형 언어, 스크립트 언어가 있다. 이들의 의미와 특징에 대해 더 자세히 알아보자.

절차적 프로그래밍 언어란? 절차적 프로그래밍 언어라는 것은 순서대로 단순하게 명령을 처리하는 것이 아니라 루틴이나 서브루틴, 메서드, 함수 등과 프로그래밍하는 패러다임이다. 따라서, 함수를 정의를 한 번만 정의해 두면, 비슷한 상황에서 다른 장소에서 해당 코드를 재사용할 수 있다(특징#1 코드의 재사용). 또, 함수로 따로 정의함으로써, 메인 코드는 단순화되어 프로그램 전체의 흐름을 파악하기 쉬워지는 메리트가 있다(특징#2 낮은 복잡성).
이와 같이, 각각의 기능을 모듈화해 프로그램을 새롭게 구조화(특징 #3 모듈화 및 구조화)할 수 있다고 하는 특징도 있다.

이러한 절차적 프로그램 언어의 종류 가운데 이하의 4개 언어에 대해 살펴본다.
- ALGOL(알골) 수속형 언어로 처음으로 재귀 호출이 가능해져, 알고리즘의 연구 개발용으로서 이용할 목적으로 생성된 언어이다.

2) C언어 모든 유형의 컴퓨터 시스템에서 사용할 수 있는 프로그래밍 언어이지만, 처음에는 유닉스 운영체제에서 사용하기 위해 개발된 언어이다.

3) 베이직(BASIC)의 이름에서 알 수 있듯이 기초적인 것으로 교육용으로 개발된 언어로 문법이 상대적으로 다른 언어에 비해 쉬운 편이다. 덧붙여서 베이직의 경우는 수속적인 프로그래밍 언어이면서 스크립트 기반으로 실행될 수도 있다.
4) FORTRAN(포트란) 주로 수학 함수, 예를 들어 삼각함수, 지수함수, 대수함수, 산술 기호 등에 사용되며 특히 연구 및 과학 계산에서 필수적인 벡터, 행렬 계산 기능이 내장되어 있으며 과학기술 전문언어이다. 개인적으로 기계공학부 때는 포트란에서 유한하고, 소법 같은 프로그래밍도 했지만 최근에는 C나 파이슨으로 많이 옮겨온 것 같다.

오브젝트 지향 프로그래밍 언어란? 오브젝트 지향 프로그래밍 언어라는 것은 프로그램을 단순히 데이터와 처리 방법으로 나누는 컨셉이 아니라 프로그램을 여러 오브젝트(Object)라는 기본단위로 생각하여 이들 간의 상호작용을 프로그래밍하는 언어라고 생각하면 될 것이다.
이러한 객체 지향 프로그래밍의 특징은 대표적으로 5가지가 있는데 첫 번째 특징으로 속성과 메서드를 하나로 결합하여 객체로 구성한다는 성질이 있다. 즉, 어떤 오브젝트에 포함되는 것이 통상은 어떤 정보만 들어가 있지만, 이러한 정보가 오브젝트의 기본적인 속성이라면 거기에 메서드라고 불리는 것이 추가로 들어갈 수 있다. 메서드는 함수라고 생각하면 된다(특징#1 캡슐화).

다음의 특징으로서는, 다른 오브젝트에 본인의 정보를 숨기고 본인의 연산만을 통해서 액세스가 허용된다(특징 #2 정보 은닉). 또, 상위 클래스의 모든 속성과 연산을 하위 클래스에 상속시켜, 하위 클래스에서는 보다 구체적으로 상세한 정보를 상위 클래스의 토대아래에 추가할 수 있다(특징 #3 상속성). 데이터 공통의 성질을 추출해 단순화할 수 있어 모델링 할 수 있다(특징#4 추상화). 마지막으로, 하나의 메시지에 대해서 여러가지 방법으로 응답 가능하게 변형할 수 있다(특징 #5 다형성).
오브젝트 지향 프로그래밍 언어 중 C++와 JAVA 2개 언어에 대해 살펴보자. C++는 이름에서 보듯이 C언어에서 출발해 확장된 형태로 오브젝트 지향형으로 프로그래밍 가능한 언어이다. JAVA는 C/C++와 유사한 프로그래밍 문법을 가지지만, C++에 비하면 보다 단순하고 효율적으로 프로그래밍이 가능하다.선언형 프로그래밍 언어란? 선언형 프로그래밍 언어라는 것은 특정 선언만을 명시해 프로그램을 동작시키는 형태의 언어이다. 이 언어에는 함수형 언어와 논리형 언어라는 2가지 타입으로 나눌 수 있는데, 함수형 언어의 경우는 자료처리를 수학적 함수의 계산 단위로서 보고, 상태와 가변 데이터를 멀리하는 프로그래밍 언어이다. 논리형 언어는 논리문을 이용하여 프로그래밍하고 계산을 수행하는 언어이다.
특징으로서는, 우선 프로그램 동작의 변경없이 관련치를 대신할 수 있다(특징 #1 참조 투명성). 또 가독성이나 재사용성이 좋은 편이다(특징 #2 뛰어난 가독성). 마지막으로 외부적인 환경의 디펜던시를 줄이고 알고리즘에 집중하여 개발이 가능하다(특징 #3 신속한 개발이 가능).

선언형 프로그래밍 언어의 종류로서는 합계 5 개를 소개한다(HTML, XML, SQL, Prolog, Haskell 등).
- HTML 인터넷을 위한 하이퍼텍스트 문서를 만들기 위해 사용된 언어이다.

2) XML 특수한 목적을 가진 Mark-up 언어를 만드는데 사용되기를 권장하는 다목적 Markup 언어이다.

3) SQL 데이터베이스에 질의할 수 있는 언어이다.

4) Prolong 논리식에 따라 오브젝트와 오브젝트의 관계에 관한 문제를 해결하기 위한 언어이다.
5) Haskell 함수형 언어를 통합 정리하여 만든 일반적인 순수 함수형 언어이다.스크립트 프로그래밍 언어란? 마지막으로 스크립트 언어에 대해서 살펴보자. 스크립트 언어는 기계어로 컴파일되지 않고 다른 번역기를 통해 소스를 읽고 동작시키는 프로그래밍 언어 기법이다. 우선 컴파일 없이 바로 실행하여 결과를 확인(특징#1 비 컴파일)할 수 있다는 특징이 있다. 아무래도 한 번 프로그래밍을 건 프로그래밍 언어이므로 배우기 쉽기 때문에 빨리 코드 작성이 가능한 언어이다(특징#2 신속한 개발이 가능). 마지막으로 상대적으로 단순한 구문과 의미를 내포하고 있다(특징#3 단순성).

스크립트 언어의 종류는 다음 4가지에 대해 살펴보자.
- 자바스크립트 웹페이지를 동작하는데 사용되는 클라이언트용 스크립트 언어이다.
- 2) Node.js 스크립트 기반의 경량 서버를 개발할 수 있는 언어이다.

3) PHP 동적 웹페이지를 만들기 위해 설계되어 작성자가 원하는 웹페이지 작성이 가능한 언어이다.

4) 파이썬 플랫폼 독립적이며 interpreter식이며 객체지향적, 동적 타이핑 대화형 언어이다. 현재 연구측에는 가장 많이 쓰이고 있으며 빅데이터 분석과 같은 대용량 분석에서도 다양한 함수 기능과 함께 효율적인 연산으로서 많이 사용되고 있다. 물론 C++로 했을 때보다 빠른 연산이 가능하지만 머신러닝이나 딥러닝 같은 라이브러리가 파이썬 기반이 많고 파이썬을 많이 사용하는 경향이 있다.
