본문 바로가기

Kotlin/Kotlin IN ACTION

Kotlin IN ACTION 1장 정리(코틀린의 철학, 코틀린의 특징, 코틀린 공부 로드맵)

반응형

오프라인 스터디에서 "Kotlin IN ACTION"이라는 책을 선정하여 학습하는 중에 정리의 필요성을 느꼈고, 책을 읽는 것만으로 내 것이 되지 않는 것 같다고 생각하여 아주 작은 미니 프로젝트를 만들어봐야 겠다는 생각을 했습니다.

1장 코틀린이란 무엇이며, 왜 필요한가?

코틀린의 철학

  • *참고* 개인적인 해석이 포함되어 있습니다.
  • "자바(Java)와의 상호운용성을 고려하고 실용성을 갖춘 언어를 개발한다."
    • 코틀린이라는 언어의 목적은 다른 언어처럼 임베디드 환경에 최적화된 언어, 인공 지능 개발 언어, 성능 최적화된 언어, ... 같은 목적이 아니라, 딱 자바와의 상호운용에 문제가 없으면서도 실용성을 갖추는게 목적입니다.
    • 코틀린이 실용성 을 갖췄다는 건 무엇일까요? 다음과 같은 개선으로 애플리케이션 개발(실무)을 보다 편리하고 효율적으로 할 수 있게 만들었다는 것입니다.
      • 역사적으로 자바에서 그 동안 겪은 여러가지 문제점과 불편했던 것들의 개선 사항을 반영합니다.
      • 요즘 트렌드인 함수형 프로그래밍이 가능하게 하게 합니다.
      • 간결한 코드 작성으로 개발 생산성과 유지 보수성도 챙깁니다.
      • NullPointerException이나 ClassCastException 등의 예외를 쉽게 처리할 수 있도록 유도하여 애플리케이션의 안정성을 얻습니다.
      • 기타...
    • 그렇다면 상호운용성을 고려한다는 건 무엇일까요? 자바 라이브러리를 가져다 쓸 수 있게 하여 상생도 가능하고 개발자로 하여금 이질감을 적게 느끼게하여 마이그레이션(migration)을 보다 쉽게하는 게 가능하다는 얘깁니다.
      • JVM이라는 동일한 환경에서 동작하는 언어입니다.
      • Maven Repository에서 찾아볼 수 있는 방대한 자바 라이브러리 생태계를 공유합니다.
      • 도구를 이용해 자바 코드와 코틀린 코드 서로 양방향 변환이 가능합니다.

코틀린의 특징

  • 코틀린은 자바와 같은 정적 타입(statically typed) 지정 언어입니다.
    • 정적 타입이란 말은 컴파일러가 컴파일 시점에 모든 프로그램 구성 요소의 타입을 알 수 있고, 객체를 사용할 때 타입에 대한 검증도 해준다는 얘기입니다.
    • 정적 타입 지정 언어의 장점으로 정확성과 성능을 보장합니다.
  • 코틀린 컴파일러는 타입 추론(type inference)이 가능합니다.
  • 객체 지향 프로그래밍, 함수형 프로그래밍 둘 다 지원 가능합니다.
    • 함수형 프로그래밍을 지원하기 때문에 함수형 프로그래밍 패러다임으로 코드를 구성할 경우, 함수형 프로그래밍의 장점을 취할 수 있습니다.

사설

마무리

앞서 코틀린의 철학특징을 알아본 것으로 1장은 마무리하겠습니다.

사실 언어의 철학을 이해하고 기능들을 공부하는게 굉장히 의미있는 일이라고 생각합니다.

왜냐하면 언어 또는 기술의 철학이 기준이자 뼈대로 작용하여 기술을 익히는데에 목적을 확고히 하고 기능을 이해하는데 도움이 되기 때문입니다.

"Kotlin IN ACTION"을 보게된 이유

결론부터 말씀드리면 "토멘~"입니다.

위 사진은 제가 참여하고 있는 오픈 채팅방에서 한국 자바, 스프링의 아버지(?)이신 토비님께서 말씀해주신 내용입니다. (문제시 삭제될 수 있습니다.)

정리하면, 코틀린 컴파일러 개발자가 쓴 책이라 기초에 대한 설명이 출중하고 핵심적인 내용을 위주로 기초를 다진 후, 코틀린 쿡북이라는 책으로 실습하면서 머리와 몸으로 익혀보는게 좋다는 내용입니다.

코틀린 쿡북은 뭐지?하고 네이버에 책을 찾아봤는데 "코틀린 쿡북"이랑 "코틀린 프로그래밍 쿡북" 2권이 나왔습니다...

둘 중에 뭘까하고 찾아보다가 토비님 페이스북에 갔는데 아래와 같은 글이 있어서 저거구나 했습니다.

참고하시라고 교보문고 링크 남겨놓습니다.

제가 "코틀린 인 액션"을 다 읽으면 다음 코틀린 책은 "코틀린 쿡북"이 되겠습니다.

반응형