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
2022년 12월 9일 부터 노션 페이지에서 작성을 이어가고 있습니다.

0개의 댓글