ultra_dev
절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? 본문
프로그래밍 패러다임
:프로그래머에게 프로그래밍의 관점을 갖게 해주는 개발 방법론
객체 지향
: 프로그램을 상호 작용 하는 객체들의 집합으로 봄
- 모듈화가 쉽고, 유지 보수성이 높다.
- 캡슐화 추상화 상속성 다형성
- 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