독서(Reading)/오늘의 책(Today's book)

2022년 6월 5주차 면접을 위한 CS 전공지식 노트(주홍철 저) - 프로그래밍 패러다임

Chann._.y 2022. 6. 28.
728x90

면접을 위한 CS 전공지식 노트(주홍철 저)

SECTION 1.2 프로그래밍 패러다임

 

프로그래밍 패러다임

  • 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론
  • 선언형
    • '무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다."라는 명제가 담겨 있는 패러다임
    • 함수형 프로그래밍 - 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임
      • 순수 함수 : 출력이 입력에만 의존하는 것
      • 고차 함수 - 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것
      • 일급 객체 
        • 변수나 메서드에 함수를 할당할 수 있음
        • 함수 안에 함수를 매개변수로 담을 수 있음
        • 함수가 함수를 반환할 수 있음
      • 커링, 불변성 등 많은 특징이 있으므로 <실시간 모니터링 시스템을 만들며 정복하는 MEVN> 추천
  • 명령형
    • 객체지향 프로그래밍 - 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식
    • 설계에 많은 시간이 소요되며 처리 속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느림
      • 추상화 - 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것
      • 캡슐화 -객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
      • 상속성 - 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것 
        • 코드의 재사용, 계층적인 관계 생성, 유지 보수성 측면에서 중요
      • 다형성 - 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것
        • 오버로딩 - 같은 이름을 가진 메서드를 여러개 두는 것, 메서드의 타입, 매개변수의 유형, 개수 등으로 여러 개를 둘 수 있으며 컴파일 중에 발생하는 '정적' 다형성
        • 오버라이딩 - 주로 메서드 오버라이딩을 말하며 상위 클래스로부터 상속 받은 메서드를 하위클래스가 재정의하는 것, 런타임 중에 발생하는 '동적'다형성
      • 설계원칙 - SOLID원칙
        • 단일 책임 원칙(Single Responsibility Principle) - 모든 클래스는 각각 하나의 책임만 가져야 한다.
        • 개방-폐쇄 원칙(Open Closed Principle) - 유지보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고 수정할 때는 닫혀 있어야 한다.
        • 리스코프 치환 원칙(Liskov Substitution Principle) -프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
        • 인터페이스 분리 원칙(Interface Segregation Principle) - 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 한다.
        • 의존 역전 원칙(Dependecy Inversion Principle) - 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 한다.
    • 절차지향 프로그래밍 - 로직이 수행되어야 할 연속적인 계산 과정으로 이루어짐

 

비즈니스 로직이나 서비스의 특징을 고려해서 패러다임을 정하자.
여러 패러다임을 조합하여 상황과 맥락에 따라 패러다임 간의 장점만 취해 개발하자.
728x90

댓글