230517 TIL #87 프로그래밍 패러다임

김춘복·2023년 5월 17일
0

TIL : Today I Learned

목록 보기
87/494

230517 Today I Learned

지원 주차 5일째. 면접 대비를 시작했다.


프로그래밍 패러다임

선언형 프로그래밍

how보다는 what을 설명하는 방식.
무엇을 원하는지를 설명하며 어떻게에 대한 구체적 구현방법은 명시하지 않는다. 알고리즘을 명시하지 않고 목표만 명시한다.

  • 명령형 프로그래밍보다 더 간결하고 예측가능하며 테스트가 쉽다.

함수형 프로그래밍

문제를 함수 호출과 함수 조합으로 해결.
불변성과 순수 함수를 중심으로함. 선언형 프로그래밍의 일종.
복잡한 문제를 단순한 함수들의 조합으로 해결하는 방식.

  • 불변성 : 한번 생성된 데이터는 변경할 수 없다.

  • 순수함수들을 블록처럼 쌓아 로직을 구현하고 고차함수를 통해 재사용성을 높인다. 같은 입력에 대해 항상 같은 출력을 반환한다.

  • 순수 함수 : 출력이 입력에만 의존하는 것. 전역 변수에 영향을 받지 않고 매개변수에만 영향을 받는다.

  • 고차 함수 : 함수가 함수를 매개변수로 받아 로직을 생성하는 것.


명령형 프로그래밍

상태와 상태를 변경시키는 관점에서 연산을 설명.
알고리즘을 명시하고 목표는 명시하지 않는다.

  • 명령형 프로그래밍은 어떻게 할지 표현하고,
    선언형 프로그래밍은 무엇을 할건지 표현한다.

객체지향 프로그래밍(OOP)

프로그램의 상호작용을 객체들의 집합으로 표현.
데이터를 객체로 취급해 내부에 선언된 메서드를 활용

  • 설계에 많은 시간이 소요되고 상대적으로 처리 속도가 느리다.

  • 추상화, 다형성, 캡슐화, 상속성 특징. 자세한 건 여기 참고

  • SOLID 원칙은 여기 참고


절차형 프로그래밍

프로그램을 명령어의 연속적인 절차나 순서로 작성하는 방식.
문제를 작은 단위로 분할하고 각각의 단계를 순차적으로 구현.

  • 코드의 가독성이 좋고 실행속도가 빠르다

  • 코드의 유지보수성이 떨어진다.

profile
꾸준히 성장하기 위해 매일 log를 남깁니다!

0개의 댓글