공부 자료 리뷰 (책 서평, 인강리뷰)

아토믹코틀린(Atomic Kotlin) 후기 리뷰 서평

닉네임도항상고민 2024. 2. 13. 21:16

=======================

서문

독자를 신경쓰지 않고,

필자가 편한대로 일기느낌으로 작성해뒀기 때문에 읽기에 거슬릴 수 있으니 주의!

 

'이 책이 어떤가?' 다른 사람의 경험담이 필요하신거라면 글을 읽어보시면 좋을 것 같습니다.

 

작년 10월말쯤에 블로그에 이 책을 읽을거라고 글을 올려뒀는데,

예제까지 다 돌려보니까 몇 달이 지났다.

 

읽었던 책에 대해서 별점으로 평점을 매겨놓곤 했는데,

내 지식에 점수를 매기는것도 애매하고, 그냥 장단점과 어떤 느낌이었는지 적으려고 한다.

 

예전에 내가 '코틀린 인 액션' 리뷰를 적었을때, 별점을 후하게 줬던 것 같은데,

지금 생각해보면 별점을 좀 낮추고 싶은 느낌이..

 

=======================

책 정보

제목 : 아토믹 코틀린 (Atomic Kotlin)

저자 : Bruce Eckel, 스베트라나 이사코바

번역 : 오현석

출판 : 길벗

 

책 분량 :

개인마다 다르겠지만,

`매일` 본다고 생각 했을때, 단순히 눈으로 예제를 읽으면 1~2주이내? (코틀린 인 액션하고 비슷 할 듯)

예제까지 다 따라쳐 본다고 하면, 매일해야 '빨라야' 1달~2달이내?

나처럼 대충 하다보면 수개월이 지나있을지도 모른다. 각 잡고 봐야함.

 

=======================

장단점과 경험담,  팁들

이 책을 '코틀린 인 액션' 과 비교를 안 할 수가 없다.

장점이 곧 단점이 될 수도 있어서 완전히 분리해서 읽기 좋게 작성은 못하겠고,

그냥 생각나는대로 적었다.

 

일단, 필자는 코틀린 공부 순서가

1) 코틀린 공홈 (번역을 해서 코틀린문법을 쭉 읽어봄)

2) 코틀린 인 액션 (공홈이 이해가 잘 안되어서 읽어보고 코틀린을 약간 깨달음)

3) 아토믹 코틀린으로 복습? (이미 코틀린 인 액션에서 봤던거 하나도 기억이 안남) 

 

그래서 약간 배경지식이 있는 상태로 봤으니 경험이 다를 수 있겠다.

 

--------------------------

 

// 한국어 독해 이슈?

코틀린인액션 : 최대 단점이 한국어를 독해를 해야하는 경우가 있었고, 한국어가 이해가 잘 안감;;;

아토믹 코틀린 : 한국어에 이해가 안되는 경우는 잘 없으나, 이거 잘못써둔 `오기` 아닌가? 생각 될 때가 많이 있었음. 

 

코틀린인액션이 문단단위로 독해가 안되었다면, 아토믹코틀린은 문장 단위로 독해가 안되었다고 할까...?

 

'코틀린 인 액션'과, '아토믹 코틀린' 두 책 다 한국어로 번역한 분이 같은 걸로 알고 있다.

그럼에도 '코틀린 인 액션'이 유난히 독해가 힘들었던 기억이 있는데,

내가 코틀린이나 프로그램쪽 개념이 부족했다거나, '코틀린 인 액션'의 원문 자체가 어려웠을 것이다.

 

아토믹 코틀린에서 오기 아닌가? 생각되는 부분들은 한 문장씩 곱씹어봐야한다.

단순히 한 문장이지만, 그것을 잘 생각해보고 문장을 잘이해해보면 맞는 말도 많이 있었다.

글을 천천히 읽어서 소화를 할 필요가 있었다.

 

출판사에 정오표에 오기 2부분 밖에 체크가 안되어있던데,

실제로 잘 못 쓰여진 부분도 있을지도 모르지만,

읽어야할 분량이 많아서 오기인지 아닌지는 따로 체크를 안하고 읽었다.

 

(길벗 출판사 정오표 볼 수 있는 링크 글 아래 첨부 해뒀음)

(아토믹 코틀린도 레포지토리 이슈에 오기같은거 체크하는 장소를 마련해둔것 같은데, 아래 링크 첨부했음)

 

--------------------------

 

아토믹 코틀린은 어려울 수 있는 개념을 자세하게 설명하지 않는 느낌이 있다.

 

프로퍼티의 접근제어자 accessor modifier?

여기 field값 언급이 있고, 별 다른 설명 없이 지나간다.

굳이 어려울 수 있는 내용을 설명을 안해버리거나, 단순하게 설명한게 장점이자 단점이겠는데,

나에게는 장점으로 느껴졌다.

 

인터페이스 설명도, 인터페이스는 단순히 타입을 지정하는 것라고 설명되어 있는게 기억이 난다.

실제로 인터페이스 정의는 저런거고, 내가 그 동안 인터페이스가 뭔지 이해하기 어려웠던게, 정의도 제대로 모르는데

활용하는 방법들이 인터페이스 그 자체인줄 알았기 때문인듯하다.

객체지향 공부도 제대로 안되어있어서 다형성, 업캐스팅에 대해서 잘몰랐기 때문에 인터페이스가 객체지향에서 어렵게 느껴졌던 것 같다.

 

이 책에서 객체지향파트에서 다형성, 업캐스팅까지 보고 있으면 인터페이스가 무엇인지 제대로 이해 할 수 있을 것이다.

 

 

스코프함수 같은 경우에도, 이전 아톰에서 수신 객체 람다 설명을 하고 나서,

apply, with,..  딱히 의미가 있는게 아니고 그냥 보기 좋게 만들기 위했던거라는 설명이 있었던 것으로 기억된다.

 

이것 외에도 설명이 간단하고 명료한 부분들이 많다.

이 간단 명료한 설명들이, 필자가 '오기인가?' 생각할 부분이 많으니 한 문장씩 곱씹어 봐야한다고 적어둔 그런 내용일지도 모르겠다.

 

--------------------------

 

다시 한 번 적지만, 아토믹 코틀린에서 객체지향 설명이 아주 좋다.

 

상속, 다형성, 인터페이스 등등

 

다른 책에서는 생략하고 넘길만한 자료구조, 컬렉션에 관련된 메서드들도 많이 연습 할 수 있게 해준다.

 

--------------------------

 

예제가 많다.

 

'코틀린 인 액션'의 예제도 다 따라쳐봤었지만,

이때는 그냥 생각 없이 따라쳐서 기억에 남는것도 별로 없었고, 예제도 빨리 따라치고 끝냈던 것 같다.

 

'아토믹 코틀린'은 예제가 많아도 너무 많은 느낌이었다.

900여개 이상의 예제가 있다.

맥에서 보면 디렉토리도 포함되서 1000개 이상이 찍히는것 같던데, 윈도우에서 보니까 예제 파일이 950여개쯤 되었던 것 같다.

 

인텔리제이에 플러그인으로 연습문제를 푸는 것도 있는데,

IDE 단축키까지 연습문제에서 알려준다.

 

예제가 많은 것은 뇌절인가 생각 될 수도 있겠지만, 나에게는 장점이다.

하지만, 예제를 다 따라쳐보면 시간이 많이 소비된다.

플러그인으로 연습문제까지 풀어야하면 진짜 몇 달지나가니까, 시간적으로 여유가 많을 때, 이런 기본서를 읽는것이 좋을 것 같다.

 

플러그인에 있는 연습문제도 영어로 되어 있는데, 영어 설명자체가 거시기 한 경우도 있고, 알고리즘 문제 푸는 사이트에서 실버수준의 느낌의 문제들이 꽤 있었다. 나는 시간을 절약하기 위해서 플러그인에 있는 연습문제는 해답을 보고 따라치고, 문제랑 맞는지 보는 것으로 만족했다.

진짜 문제만 보고 스스로 답을 풀다보면 실력이 늘것 같은데, 1,2부정도는 괜찮았는데 문제가 뒤로 갈 수록 거시기 해지는 느낌이 있다.

(참고로, 부록4에 보면, EduTools 플러그인이 아니라, jetbrains Academy 플러긴으로 바뀌었다.)

 

글로 된 설명을 읽어보기 전에, 해당 예제를 먼저 따라 쳐놓고 설명을 읽으면 이해가 더 잘 될 것이다.

어차피 코드를 읽어야하는 것이기 때문에, 글로 된 설명을 보는 것 보다 코드를 보고 이해하는게 훨씬 편한 것 같다.

그리고 내 머리가 아니라 손가락이 코드 치는것에 익숙해 지게 만들어 주고, IDE의 기능도 손에 더 익을 것이다.

 

이거는 플러그인에서 연습문제까지 해보는 jetbrains Academy 코스, 411/411개...?

 

 

이거는 필자가 책의 예제들을 A_MyTest라고 패키지를 하나 만들어서, 그 안에 다른 패키지랑 파일을 하나씩 만들면서 따라쳤던 프로젝트

 

--------------------------

 

(코틀린 공홈) vs (코틀린 인 액션) vs (아토믹 코틀린) 무엇을 더 추천?

추천하는 순위를 1, 2, 3 순서대로 쓰자면,

 

1. 아토믹 코틀린

- 개념을 간단 명료하게 설명 (설명이 부족 할 수도 있는게 단점)

- 자바를 몰라도 읽을 수 있음

- 한국어 독해에 신경 쓸 필요가 없음

- 아토믹 코틀린도 코루틴 내용은 아예 설명이 없는데,

코루틴도 책을 하나 사서 읽어야 할 듯.

 

2. 코틀린 인 액션

- 자바 개발자를 염두해두고 작성해둔것으로 알고 있음, 자바와 비교해둔 예제가 많은 것으로 기억함

- 아토믹 코틀린에 있는 내용은 코틀린 인 액션에 거의 다 있음

- 아토믹 코틀린에 없는 더 많은 내용이 코틀린 인 액션에 몇몇 있을 것임

- 한국어 독해가 어려운 부분이 있음

- 예제 코드도 어려운 부분이 있을 것임

 

3. 코틀린 공홈

- basic부분, 간단한 문법을 보기에는 좋음.

- 특히, 코딩 컨벤션 작성된 부분은 1~2시간 걸려도 읽어두면 좋음.

- concepts부분을 봐야하면, 다른 기본서 책을 먼저 읽고, 나중에 생각 안날때 보는게 좋을 듯함.

- concepts부분을 보게 되면 영어 공부를 하고 있게 되거나, 설명이 생략되어 요약된 느낌이라서 이해하기 힘듦.

 

 

어차피 코틀린 유저라면, 코틀린 인 액션은 읽었을 것이고, 복습이 필요하다면 아토믹 코틀린도 읽어보는 것을 추천함.

우선순위를 떠나서, 저 1,2,3 다 봐두면 좋을 것 같긴하다.

 

하지만,

코딩 완전 처음 입문하는데, 아토믹 코틀린을 본다면 어려울지도 모르겠다?

다른 출판사에서 나온게 더 쉬울지도 모르겠다.

유명한 do it 시리즈에 코틀린도 있으려나..?

근데, 필자가 다른 책은 안봐서 추천을 할 수가 없다.

 

--------------------------

 

팁1)

아토믹 코틀린에서 숙련된 개발자는 1부, 2부의 요약만 봐라고 적혀있을텐데,

진짜 1부, 2부 내용 다시 보면 지겨울 수 있으니, 1,2부는 요약만 봐도 충분 할 것 같다.

필자는 완벽주의자 성향이라 스킵을 할 수 없었지만, 요약에서도 이미 기본적인거를 다시 알려주기 때문에, 진짜 요약만 봐도 충분하다!

 

팁2)

필자는 처음 아토믹 코틀린을 볼 때, 설명과 예제를 눈으로만 읽었다.

그 뒤로 예제도 따라 쳐봐야겠다고 생각이 들어서, 

예제를 쳐놓고, 설명도 다시 읽어서 아토믹 코틀린을 2번 읽은 셈이 되었는데,

처음부터 예제를 따라 칠 수 있게 셋팅을 해두고 한 번 읽는게 좋을 것 같다.

 

팁3)

필자는 예제를 따라 치려고, 예제 레포지토리를 봤을때,

저자의 원본 저장소에 라이선스가 애매하면서 이해가 잘 안되어서,

길벗에서 올려둔 레포지토리를 다운받아서 깃을 걸고 priavete 레포지토리로 내 깃허브에 올려서 사용하였다. 길벗에 있는 예제는 주석도 한글로 번역이 되어있었다.

 

예제를 열어보면 패키지가 엄청 많은데,

'A_(나의excersice)'로 시작하는 패키지를 하나 만들어서, 그 안에서 패키지를 다시 여러개 만들던지. (A로 하면 내가 따라칠 패키지가 제일 상위로 올라간다)

아니면, 따라칠 예제 바로 밑에 패키지가 붙도록 '(원래있던 패키지명)_a' 같이 패키지마다 하나씩 만들던지 하면 될 듯 하다.

 

예제를 따라 쳐보면 더 꼼꼼하게 읽을 수가 있고,

손가락도 ide에 적응 할 수 있고,

의문이 생기는 예제 run을 돌리거나 디버거를 붙여서 코드가 어떻게 흘러가는지 파악 할 수 있어서,

시간이 된다면 예제를 따라치는게 좋다.

 

 

팁4)

부록4에 있는 jetbrains Academy를 사용 했을 때,

jetbrains에 로그인을 해두면 싱크되는 기능이 있는거 같던데,

노트북2대를 이용해서 쓰려했는데, 싱크가 제대로 되지 않았음.

(내가 그 기능을 잘못쓴걸지도 모름)

 

플러그인으로 생성한 예제도, 로컬에 프로젝트가 하나 생기는것 같은데,

다른 노트북에 또, 프로젝트를 만드는게 아니라 젯브레인 로그인을 하고, 프로젝트가 만들어지지 않은 상태에서 가져오기를 해야하는 것 같던데.. 

 

이 플러그인에서 만든 예제도, 로컬에 생성된 프로젝트를, git을 걸어서 노트북 2대로 작업 하는게 나을지도 모르지만, 일단 귀찮아서 하던 노트북에서 계속 했었다.

 

팁5)

시간이 많지 않다면 필요한 부분만 골라서 볼 수도 있다.

그러나, 이전 아톰과 다음 읽어야 할 아톰이 연관성이 있을 수 있다.

이전 아톰에서 배경지식이 있어야 다음 아톰에서 약간 이해가 더 잘 될 가능성이 있다. 

그래서 1부, 2부 단위로 읽어야 좋을 것 같다.

 

=======================

참고할만한 링크

// 길벗 출판사 - 아토믹 코틀린

https://www.gilbut.co.kr/book/view?bookcode=BN003681#bookData

 

// 예제 코드 원본 깃헙 레포지토리

https://github.com/BruceEckel/AtomicKotlinExamples

 

// 예제 코드 저장소 - 길벗에서 카피해둔.

https://github.com/gilbutITbook/080301

 

// 아토믹 코틀린 홈페이지

https://www.atomickotlin.com/

 

// 아토믹 코틀린 홈페이지를 대강보니, 오기 같은것을 이슈탭에 리포팅 받고 있는 듯 하다?

https://github.com/BruceEckel/AtomicKotlinExamples/issues

 

=======================

 

마지막으로,

 

아토믹 코틀린에서도 읽으면서 궁금했던점들 메모를 몇가지 해뒀는데,

이것들을 블로그로 포스팅하면서 알아보고 싶지만, 시간이 많이 걸릴 것 같아서 부담스럽다.

매번 시간이 없다고 하지만, 이런 글 리뷰 적는거는 재밌어서 잘하는데,, 저것들은 언제하려나?... 

 

코루틴도 기본서를 하나 봐야겠는데,

다음에는 코틀린 코루틴 책을 리뷰를 해볼까? 싶다.

 

 

안드로이드 개발도 해야하는데,,

기본기를 챙기려고 하니까 힘이 든다.

 

이번 학습은,

'기본기란 과연 무엇일까????' 라는 생각이 들었다.

 

코틀린 기본서를 몇 번 보다 보니,

왜 기업에서 코딩 테스트도 하는지 몸소 알게 되는 느낌이다.