정보처리기사 자격증 필기 내용 중 프로그래밍 언어 파트에서 언어 유형에 대해 이야기해 본다. 먼저 프로그래밍 언어에는 절차적 프로그래밍 언어와 객체 지향 프로그래밍 언어, 그리고 선언형 언어, 스크립트 언어가 있다. 이들의 의미와 특징에 대해 좀 더 자세히 살펴보자.
절차적 프로그래밍 언어란?
절차적 프로그래밍 언어라는 것은 순서대로 단순하게 명령을 처리하는 것이 아니라 루틴이나 서브루틴, 메서드, 함수 등을 고루 프로그래밍하는 패러다임이다. 따라서 함수를 정의를 한 번만 정의해 두면 비슷한 상황에서 다른 곳에서 해당 코드를 재사용할 수 있다(특징#1코드 재사용). 또한 함수로서 따로 정의함으로써 메인 코드는 단순화하면서 프로그램 전체의 흐름을 파악하기 쉬워지는 장점이 있다(특징#2낮은 복잡성). 이렇게 각각의 기능을 모듈로 구성하여 프로그램을 새롭게 구조화(특징#3모듈화 및 구조화)할 수 있다는 특징도 있다.
이러한 절차적 프로그래밍 언어의 종류 중 아래 4가지 언어에 대해 알아본다. 1) ALGOL(아르골) 절차형 언어 최초로 재귀 호출이 가능해 알고리즘 연구개발용으로 이용하기 위한 목적으로 생성된 언어다.
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 등). 1) HTML 인터넷용 하이퍼텍스트 문서를 작성하기 위해 사용된 언어이다.2) XML 특수 목적을 가진 마크업 언어 작성에 사용될 것을 권장하는 다목적 마크업 언어이다.3) SQL 데이터베이스에 질의를 할 수 있는 언어이다.4) Prolong 논리식을 바탕으로 객체와 객체의 관계에 관한 문제를 해결하기 위한 언어이다. 5) Haskell 함수형 언어를 통합 정리하여 만든 일반적인 순수함수형 언어이다.스크립트 프로그래밍 언어란?마지막으로 스크립트 언어에 대해 알아보자. 스크립트 언어는 기계어로 컴파일되지 않고 별도의 번역기를 통해 소스를 읽고 동작시키는 프로그래밍 언어 기법이다. 우선 컴파일 없이 바로 실행하여 결과를 확인(특징#1 비컴파일)할 수 있다는 특징이 있다. 아무래도 한번 프로그래밍을 건 프로그래밍 언어이기 때문에 배우기 쉬워 빠르게 코드 작성이 가능한 언어이다(특징#2 신속한 개발이 가능). 마지막으로 상대적으로 단순한 구문과 의미를 담고 있다(특징#3 단순성).스크립트 언어의 종류로는 다음 4가지에 대해 알아보자. 1) 자바스크립트 웹페이지 동작에 사용되는 클라이언트용 스크립트 언어이다. 2) Node.js 스크립트 기반 경량 서버를 개발할 수 있는 언어이다.3) PHP 동적 웹페이지를 만들기 위해 설계됐으며 작성자가 원하는 웹페이지 작성이 가능한 언어다.4) 파이썬(Python) 플랫폼 독립적이고 인터프리터식이며 객체지향적, 동적 타이핑 대화형 언어이다. 현재 연구진에서는 가장 많이 쓰이고 빅데이터 분석과 같은 대용량 분석에서도 다양한 함수 기능과 함께 효율적인 연산으로 많이 사용되고 있다. 물론 C++로 했을 때보다 빠른 연산이 가능하지만 머신러닝이나 딥러닝 같은 라이브러리가 파이썬 기반이 많아 파이썬을 많이 사용하는 추세로 가고 있다.4) 파이썬(Python) 플랫폼 독립적이고 인터프리터식이며 객체지향적, 동적 타이핑 대화형 언어이다. 현재 연구진에서는 가장 많이 쓰이고 빅데이터 분석과 같은 대용량 분석에서도 다양한 함수 기능과 함께 효율적인 연산으로 많이 사용되고 있다. 물론 C++로 했을 때보다 빠른 연산이 가능하지만 머신러닝이나 딥러닝 같은 라이브러리가 파이썬 기반이 많아 파이썬을 많이 사용하는 추세로 가고 있다.