정보처리기사 자격증 필기 내용 중 프로그래밍 언어 파트에서 언어 유형에 대해 이야기해 본다. 먼저 프로그래밍 언어에는 절차적 프로그래밍 언어와 객체지향 프로그래밍 언어, 그리고 선언형 언어, 스크립트 언어가 있다. 이들의 의미와 특징에 대해 보다 자세히 알아보자.
절차적 프로그래밍 언어란? 절차적 프로그래밍 언어란 순서대로 단순히 명령을 처리하는 것이 아니라 루틴이나 서브루틴, 메소드, 함수 등을 등으로 프로그래밍하는 패러다임이다. 따라서 함수를 정의를 한번만 정의해 놓으면 비슷한 상황에서 다른 장소에서 해당 코드를 재사용할 수 있다(특징 #1 코드 재사용). 또한 함수로 따로 정의함으로써 메인 코드는 단순화되면서 프로그램 전체의 흐름을 파악하기 쉬워지는 장점이 있다(특징 #2 낮은 복잡성).
이처럼 각각의 기능을 모듈로 구성하여 프로그램을 새롭게 구조화(특징 #3 모듈화 및 구조화)할 수 있다는 특징도 있다.
이러한 절차적 프로그래밍 언어의 종류 중 다음과 같은 4개 언어에 대해 알아본다.
- 알골 절차형 언어 최초로 재귀 호출이 가능해 알고리즘 연구개발용으로 이용하기 위한 목적으로 생성된 언어다.
2) C언어 모든 유형의 컴퓨터 시스템에서 사용할 수 있는 프로그래밍 언어이지만 처음에는 유닉스 운영 체제에서 사용하기 위해 개발된 언어이다.
3) 베이직 이름에서 느낄 수 있듯이 뭔가 기초적인 것으로 교육용으로 개발된 언어로 문법이 상대적으로 다른 언어에 비해 쉬운 편이다. 참고로 베이직의 경우에는 절차적인 프로그래밍 언어이면서 스크립트 기반으로 실행할 수도 있다.
4) FORTRAN(포트란) 주로 수학함수, 예를 들어 삼각함수, 지수함수, 대수함수, 산술기호 등에 사용되며, 특히 연구나 과학계산에서 필수적인 벡터, 행렬계산기능이 내장되어 있어 과학기술 전문언어이다. 개인적으로 기계공학부 때는 포틀랜드에서 유한요소법 같은 프로그래밍도 했지만 최근에는 C나 파이썬으로 많이 옮겨온 추세인 것 같다.
객체 지향 프로그래밍 언어란? 객체 지향 프로그래밍 언어라는 것은 프로그램을 단순히 데이터와 처리 방법으로 나누는 컨셉이 아니라 프로그램을 여러 객체(Object)라는 기본 단위로 생각하고 이들 사이의 상호작용을 프로그래밍하는 언어라고 보면 된다.
이러한 객체 지향 프로그래밍의 특징은 대표적으로 5가지가 있는데, 첫 번째 특징으로는 속성과 메소드를 하나로 결합하여 객체로 구성하는 성질이 있다. 즉, 어떤 오브젝트에 포함되는 것이 보통은 어떤 정보만 들어가 있는데, 이러한 정보가 오브젝트의 기본적인 속성이라면 거기에 메소드라고 불리는 것이 추가로 들어갈 수 있다. 메소드는 함수라고 보면 된다(특징 #1 캡슐화).
다음의 특징으로는 다른 오브젝트에 본인의 정보를 숨기고 본인의 연산만을 통해 접근이 허용된다(특징 #2 정보비닉). 또한 상위 클래스의 모든 속성과 연산을 하위클래스에 상속시키며 하위클래스에서는 보다 구체적으로 상세한 정보를 상위클래스의 토대 아래에 추가할 수 있다(특징 #3 상속성). 데이터의 공통된 성질을 추출해 단순화할 수 있고 모델링할 수 있다(특징 #4 추상화). 마지막으로 하나의 메시지에 대해 다양한 방법으로 응답할 수 있도록 변형할 수 있다(특징 #5 다형성).
객체지향 프로그래밍 언어 중 C++와 JAVA 두 언어에 대해 알아보자. C++는 이름에서 보더라도 알 수 있듯이 C언어로부터 출발하여 확장된 형태로 객체지향형으로 프로그래밍 가능한 언어이다. JAVA는 C/C+와 비슷한 프로그래밍 문법을 갖지만 C+에 비해 보다 단순하고 효율적으로 프로그래밍이 가능하다.선언형 프로그래밍 언어란? 선언형 프로그래밍 언어란 특정 선언만을 명시하여 프로그램을 동작시키는 형태의 언어이다. 이 언어에는 함수형 언어와 논리형 언어라는 두 가지 유형으로 다시 나뉘는데 함수형 언어의 경우에는 자료 처리를 수학적 함수의 계산 단위로 보고 상태와 가변 데이터를 멀리하는 프로그래밍 언어이다. 논리형 언어는 논리 문장을 이용하여 프로그래밍하고 계산을 수행하는 언어이다.
특징으로는 우선 프로그램 동작의 변경 없이 관련 값을 대체할 수 있다(특징 #1 참조 투명성). 또한 가독성이나 재사용성이 좋은 편이다(특징 #2 뛰어난 가독성). 마지막에는 외부적인 환경의 디펜던시를 줄이고 알고리즘에 집중해 개발이 가능하다(특징 #3 신속한 개발이 가능).
선언형 프로그래밍 언어의 종류로는 총 5가지를 소개해 본다(HTML, XML, SQL, Prolog, Haskell 등).
- HTML 인터넷을 위한 하이퍼텍스트 문서를 만들기 위해 사용된 언어이다.
2) XML 특수한 목적을 갖는 마크업 언어를 만드는데 사용될 것을 권장하는 다목적 마크업 언어이다.
3) SQL 데이터베이스에 질의를 할 수 있는 언어이다.
4) Prolong 논리식을 기반으로 오브젝트와 오브젝트와의 관계에 관한 문제를 해결하기 위한 언어이다.
5) Haskell 함수형 언어를 통합 정리하여 만든 일반적인 순수 함수형 언어이다.스크립트 프로그래밍 언어란? 마지막으로 스크립트 언어에 대해 살펴보겠습니다. 스크립트 언어는 기계어로 컴파일되지 않고 별도의 번역기를 통해 소스를 읽고 동작시키는 프로그래밍 언어 기법이다. 먼저 컴파일 없이 바로 실행하여 결과를 확인(특징 #1비 컴파일)할 수 있다는 특징이 있다. 아무래도 한번 프로그래밍을 건 프로그래밍 언어이므로 배우기 쉽기 때문에 빠르게 코드 작성이 가능한 언어이다(특징 #2 신속한 개발이 가능). 마지막으로 상대적으로 단순한 구문과 의미를 담고 있다(특징 #3 단순성).
스크립트 언어의 종류로는 다음과 같은 4가지를 살펴보자.
- 자바스크립트 웹 페이지를 동작하는데 사용되는 클라이언트용 스크립트 언어이다.
- 2) Node.js 스크립트 기반 경량 서버를 개발할 수 있는 언어이다.
3) PHP 동적 웹페이지를 만들기 위해 설계됐으며 작성자가 원하는 웹페이지 작성이 가능한 언어다.
4) 파이톤(Python) 플랫폼 독립적이고 인터프리터식이며 객체지향적, 동적 타이핑 대화형 언어이다. 현재 연구 측에는 가장 많이 사용되며 빅데이터 분석과 같은 대용량 분석에서도 다양한 함수 기능과 함께 효율적인 연산으로 많이 사용되고 있다. 물론 C+로 했을 때보다 빠른 연산이 가능하지만 머신러닝이나 딥러닝 같은 라이브러리가 파이썬 기반이 많아 파이썬을 많이 사용하는 추세로 가고 있다.