먼저 패러다임이란?
- 패러다임은 위키에 따르면 '어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계' 라고 한다.
허나 우리가 살펴볼 내용은 프로그래밍 패러다임이다.
그러면 프로그래밍 패러다임이란?
- 프로그래밍 패러다임은 프로그래밍을 보는 시각인데 이는 "도구에 따라 시각이 달라진다" 라는 것을 중점으로 해석을 한다.
- 즉 특정 패러다임을 지원하는 언어에 익숙할수록 문제를 이해하는 사고방식도 그 패러다임에 치우치게 된다 라는게 우리가 염두 하며 살펴봐야할 점이다.
- 우리는 이를 크게 4가지로 정의 할 수 있다.
1. 명령형 패러다임
2. 객체지향 패러다임
3. 함수형 패러다임
4. 논리형 패러다임
1. 명령형 패러다임 (Imperative Programming)
- 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이며 각각의 명령을 순차적으로 읽어 나간다.
- 깊게 들어가면 전통적인 계산 모델로 상태, 변수, 배정문, 루프 문으로 구성되어 처리하며 처리장치가 메모리와 분리 되어있다,
2. 객체지향 패러다임 (Object Oriented Programing)
- 세상에 있는 무언가를 흉내내는 방식으로 프로그래밍을 하는 것인데 재사용이 용이하고 확장 가능한 코드를 작성할 수 있도록 하여 결과적으로 프로그램의 동작을 이해하고 적절한 코드를 구성하는 데 세상에 대한 자연스러운 물건, 동물, 사람 등을 객체라는 단위로 구분하여 구현을 하는 방법이다.
- 객체지향은 지난 10여년간 발전을 해오며 안 좋은 견해와 대립도 하며 여전히 많이 사용 하고 있다. 하지만 객체라는 단위에 집착을 하며 너무 세부적인 단위 까지 쪼개어 더 이상 객체의 장점을 찾아보기 어려운 형태로 만들어 지는 등 안좋은 예시도 등장하지만 객체지향의 올바른 지표도 많이 등장하며 많은 프로그래머들에게 사랑을 받고 있다.
- 대표적인 언어로는 Java, c++ 등
3. 함수형 패러다임 (Function Oriented Programing)
- 함수 호출을 기본적 메커니즘으로 하며 함수를 실제로 계산하는 것뿐만 아니라, 함수에 매개변수로서의 값을 전달하고 함수로부터의 반환값으로 결과 값을 받는 것을 포함하는 형태이다.
- 함수형 패러다임은 변수나 변수에 대한 배정과 같은 개념을 가지고 있지도 않다.
- 즉 메모리 위치보다는 값과 함수에 중점을 있다. 이를 구현하기 위해서는 대부분 Recursive 형태로 표현이 된다.
- 대표적인 언어로는 scala, c# 등이 있습니다.
4. 논리형 패러다임 (Logic Programing)
- 논리 프로그래밍은 기호 논리에 바탕을 두고 있으며 어떤 원하는 결과를 만들기 위해 정해진 차례대로 수행해야만 하는 특성을 두고 있으며 그 결과와 관련해 어떠한 것이 참인가 하는 것들이 집합으로 이루어진다. 이 때문에 루프나 선택과 같은 제어 추상화가 필요없다.
- 참 또는 거짓을 미리 정의하는 식으로 프로그래밍을 하여 변수를 입력하면 True가 되려면 들어가야할 값을 보여주며 값을 넣으면 그 값이 true 혹은 false 인지를 알려주며 정말 신기한 코딩을 해야한다.
- 대표적인 언어로 prlog가 있다.
이상 프로그래밍 패러다임에 대하여 정리 였습니다.
글을 쓰면서도 제 자신도 패러다임에 대해서는 확신을 가지고 설명하기가 어려운 부분인 것 같습니다.
무엇보다도 자신이 현재 사용하는 언어의 패러다임 정도는 이해하고 좀더 그 특징에 맞게 코딩을 하는게 현명하고
다른 코드를 봤을때 어떤 패러다임을 지향하는 지는 알면 좋은 상식인것 같습니다.