본문 바로가기

코틀린

[Kotlin In Action] 1장. 코틀린이란 무엇이며, 왜 필요한가?

Kotlin in Action 책에서 각 챕터의 Summary를 보며 부족한 키워드만 후라닥 정리하는 글.
안드정이 코틀린 인 액션 책 스터디하면서 정리한 자료도 참고할 예정 땡큐땡큐 

 

정적 타입 지정 언어

  • 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있음
  • 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증
  • 간결함, 정확성, 성능, 신뢰성, 유지 보수성 등의 장점

함수형 프로그래밍과 객체지향 프로그래밍

주요 개념

일급 시민 first-class 함수

  • 함수를 일반 값 처럼 다룰 수 있음
  • 변수 저장, 인자로 다른 함수에 전달, 함수 내에서 새로운 함수를 만들어 반환

불변성 immutability

  • 일단 만들어지면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용

부수효과 없음 no side effect 

  • 입력이 같으면 항상 같은 출력
  • 다른 객체의 상태를 변경하지 않음
  • 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수함수 사용

장점

간결함

  • 순수 함수를 값처럼 활용할 수 있어 더 강력한 추상화를 할 수 있음
  • 추상화 덕분에 중복도 막을 수 있음
  • 람다식이라는 익명 함수를 통해 간결하게 표현할 수 있음

멀티 스레드에서의 안정성

  • 다중 스레드 프로그램의 오류는 여러 프로그램에서 동일한 데이터를 수정하는 것
  • 불변을 사용하는 경우 안전하지 않은 수정이 발생하지 않도록 할 수 있음

테스트 용이성

  • 순수함수는 부수효과가 없어 별다른 설정 없이 독립적으로 테스트하기 용이

코틀린의 지원

함수 타입

  • 어떤 함수가 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환할 수 있음

람다식

  • 코드 블록을 간결하게 정의하고 전달할 수 있음

 Data 클래스

  • 불변 객체를 간편하게 만들 수 있는 구문을 제공

API

  • 객체, 컬렉션 등 함수형 스타일로 다룰 수 있는 API를 제공