본문 바로가기

부트캠프 일지

부트캠프 8일차 후기.

오늘은 코드카타 8문제를 풀었다. Kotlin만의 문법에 익숙해지지 않아서 시행착오를 겪었기에, 간단한 문제여도 시간이 좀 걸렸다. 

 

오늘 코드카타에서 깨달은 것은 Kotlin은 생각보다 자료형에 까다롭단 점이였다. var 형태로만 변수가 있어서 암시적 자료변환도 자유로울 것이라 생각했지만, Int에서 Double로 바꿀때에도 toDouble()을 일일히 써야한다는 건 귀찮은 일이다.

 

또, 배열 사용이 좀 불편하다. 내가 알고리즘 문제를 풀면서 C++의 vector를 사용했는데 그것과 비교해서 뒤에 요소를 추가할 수 없는 것 같아서 사용이 아직까지는 까다롭다. 후에 내가 원하는 기능을 가진 컬렉션이나 메소드가 있는지 다시 살펴봐야겠다.

 

오늘은 심화문제를 풀었고, LV2정도까지 구현을 완료하였다. 생각보다 구현이 까다로워서 시간이 걸릴 것 같다. 여기선 Calendar 클래스에 대해 알게 되었다. 원래 Date를 사용하려 했지만, 구식이란 Warning이 떠서 대신에 사용했는데, 그냥 after나 before 메소드 사용은 아직도 헷갈리고, 같은 날짜인지 확인하는 함수를 내가 직접 구현하는 등(아니면 단순히 내가 비교하는 함수를 못 찾았는지도 모르겠다), 귀찮은 점이 몇가지 있어서 여기서 시간을 많이 잡아 먹었다.

 

그리고 간단히 어제 배운 비동기를 돌아보았다. 비동기는 전공수업에서도 배웠지만, 다시 정리해보려 한다.

프로세스는 프로그램이 메모리에 적재되어 작동하는 상태이고, 쓰레드는 프로세스 내에서 작동하는 흐름 단위이다.

여기서 프로그램이 작동하는 메인 쓰레드와 별개로 다른 일을 처리하는 쓰레드를 생성해서 비동기적으로 프로그램을 실행할 수 있다. Kotlin에서는 이것을 지원하기 위해서 thread 메소드를 제공하고 runblocking과 launch를 통해 어느정도 제어할 수 있다.

 

코루틴은 쓰레드 보다 가벼운 동시성 프로그래밍이고, GlobalScope, CoroutineScope 등을 활용해서 launch를 통해 실행 할 수 있다.

 

여기서 나는 코루틴과 쓰레드에 차이점에 주목을 했다. 둘 다 내가 아는 개념이지만, 둘의 차이가 헷갈렸는데, 강의를 들의면서 차이점을 어느정도 알게 되었다. 쓰레드는 운영체제에 의해서 Context Switching을 하지만, 코루틴은 소스코드를 통해 Context Switching을 한다는 점이였다. 즉, 쓰레드와 달리 코루틴의 Context는 프로그래머 마음대로 선택을 할 수 있다는 거다. 하지만 이는 프로그래머가 신경써야할 것이 늘어난다는 것이기에 쓰레드보다 좋다는 것은 어불성설이다.

 

하지만, 여태껏 헷갈리던 개념을 잡게 되어서 비록 갑자기 난이도가 올라갔지만, 이 5주차 강의가 의미가 없게 되지 않아서 기쁘다.

 

내일은 심화과제를 마무리지을 예정이다.

'부트캠프 일지' 카테고리의 다른 글

부트캠프 10일차 후기  (1) 2023.12.08
부트캠프 9일차 후기  (2) 2023.12.07
부트캠프 7일차와 배운 것  (2) 2023.12.05
부트캠프 6일차와 배운 것  (0) 2023.12.04
부트캠프 5일차 후기  (0) 2023.12.01