Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

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

Computer Science

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

ultra_dev 2023. 4. 4. 13:56

프로그래밍 패러다임 

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

 


객체 지향

:  프로그램을 상호 작용 하는 객체들의 집합으로 봄

  • 모듈화가 쉽고, 유지 보수성이 높다.
  • 캡슐화 추상화 상속성 다형성
  • SOLID 원칙
  • https://tw-dev.tistory.com/84 이전에 정리한 게시글 참고하기 
  • 단점 : 설계에 많은 시간 소요, 처리 속도가 다른 프로그래밍에 비해 느림

 

 

함수형

: 프로그램을 상태 값을 지니지 않는 함수 값들의 연속으로 봄 

  • 작은함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임
    • 고차 함수 : 함수가 함수를 값처럼 매개변수로 받아 로직을 생성하는 것
  • Java는 Stream,Lambda를 이용해서 함수형 코드 작성 가능
  • 함수의 동작부가 간결해지기 때문에, 객체지향 프로그래밍에 비해 코드 이해도와 가독성이 좋아진다.
  • 프로그램의 변화 없이 입력 값에 대한 결과를 예상 할 수 있어 테스트가 용이하다.
  • 단점 : 외부 데이터 혹은 내부 데이터의 상태를 조작할 수 없다.
  • 단점 : 순수함수를 사용하는 것은 쉬울 수 있지만 조합하는 것은 쉽지 않다.

** 대용량 컬렉션 프레임워크..for문보다는 함수형 프로그램 통해서 병렬적으로 처리하는게 효율이 좋다.

-> 스트림 통한 병렬 처리가 필수적이다 ex) 10만건 이상의 대용량 or 고용량미디어데이터

 

+ 가독성 측면에서도 좋다.

옵셔널로 감싸는 것도 함수형이고 .orelse () -> 썼던 것도 함수형 프로그램의 일종

 

 

절차 지향

:  로직이 수행되어야 할 연속적인 계산 과정으로 이루어짐

  • 일이 진행 되는 방식은 그저 코드를 구현하기만 되기 때문에 코드의 가독성이 좋으며 실행 속도가 빠르다
  • 따라서 계산이 많은 작업에 쓰임 ex)머신러닝 배치작업
  • 단점 : 모듈화 어렵고 유지 보수성이 떨어진다.

씨언어! 임베디드!

 


+ 지식들

 

++자바는 운영체제 종속x하기 위해 탄생, 스프링은 di등 편하게

 

 

'Computer Science' 카테고리의 다른 글

시간 복잡도, 공간 복잡도  (0) 2023.04.05
Stack과 Queue, Array와 Linked List 설명 및 차이점  (0) 2023.04.04
트랜잭션이란  (0) 2023.04.03
웹서버와 WAS의 차이  (0) 2023.04.03
TCP / UDP  (0) 2023.03.31
Comments