[커널아카데미] 백엔드 12기 3주차 - 회고 및 공부한 내용 정리
Intro
커널 아카데미 3주차를 접어들면서 공부하는 습관이 익숙해졌다. 학습 시간을 더욱 늘리고 싶은데 7시만 되면 진이 빠져서 체력을 늘리는게 필요하다는 생각이 많이 드는 시점이다. 한 주를 지내면서 느낀점은 다음과 같다.
느낀 점
# 기초가 있어야 응용이 되는구나
온라인 강의와 실시간 강의를 듣고 실습하는 것만으로는 부족하다. 자바의 정석 책을 이해가 될 때까지 보고 그 다음에 실습을 하나하나 진행하다 보니, 뒷 내용을 봤을 때 앞에서 한 얘기가 연결되어 이해하는 데 도움이 되었다. 특히 실습하면서 응용이 되는 것 같다.
# 이론과 코드로 보는 것은 다르다
자바의 정석 연습문제를 풀다가 내가 생각한 답과 실행결과가 달라서 왜 다른가에 대한 답을 GPT에게 바로 얻고 싶지 않고, 수업에서 배운 내용을 토대로 해결해보고 싶었다. 문제는 간단해 보였는데 그 이유를 도출하는데는 컴파일러를 자세히 알아야 해결할 수 있었다. 해당 글을 작성하는데 거의 2시간이 걸렸다. 오래 걸리다 보니 나의 사고 흐름을 정리할 수 있었고, 내가 뭘 잘못 생각했는지 되짚어 볼 수 있었다.
[디버깅으로 알아보는 변수 초기화 흐름]
https://optimizer.tistory.com/3
디버깅으로 알아보는 변수 초기화 실행흐름
왜 디버깅으로 초기화 실행 흐름을 확인하게 되었나? 과제로 자바의 정석 연습 문제를 풀다가 객체를 그림으로 그려보고, '상속 관계인 두 클래스에 중복된 멤버가 있을 때 어느 클래스 타입 참
optimizer.tistory.com
1) 인식하지 못한 부분을 찾고 기억
기존에는 과제 느낌으로 일주일 동안 배운 것을 정리한다는 느낌으로 작성했다면 이번엔 내가 부딪힌 문제를 해결해 나간 과정을 작성해서 뿌듯함을 느꼈다. 만약 블로그에 내가 해결해 나간 과정을 적지 않았다면, 단순히 '이걸 놓쳤구나'라고 생각 후 넘어갔을 것이다. 특히 컴파일러를 기능을 분석하면서, '프로그래밍 언어' 전공 수업에서 배웠던 Sugar Syntax 부분을 제거하는 과정을 실제로 마주해보니 나도 모르는 사이에 항상 접하고 있었음을 느꼈다.
2) 이상하면 디버깅은 필수
알고리즘 문제를 풀 때도, 내가 생각한 흐름과 다르다면 무조건 디버깅을 하는 습관이 있다. 디버깅을 하면서 새로운 지식을 쌓은 경험들이 있어 이번에도 똑같이 해봤다.
알고있는 지식은 초기화 순서가 자동 초기화 -> 간단 초기화 -> 복잡 초기화(초기화 블럭, 생성자)이다. 하지만, 디버깅을 해보니, 생성자 내부에서 다른 생성자 혹은 조상 생성자를 호출하고나서 생성자 내부의 다음 명령을 실행할 줄 알았다. 갑자기 생성자 밖의 인스턴스 변수 선언 및 초기화하는 부분으로 갔다. '초기화 블럭이 없는데 왜 저 코드로 이동하지?' 라는 궁금증에서 위의 글을 작성했다.
방금 이 회고를 쓰면서도
컴파일러가 필드의 변수 선언과 변수 초기화는 분리해서 초기화 블럭이 생기는데, 그렇다면 수업에서 배운 간단 초기화는 초기화 블럭에 존재하나 초기화 블럭 밖에서도 존재하나?
라는 궁금증이 생겨 이 내용도 추가로 정리할 예정이다.
Outro
이번 주는 6장,7장의 연습 문제를 풀기 위해 자바의 정석 책을 완전히 이해하고 실습하는 시간에 많은 시간을 보냈었다. 그래서 진도를 나가는데 차질이 있어 조바심이 났다. 자바와 객체지향 이해는 제대로 해야할 거라 마음을 다잡고 진도를 나가는데 집중할 것이다.