개발하는 체대생

절차지향, 객체지향, 함수형 프로그래밍 본문

취업스터디

절차지향, 객체지향, 함수형 프로그래밍

개발하는체대생
질문 : 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?

답변 : 
절차지향 프로그래밍이란 간단하게 말해서 일이 진행되는 순서대로 프로그래밍 하는 방법입니다.
객체지향 프로그래밍이란 데이터를 객체로 만들고 객체들 간의 상호작용을 프로그래밍 하는 방법입니다.
함수형 프로그래밍이란 함수를 사용해 상태의 제어보다는 빠르게 처리하는데 초점을 두고 프로그래밍 하는 방법입니다.
 절차지향 프로그래밍은 모듈화와 추상화를 통한 객체중심의 개발은 하는 객체지향 프로그래밍 보다 데이터 중심으로 프로그램을 설계하기 때문에 구조가 직관적이고 객체지향에 비해 개발이 편하다는 장점이 있지만 유지보수가 어렵고 코드의 재사용성이 낮다는 단점이 있습니다. 이에 반에 객체지향 프로그래밍은 설계, 구현에는 시간이 오래 걸리지만 코드의 재사용성이 높고 유지보수가 편하기 때문에 절차지향 보다 대규모 시스템 개발에 유리하다는 장점이 있습니다. 
함수형 프로그래밍은 객체지향  프로그래밍처럼 비절차형 언어에 속하지만 객체지향에서는 객체들의 관계를 중심으로 코드가 작성된다면 함수형 프로그래밍은 값의 연산과 도출 중심으로 코드 작성이 이루어 진다는 차이가 있습니다.

절차지향 프로그래밍

절차지향 프로그래밍은 일련의 함수 호출을 사용하여 프로그램을 구성하는 방식입니다. 이러한 함수 호출은 순차적으로 수행되며, 각 함수는 데이터를 처리하는 데 사용됩니다. 이러한 프로그래밍 방식에서는 문제를 해결하는 데 필요한 데이터를 다루는 것이 중요합니다.

절차지향 프로그래밍의 예로는 C언어가 있는데 C언어는 하드웨어 제어, 운영 체제 및 기계어 코드와 같은 작업에 적합합니다. 하지만 대규모 애플리케이션 개발에는 부적합합니다.

 

객체지향 프로그래밍

객체지향 프로그래밍은 데이터와 해당 데이터를 처리하는 방법을 하나의 단위로 묶어서 프로그래밍을 하는 방식입니다. 이러한 단위를 객체라고 부릅니다. 이러한 객체들은 클래스로 정의되며, 클래스는 데이터 및 해당 데이터를 처리하는 데 사용되는 메서드를 포함합니다.

객체지향 프로그래밍에서는 데이터와 해당 데이터를 처리하는 메서드가 하나의 단위로 묶여 있기 때문에, 데이터에 대한 추상화, 캡슐화, 상속성 및 다형성과 같은 개념이 중요합니다. 객체지향 프로그래밍의 예로는 Java, C++, Python, Ruby 등이 있습니다.

객체지향 프로그래밍은 객체 중심으로 데이터를 다루기 때문에 재사용성이 높고 유지보수에 유리 때문에 대규모 애플리케이션 개발에 적합합니다.

 

함수형 프로그래밍

함수형 프로그래밍은 함수를 일급 객체로 다루는 방식입니다. 이러한 함수는 변수에 할당하고 다른 함수의 인수로 전달하거나 반환할 수 있습니다. 함수형 프로그래밍에서는 상태 변화를 최소화하고 부작용을 제거하여 프로그램의 안정성과 예측 가능성을 높입니다.

함수형 프로그래밍의 예로는 Haskell, Lisp, Scala, Clojure 등이 있습니다. 함수형 프로그래밍은 함수를 객체로 다루어 데이터를 처리하기 때문에 병렬처리에 유리하고 간결하고 깔끔한 코드를 작성할 수 있으며, 코드의 재사용성이 높습니다. 하지만 상태 변화를 최소화하는 등의 제약사항이 있어 객체지향 프로그래밍과 달리 문제를 해결하는 데 필요한 자료구조와 알고리즘이 제한될 수 있습니다.

 

*일급객체란?

함수를 일반 값(변수, 상수 등)과 동일하게 취급하는 개념입니다. 이는 함수를 매개변수로 전달하거나 함수를 반환할 수 있으며, 변수나 상수에 함수를 할당할 수 있음을 의미합니다.

, 함수가 프로그래밍 언어에서 하나의 값으로 취급되는 것입니다.

 

결론

절차지향 프로그래밍일이 진행되는 절차를 중심으로 프로그래밍 하는 방식으로 간단하게 빠른 처리를 요하는 프로그래밍에 적합하고 객체지향 프로그래밍데이터를 객체로 묶어 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식을 의미하고 비즈니스 로직이나 대규모 시스템 개발에 적합합니다. 마지막으로 함수형 프로그래밍함수를 일급 객체로 다루는 방식으로서 병렬처리나 비동기 프로그래밍 등에 적합합니다.

 

 

추가 참고자료

객체지향 프로그래밍

 

객체지향 프로그래밍(OOP)에 대한 설명

객체지향이란? 객체지향이란, 데이터를 추상화시켜 객체를 만들고 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 객체지향(oop)의 4대 특징 객체지향의 4대 특성에는 캡

rpguswns.tistory.com

 

Comments