우테코 프리코스를 진행하는 동안 구글링하면서 지겹도록 등장한 책 이름
Kotlin In Action
기어코 구매하고 말았다. ! ㅎㅎ
뭔가 그저 개발에만 급급해서 코틀린을 코틀린답게 사용하지 못한 것 같아 나에게 아주 도움이 되줄거라 믿는다.
모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻이다.
-> 특히나 코틀린에서는 자바와는 달리 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다.
JVM에서의 대표 Groovy, JRuby
타입과 관계없이 모든 값을 변수에 넣을 수 있고, 메서드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 그에 따라 코드가 더 짧아지고 데이터 구조를 더 유연하게 생성하고 사용 가능하다.
코틀린에서는 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략할 수 있다. 이와 같이 컴파일러가 문맥을 고려해 변수 타입을 결정하는 기능을 타입 추론이라고 한다. type inference
클래스, 인터페이스, 제네릭스는 모두 자바와 비슷하게 동작한다.
자바와 다르게 새로운 점은 아래와 같다.
NULL 이 될 수 있는 타입을 지원한다.
컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
합수 타입
일급 시민인 함수 : first-class
함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.
불변성 : immutability
함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.
부수 효과 없음 : side effect
함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용한다.
=> 에엥? 순수 함수는 뭐고 부수 효과는 뭐야? 이분 블로그를 보면 이해 ssap 가넝 ~
여기서 잠깐 !! 함수형 프로그래밍 ? 명령형 프로그래밍 ?
이 부분은 나중에 따로 정리해야할거 같다.. 벌써 어지러워잉 ~
다중 스레드를 사용해도 안전하다. : safe multithreading
불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다. 따라서 복잡한 동기화를 적용하지 않아도 된다.
테스트하기 쉽다.
부수 효과가 있는 함수는 그 함수를 실행할 때 필요한 전체 환경을 구성하는 준비 코드가 따로 필요하지만, 순수 함수는 그런 준비 코드 없이 독립적으로 테스트할 수 있다.
코틀린을 JVM에서 실행한다는 사실은 이미 상당한 안전성을 보장할 수 있다는 뜻이다. JVM을 사용하면 메모리 안전성을 보장하고, 버퍼 오버플로우를 방지하며, 동적으로 할당한 메모리를 잘못 사용함으로 인해 발생할 수 있는 다양한 문제를 예방할 수 있다.
실행 시점에 오류를 발생시키는 대신 컴파일 시점 검사를 통해 오류를 더 많이 방지한다.
또한 프로그램의 NullPointerException을 없애기 위해 노력한다.
가장 간단한 방식은 커맨드 라인에서 kotlinc 명령을 통해 코틀린 코드를 컴파일 한 다음 java 명령으로 그 코드를 실행한다.

뭐.. 어떻게 보면 이제야 코틀린을 입문하는 느낌이다...
코테도 .. 파이썬 버리고 코틀린으로 노선을 바꿀까 고민중 헿 😋
나중에 따로 정리해야할 것 ~
👻 순수함수와 부수효과
👻 함수형 프로그래밍과 명령형 프로그래밍
👻 JVM