2. 프로그래밍 패러다임

JUSTICE_DER·2023년 12월 17일
0

C++

목록 보기
16/20

참고
프로그래밍 패러다임

순차적 != 절차적

절차적 프로그래밍

프로시져, 모듈

programming paradigm 으로 검색해 보기

일반적으로 이후의 프로그래밍 기법은 이전의 프로그래밍 기법도 사용한다.

1. 순차적 프로그래밍

= Sequential programming

= 순차적, 비구조적 프로그래밍

!= 절차지향, 절차적 프로그래밍

  • 가장 초기의 패러다임
  • 실행->종료의 흐름을 그대로 코드로 프로그래밍
  • 코드가 흩어져 있는 경우가 많아 유지보수가 힘들다.
  • goto?를 사용

2. 구조적 프로그래밍(C)

= Structured, Procedural Programming

= 함수지향, 함수형 프로그래밍 비슷

= PP, 절차지향, 절차적 프로그래밍 비슷

  • 절차지향 프로그래밍은 procedural programming이라고 하고,
    procedural은 procedure(프로시져)에서 따왔고, 반환값이 없는 함수를 의미한다.
    ㄴ프로그래밍에서 특정 작업을 수행하기 위해 정의된 명령문들의 집합
  • 즉, 반복 가능성이 있는 문장들을 함수를 묶어 재사용하는데 초점
    ㄴ 코드를 기능단위로 묶는다
  • 구조적 프로그래밍은 함수(procedure)가 아닌 모듈을 기준으로 한다.
    둘이 다른 개념이지만 보통 거의 같은 개념으로 본다.

    모듈이란 프로시져의 묶음을 의미. 보통 비슷한 프로시져끼리 묶는다.
    패키지란 모듈들의 모음

    • C++에선 20부터 모듈을 추가할 수 있게 되었다.
      그 전엔 헤더나 라이브러리를 추가.
  • 매개변수의 공유와 프로시져의 중첩이 복잡한 구조를 낳을 수 있다.
  • 결국에는 순차적으로 프로그래밍 하게 된다는 문제점.

3. 객체지향 프로그래밍(C++)

= OOP

  • 코드를 객체의 단위로 설계한다.
  • 클래스를 실체화 한 것이 객체 (클래스 인스턴스)
  • 클래스는 속성과 메서드를 가진다.
  • 클래스와 상속을 통해 코드의 재사용성을 높임.
  • 객체지향의 특성(캡슐화, 상속, 다형성)을 사용하여 유지보수를 향상
  • 처리속도나 구조의 설계가 절차지향보다 느리지만,
    가독성을 높임, 역할도 나눌 수 있어 협업이 용이
  • 각 객체의 독립성을 확립하도록 설계함 + 상속 등으로
    코드의 재사용성을 더 높임.

4. 컴포넌트지향 프로그래밍(UnrealEngine)

= Component Oriented Programming

  • 코드를 객체에서 더 잘게 쪼갠 컴포넌트 단위로 설계한다.
  • 컴포넌트의 조립으로 객체를 만들기 때문에 재사용성이 더 높아진다.

5. 컴파일 타임, 런타임

const constexpr 차이

profile
Time Waits for No One

0개의 댓글