Kotlin
JVM에서 실행되는 언어. 코틀린은 자바와 100% 호환성을 갖는다. 그러므로 기존의 자바 라이브러리들을 그대로 사용할 수 있다는 큰 장점이 있다. (자신의 코드를 한번에가 아닌 점진적으로 바꿀 수 있다.)
코틀린은 OOP와 FP가 둘다 가능한 멀티 패러다임 랭귀지다.
코틀린에서 FP이 가능해지므로서 FP의 장점인 Side Effect가 없다는 것이 코틀린의 장점이 된다. (Immutable)
Side Effect(부수효과)란 - 단지 결과를 돌려준다는 것 이외의 어떤일을 수행하는 함수를 가리킨다.
변수수정, 예외를 던지거나 오류를 내면서 실행을 중단, 화면에 그리기, 콘솔 입출력, 파일 입출력...
즉, 부수효과를 없애려면 Pure Function만을 사용하면 된다. -> 모든 함수는 똑같은 입력값에 대해서 항상 같은 출력값을 가져야하며, 그 이외 어떠한 것도 하지 않아야 한다.
기존의 명령형 프로그래밍들이 상태를 만들고, 상태를 바꿔나가면서 하는 프로그래밍이었다라고 한다면, FP는 상태를 바꾸기보다는 변경불가능한 데이터와(Immutable), 순수함수를 이용한 프로그래밍이다.
cc.charge(cup.price)
가 부수효과의 예이다.
신용카드 청구에는 외부 세계와의 일정한 상호작용이 관여한다. 신용카드 회사와 접촉해서 거래를 승인하고, 대금을 청구하고, 이후 참조를 위해 기록을 영구적으로 기록하는 등의 작업이 필요하지만 이 함수 자체는 하나의 Coffee
객체를 돌려줄 뿐이다.
부수효과가 있기 때문에 이 코드는 검증하기 어렵고, 코드를 검사하기 위해 실제로 신용카드 회사와 연결해서 카드 이용대금을 청구 해야한다.
Main Function -> Funtions -> Bottom Level Function. Bottom Level Function만이 Primitives로 구성된다.
함수형 프로그래밍은 우리가 프로그램을 작성하는 방식에 대한 제약이지, 표현가능한 프로그램의 종류에 대한 제약이 아니다. FP의 원리를 따라 프로그램을 작성하면 모듈성이 증가하기 때문에 매우 이롭다. -> test, 재사용, 병렬화, 일반화, 분석이 쉽다. 버그의 위험도 줄어든다.
코틀린에서 모든것은 객체다. 함수 자체도 객체가 된다. -> Int 자바에 대한 wrapper를 제공.
컴파일러가 타입추론을 지원한다.
자바에서 처럼 세미콜론을 칠 필요가 없다. (필요가 있는경우도 있다.)
Spring5 에서도 코틀린을 지원한다고 한다.
Copyrights ⓒ pnurep@naver.com, 영리목적 사용불가.
Last updated