[CS] 프로그래밍 패러다임

young-gue Park·2023년 8월 9일
0

CS

목록 보기
4/18
post-thumbnail

⚡프로그래밍 패러다임


🔷 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론

  • 특정한 패러다임만을 지원하는 언어도 있는가하면, 여러 패러다임을 지원하는 언어도 있다.

    ex) 파이썬, 자바스크립트, C++, 자바(jdk 1.8이상)

  • 프로그래밍 패러다임은 크게 선언형, 명령형으로 나뉘며, 선언형함수형, 명령형객체지향절차지향으로 다시 나뉜다.

📌 선언형 프로그래밍(declarative programming)

🔷 무엇을 풀어내는가에 집중하는 패러다임이자 함수로 이루어진 프로그램을 지향하는 패러다임이다.

⭐ 함수형 프로그래밍(functional programming)

🔷 작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임

  • 자바스크립트의 경우 단순하고 유연하며 함수가 일급 객체이기 때문에 함수형 프로그래밍 방식이 선호된다.

💡 순수 함수
출력이 입력에만 의존하는 것, 다른 전역 변수 등이 출력에 영향을 주면 순수 함수가 아님.

💡 고차 함수
함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것


📌명령형 프로그래밍(imperative programming)

🔷 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종으로 선언형의 반대이다.

⭐ 객체지향 프로그래밍(Object-Oriented Programming)

🔷 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식

  • 설계에 많은 시간이 소요되고 처리 속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느리다.
  • 추상화, 캡슐화, 상속성, 다형성의 특징을 가지고 있다.

    자바를 공부하면서 많이 다뤘으니 자세한건 넘어간다. (자바 포스팅)

  • 설계 원칙으로 SOLID 원칙을 지켜야한다.
  1. 단일 책임 원칙(SRP)
    • 모든 클래스는 각각 하나의 책임만 가져야한다.
  2. 개방-폐쇄 원칙(OCP)
    • 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고, 수정할 때는 닫혀 있어야 한다.
  3. 리스코프 치환 원칙(LSP)
    • 프로그램의 객체는 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  4. 인터페이스 분리 원칙(ISP)
    • 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 한다.
  5. 의존 역전 원칙(DIP)
    • 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 해야한다.

⭐ 절차지향 프로그래밍(procedural programming)

🔷 로직이 수행되어야 할 연속적인 계산 과정으로 이루어진 프로그래밍 패러다임

  • 일이 진행되는 방식으로 그저 코드를 구현하기만 하면 되기 때문에 코드의 가독성이 좋고 실행 속도가 빠르다.
  • 모듈화하기 어렵고 유지 보수성이 떨어진다.

❓ 그럼 가장 좋은 패러다임은 무엇일까
"그런 건 없어용."
여러 패러다임을 조합하여 상황과 맥락에 따라 패러다임 간의 장점만 취해 개발하는 것이 베스트다.

profile
Hodie mihi, Cras tibi

0개의 댓글