프로그래밍을 작성할 때의 관점 및 방법론
프로그래밍 언어별로 지원하는 프로그래밍 패러다임이 다르다.
하지만 최근 대부분의 프로그래밍 언어는 여러개의 패러다임을 갖는다. 이를 "멀티 패러다임 언어"이라고 부른다.
종류
OOP(Object-Oriented Programming) - 객체지향
FP(Functional Programming) - 함수형
RP(Reactive Programming) - 반응형
비교
객체지향 프로그래밍은 프로그램을 상호작용하는 객체들로 본다
함수형 프로그래밍은 프로그래밍을 자체 값을 가지지 않는 순수함수들의 연속으로 본다
굉장히 많은 패러다임 종류가 있는데 그 중에서 대표적이고 범용적인 패러다임만 소개하려한다.
장점
컴퓨터의 작업 처리 방식과 유사 → 다른 패러다임에 비해 빨리 처리되어 시간적으로 유리
단점
유지보수가 어렵다
실행순서가 정해져 있어 코드의 순서가 바뀌면 동일한 결과 보장이 어렵다.
이제 어떻게 할 것인가
를 정하는 것destructive update(한번 정의한 변수 값 변경) 불허용 = immutable data(불변하는 데이터) 사용
함수형 언어로 별도로 설계되지 않은 언어에서도 가능
최근, 처리해야 할 데이터나 트래픽이 기하급수적으로 증가하면서 주목 받고 있다.
명령형과의 차이점 예시 : a=a+1
의미
순수함수
함수 내부에서 프로그램 상태를 변경하여 사이트 이펙트를 발생시키지 않는 함수
함수의 실행이 외부에 영향을 주지 않는다.
닫힌 함수
부작용이 없다.
예시
순수함수가 아닐 경우
/ 외부에 영향을 주는 함수
int a = 10, b = 20;
public int plus(int value){
a = a + value;
return a;
}
plus(15); // = 25
plus(15); // = 40
// a = 40; 외부 변수 a의 값을 계속 바꾼다.
순수함수일 경우
// 순수함수
int a = 10, b = 20;
public int plus(int a, int b){
return a+b;
}
plus(a, b); // = 30
plus(a, b); // = 30
// 외부 변수 값 바꾸지 않음 + 입력이 같으면 출력도 같다.
immutable
한 특성살려 기존 흐름 값이 영향 주지 않음트위터 피드도 하나의 데이터 흐름으로 만들어 그에 따라 반응하는 프로그램 생성 가능
엑셀
명령형 프로그래밍은 변수 a에 계산식을 할당하면 결과값이 저장
// 명령형 프로그래밍
int a=10, b=20;
int c = a+b;
System.out.println(c)); // c = 30;
a = 20;
System.out.println(c)); // c = 30; c에 계산식의 결과값 30만 저장됨
반응형 프로그래밍은 계산식이 저장된다.
// 반응형 프로그래밍
int a=10, b=20;
int c = a+b;
System.out.println(c)); // c = 30;
a = 20;
System.out.println(c)); // c = 40; c에 계산식 자체가 저장되어 사용하는 변수 a의 값이 바뀐 것이 반영됨
기똥차네요!!