본문 바로가기

스파르타 기술면접

절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?

절차지향 프로그래밍

 💡 명령어를 순차적으로 실행하는 방식으로, 순서대로 실행되는 코드 블록을 작성하여 문제를 해결합니다.

순서대로???라기보다는 다른 워딩을 좀 더 찾아보자

  • 프로시저와 함수를 중심으로 구성
  • C언어나 Pascal 등이 이에 해당합니다.
  • 절차지향 프로그래밍의 장점으로는 구현이 쉽고 이해하기 쉽다는 점이 있습니다. 또한 대부분의 컴퓨터에서 실행 가능하며, 속도가 빠른 것이 특징입니다. 하지만 대규모 프로젝트에서는 유지보수가 어려워지고 코드의 재사용성이 떨어지는 단점이 있습니다. 또한 데이터와 함수가 분리되어 있어서 코드의 가독성이 떨어질 수 있습니다.

 

객체지향 프로그래밍

 💡 객체 간의 상호작용을 통해 프로그램을 구성하며, 이를 통해 모듈화, 재사용성, 유지보수성 등을 높일 수 있습니다.
  • 클래스, 상속, 캡슐화, 다형성 등의 개념이 사용
  • 외부에서는 객체의 인터페이스만을 사용하여 상호작용할 수 있도록 하는 것을 말합니다.
  • Java, Python, C++ 등이 이에 해당합니다.

 

함수형 프로그래밍

💡 함수의 조합으로 문제를 해결하는 방식으로, 입력값에 대한 출력값만을 반환하는 순수 함수를 작성합니다.
  • 상태 변화를 최소화하고 복잡한 문제를 간결하게 표현
  • Lisp, Haskell, Scala 등이 이에 해당합니다.
  • 함수형 프로그래밍에서는 상태를 변경하는 것을 지양합니다. 따라서 변수나 객체의 상태를 변경하는 대신에 새로운 값을 반환하는 방식으로 프로그래밍을 합니다.
    1. 부작용을 제거할 수 있어서 코드의 안정성을 높일 수 있습니다.
    2. 코드의 가독성이 높아집니다.
    3. 동시성 처리가 용이합니다.