![post-thumbnail](https://velog.velcdn.com/images/donghok/post/a0aa4878-de37-4f2a-bcff-99999a05946f/image.png)
코틀린
- 코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어다.
- 코틀린은 간결하고 실용적이며, 자바 코드와의 상호운용성(Interoperability) 를 중시한다.
- 현재 자바가 사용중인 곳이라면 거의 대부분 코틀린을 활용할 수 있다. 대표적으로 서버 개발, 안드로이드 앱 개발 등에서 코틀린을 사용할수있다.
- 기존 자바 라이브러리나 프레임워크와 함께 잘 작동하며, 성능도 자바와 같은 수준이다.
철학
- 실용성
- 간결성
- 안전성
- 상호 운용성
맛보기
- 주요 특성
- 대상 플랫폼
- 정적 타입 지정 언어
- 성능 : 실행 시점에 어떤 메소드를 호출할지 알아 내는 과정이 필요 없으므로 메소드 호출이 더 빠르다.
- 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어진다.
- 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.
- 도구 지원 : 정적 타입 지정을 활용하면 더 안전하게 리팩토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원 기능도 더 잘 만들수 있다.
- 자바와 같이 클래스, 인터페이스, 제너릭이 비슷하게 실행이 되고 코틀린은 널이 될수 있는 타입을 지원한다.
- 함수형 프로그래밍
- 특징
- 일급 시민인 함수
- 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할수 있으며, 함수에서 새로운 함수를 만들어서 반환 할수 있다.
- 불변성
- 함수형 프로그래밍에서는 일단 만들어 지고 나면 내부 상태가 절대로 바뀌지 않은 불변 객체를 사용해 프로그램을 작성한다.
- 부수 효과 없음
- 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호 작용하지 않은 순수 함수를 사용한다.
- 장점
- 간결성
- 그에 상응하는 명령형 코드에 비해 더 간결하며 우아하다. 함수를 값처럼 활용할 수 있으면 더 강력한 추상화를 할 수 있고 강력한 추상화를 사용해 코드 중복을 막을 수 있다.
- 안전한 다중 스레드
- 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다.
- 테스트 하기가 쉽다.
- 코틀린은 처음부터 함수형 프로그래밍을 풍부하게 지원해 왔다.
- 함수 타입을 지원함에 따라 어떤 함수가 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환할 수있다.
- 람다 식을 지원함에 따라 번거로운 준비 코드를 작성하지 않아도 코드 블록을 쉽게 정의 하고 전달할수있다.
- 데이터 클래스는 불변적인 값 객체를 간편하게 만들 수 있는 구문을 제공한다.
- 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰수 있는 API를 제공한다.