인공지능이 많이 발전한 것 같습니다. 얼마전에 유럽에 어느 미술대회에서 인공지능이 그린 그림이 상을 받았다는 이야기를 듣고 충격을 받았습니다.그래서인지 인공지능 개발 기술에 관심이 더 갑니다.코틀린은 앱과 웹이 모두 가능한 언어라 합니다.인텔리제이라는 개발 툴을 만드는 젯브레인사에서 만든 프로그램 언어로 구글 안드로이드의 주 언어이고 JVM 환경에서 자바 대용으로 백엔드 개발을 할 수 있다고 합니다.개발환경을 구성하는 방법에 대해 설명을 합니다.다양한 가상화 환경을 구성해 데이터 분석을 위한 모듈을 쉽게 설치할 수 있는 환경을 제공하는 아나콘다를 설치하고 주피터 랩과 주피터 노트북을 설치합니다.그 후 코틀린을 설치합니다.코틀린은 모든 것을 객체로 처리한다고 합니다.코틀린을 주피터 개발 툴에서 처리할 때 장점으로는 일반 개발 툴처럼 main 함수로 실행할 필요가 없고 웹 기반으로 마크다운 등으로 설명을 추가할 수 있다고 합니다. 단점으로는 패키지 작성이나 패키지 단위의 상수를 지정할 수 없고 현재 코틀린용 주피터 노트북이나 주피터 랩에서 kts 파일을 바로 만들 수 없다고 합니다.이를 예제를 통해 설명을 합니다.프로그래밍 언어를 공부할때 알아야하는 기본적인 것부터 설명을 하기에 보면서 예제를 실제로 입력 실행해보면서 눈으로 확인을 해보면 좋을거 같습니다.각 챕터별로 개념 및 알아두어야 할 것들을 설명합니다. 처음에 볼때는 무슨 말인지 생소해서 이해가 안 갈 수 있지만 쭈욱 읽어보고 예제도 보고 키보드로 쳐보기도 하고 하면서 따라해보고 이 책을 여러번 보다보면하나 둘 이해가 늘겠지요. 그냥 쉽게 읽는 책이 아니니깐요실로 몇년만에 새로운 개발 언어 관련 책을 보니새롭습니다. 고치함수나 재귀함수 등을 사용하다 보면 성능상의 문제가 발생한다고 합니다. 그래서 내부적으로 호출된 곳에 함수를 코드로 삽입해서 문제가 일어나는 것을 방지한다고 합니다. 이런 방식으로 처리하는 것을 인라인 함수라 한다고 합니다. 속성에 인라인을 붙여 인라인 속성을 사용할 수 있습니다.둘다 성능상 효율은 좋지만 코드에 삽입되므로 코드가 증가하는 문제가 발생하므로 적절하게 사용하는 것이 좋다고 합니다.보통 하나의 클래스에는 하나의 책임을 부여해서 설계하는 방식을 사용합니다. 위임은 2개의 클래스가 동일한 책임을 가지고 나눠서 처리하는데 클래스 위임은 동일한 책임을 위탁자가 수탁자에게 일을 맡겨서 처리하도록 만드는 것이라 합니다. 이런 위임이 좋은 것은 다양한 기능을 하나의 클래스를 통해서 받고 처리할 수 있도록 구조화할 수 있기 때문이라 합니다.제네릭 확장함수 : 제네릭 확장함수를 사용하면 클래스의 상속관계에 따라 다양한 객체에서 확장함수를 사용할 수 있다.제네릭 확장속성 : 제네릭 확장속성도 다양한 클래스의 속성으로 사용할 수 있다. 주의해야 할 것은 클래스의 속성에 있는 배킹필드를 사용할 수 없다는 점이다. 그래서 특히 더 주의해서 사용해야 한다.확장속성도 일반화해서 다양한 클래스에서 사용할 수 있으면 좋지만 일반화를 너무 많이 사용하는 것보다는 클래스를 정의할 때 속성과 메서드를 적절하게 만드는 것이 유리합니다. 이런 점을 잘 이해하고 작성하는 연습을 해야 한다고 합니다.유사한 개념들도 있지만새로운 용어나 개념들이 많아서이 책을 몇번 들여다보고 관련 책도 찾아보고 실제로 실행도 해보면서 익숙해져야 할 거 같습니다.