반응형
해당 글에서는 프로그래밍 패러다임에 대해서 이해하고 각각의 용어에 대해서 이해를 돕기 위해서 작성한 글입니다.
1) 프로그래밍 패러다임
💡 프로그래밍(Programming) 이란?
- 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 의미합니다.
💡 패러다임(Paradigm) 이란?
- 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념을 의미합니다.
💡 프로그래밍 + 패러다임(Programming Paradigm) 이란?
- 개발자가 프로그래밍을 위해 어떠한 '관점'을 가지고 개발을 할지에 대해서 결정을 하는데 도움을 주는 것을 의미합니다.
[출처] 위키백과 - 컴퓨터 프로그래밍, 패러다임
2) 프로그래밍 패러다임의 동향
💡프로그래밍의 등장 순서와 성장 순서에 대해서 이해합니다.
💡하단의 이미지는 Google에 프로그래밍 패러다임에 대해 검색을 하면 자주 등장하는 진화의 관점을 빗대어서 표현한 이미지입니다.
💡 프로그래밍 패러다임의 등장 순서
- 함수 지향 프로그래밍(FP) -> 객체 지향 프로그래밍(OOP) -> 절차 지향 프로그래밍(PP)
💡프로그래밍 패러다임의 성장 순서
- 절차 지향 프로그래밍(PP) -> 객체 지향 프로그래밍(OOP) -> 함수 지향 프로그래밍(FP)
3) 프로그래밍 패러다임의 종류
💡 프로그래밍 패러다임에는 크게는 '명령형 프로그래밍(Imperative Programming’)과 ‘선언형 프로그래밍(Declarative programming)'로 분류가 됩니다.
1. 명령형 프로그래밍(Imperative Programming)
💡 명령형 프로그래밍(Imperative Programming) 이란?
- 어떤 일을 ‘어떻게(HOW) 수행을 할 것 인지’에 대해 관점을 두고 컴퓨터가 수행할 명령들을 순서대로 적어두는 프로그래밍 수행 기법을 의미합니다.
- 명령형 프로그래밍에는 객체 지향 프로그래밍(OOP), 절차 지향 프로그래밍(PP)이 이에 포함이 됩니다.
1.1. 객체 지향 프로그래밍(OOP: Object-Oriented Programming)
💡 객체 지향 프로그래밍(OOP: Object-Oriented Programming) 이란?
- 어떠한 일을 해결 하기 위해 수많은 ‘객체(Object)들’을 기본 단위로 나누고 ‘서로 간의 상호관계’ 작용으로 개발하는 것을 지향하는 프로그래밍 기법을 의미합니다.
- 객체 지향 프로그래밍을 사용하는 대표적인 언어로는 C++, JAVA, C#이 있습니다.
1.2. 절차 지향 프로그래밍(PP: Procedural Programming)
💡 절차 지향 프로그래밍(PP: Procedural Programming)
- 어떠한 일을 해결하기 위해 위에서 아래로 순차적으로 진행이 되어서 프로그램이 유기적으로 연결되도록 구성하는 개발 방식을 지향하는 프로그래밍 기법을 의미합니다.
- 절차 지향 프로그래밍을 사용하는 대표적인 언어로는 C, C++ 이 있습니다.
2. 선언형 프로그래밍(Declarative Programming)
💡 선언형 프로그래밍(Declarative Programming)
- 어떻게(How) 수행할 명령들을 순서대로 적어두는것이 아닌 무엇(What)을 나타낼지에 대해서 관점을 두어서 프로그래밍을 수행하는 기법을 의미합니다.
- 명령형 프로그래밍에는 논리형 프로그래밍(Logic), 함수형 프로그래밍(Function)이 이에 포함이 됩니다.
2.1. 논리 프로그래밍(Logic Programming)
💡 논리 프로그래밍(Logic Programming) 이란?
- 어떤 일에 대해서 해결을 찾기 위한 단계들에 주목하기 보다는 해결의 '속성들’에 주목하는 프로그래밍 기법을 지향하는 프로그래밍 기법을 의미합니다.
2.2. 함수형 프로그래밍(FP: Functional Programming)
💡 함수형 프로그래밍(FP: Functional Programming) 이란?
- 상태 및 데이터 변경에는 사용하지 않으며 작은 문제를 해결 하기 위한 ‘함수’ 단위로 개발을 하는 기법을 지향하는 프로그래밍 기법을 의미합니다.
- Java 1.8 버전부터 함수형 프로그래밍을 합니다.
- 함수형 프로그래밍을 위해 람다식 (Lambda), Stream API, Functional Interface의 주요한 기능들을 사용합니다.
- 가독성과 함수를 이용한 재 사용성이 장점이 있습니다.
오늘도 감사합니다. 😀
반응형
'Java > 아키텍처 & 디자인 패턴' 카테고리의 다른 글
[Java] RESTful API 설계 방법 -2 : 구성하기 (0) | 2023.03.26 |
---|---|
[Java] RESTful API 설계 방법 -1 : 이해하기 (0) | 2023.03.22 |
[Java] 계층화된 아키텍처(Layered Architecture) : N Tier Architecture (0) | 2023.01.25 |
[Java] 생성자 패턴 - Builder() 심화 속성 이해하기 -1 : Lombok Annotation (0) | 2023.01.06 |
[Java] 생성자 패턴 이해하기 : 점층적 생성자, 자바 빈즈, Builder 패턴) (0) | 2022.11.12 |