PP OOP FP

본 문서는 2021년 12월 20일 에 기록되었다.
Essentials of Java 와 기타 References 를 참고하였다.

분류

본 문서에서는 프로그래밍 패러다임을 2가지 방법으로 분류하였다.

  1. 대분류 | IP, DP
  2. 세분류 | PP, OOP, FP

프로그래밍 패러다임의 종류(대분류)

대분류는 프로그래밍 패러다임을 2가지 방법으로 분류하였다.

  1. IP | Imperactive Programming | 명령형 프로그래밍
    OOP 가 대표적인 IP 패러다임 예시이다.
    어떻게 해야 하는가?
  2. DP | Declarative Programming
    FP 가 대표적인 DP 패러다임 예시이다.
    무엇을 해야 하는가?

프로그래밍 패러다임의 종류(세분류)

세분류는 프로그래밍 패러다임을 3가지 방법으로 분류하였다.
그 중, OOP 는 IP 와 유사하고 FP 는 DP 와 유사하다. (사실상 동질)

  1. PP : Procedural Programming
  2. OOP : Object Oriented Programming
  3. FP : Functional Programming

PP

PP, Procedure Programming
절차지향 프로그래밍 위키백과

정의

이 부분에서는 다음의 내용을 담고 있다.

  1. Procedural Programming 의 정의
  2. Procedure 의 정의
  3. Procedure 의 종류

Procedural Programming 의 정의

절차적 프로그래밍은 때때로 명령형 프로그래밍과 동의어로 쓰이기도 한다.
하지만 정확히는 프로시저 호출의 개념을 바탕으로 하고 있는 패러다임을 의미한다.

Procedure 의 정의

프로시저는 1 과는 다르고 2 와 유사하다.

  1. 루틴, 하위 프로그램, 서브 루틴, 메서드, OOP 함수
  2. FP 함수

프로시저는 수행해야 할 연속적인 계산 과정을 포함하고 있는 것이다.

또한,
프로시저는 다음의 특이점이 존재한다.

  1. 프로시저는 프로그램의 어느 부분에서나 호출할 수 있다.
  2. 한 프로시저에서 다른 프로시저를 호출할 수 있다.
  3. 한 프로시저에서 자기 자신을 호출할 수 있다.

Procedure 의 분류

프로시저 언어는 다음과 같은 것들이 있다.

  1. 알골
  2. 포트란
  3. PL/I
  4. 모듈라-2
  5. 에이다
  6. 베이직
  7. C 등

OOP

OOP, Object Oriented Programming

정의

이 부분에서는 다음의 내용을 담고 있다.

  1. OOP 정의

Object Oriented Programming 의 정의


FP

FP, Functional Programming

정의

이 부분에서는 다음의 내용을 담고 있다.

  1. FP 정의

Functional Programming 의 정의


OOP(IP) FP(DP) 예시

사실 Node.JS 와 Spring 을 둘 다 이용해 보았으며
Javascript 와 Java 를 어느 정도 깊이까지 사용하고 편하게 사용하는 사람이라면
아래의 구성만으로도 충분히 OOP 와 FP 에 대해서 감을 잡을 수 있을 것입니다.

다만 중요한 것은,
이는 어디까지나 문제해결을 위한 방법론(접근 방식, 해결 방식 등)이므로
이것에 목매이는 것보다는 어떻게 해결해야 하는가? 에 대해서 맞추는 것이 옳다고 생각합니다.

또한 이 문서는 기본적으로는 Computer Science 에 대한 내용이기에,
상세 코드를 깊숙히 작성하지는 않을 것입니다.

요구사항

유저 리스트가 있을 때,
Certification process 를 pass 하지 않은 유저들의 이메일을 리스트로 받고 싶습니다.

FP(DP) 식 풀이법

  1. 유저 리스트에서 Certification process 가 non-pass 인 유저만 걸러내고 또 이메일만 추출한다.
  2. 이를 리스트에 담는다.

OOP(IP) 식 풀이법

  1. 이메일 리스트를 만든다.
  2. 반복문을 통해서 리스트의 각 공간에 접근한다.
  3. 검증 되지 않았는지를 체크한다.
  4. 만약(if) 검증되지 않았다면 이메일을 추출한다.
  5. 추출한 이메일을 이메일 리스트에 넣는다.

Ref

블로그 포스트

profile
블로그 이전 : https://inblog.ai/unchaptered

0개의 댓글