2주차가 끝났다! 이번 주차는 내 주특기 언어인 자바와 친해지는 시간을 가졌다. 알고리즘 문제를 풀고, 자바 객체지향을 이해하기 위해서 간단한 클래스를 만들어보았다.
알고리즘
처음 알고리즘을 풀 때는 문제 지문을 이해하는 것도 힘들어서 문제가 무엇을 요구하는지를 파악하는데 시간이 오래 걸렸다. 솔직히 알고리즘 문제를 전에도 풀어보려 시도했으나 서술한 이유 때문에 늘 포기했었다. 막상 알고리즘 문제를 억지로라도 풀어야 하는 상황이 되니 조금씩 문제를 읽고 이해하는 것이 쉬워졌고, 점점 재미를 붙이게 되었다.
알고리즘 문제는 앞으로도 하루에 한 문제 이상은 풀고 싶다. 하지만 나 스스로 꾸준히 문제를 찾고 푸는 일이 쉽지 않을 것 같아서 걱정이다.
풀었던 문제는 깃에도 코드를 올렸고, 블로그에도 성공 인증을 올렸다! 하나 하나 풀 때마다 성취감이 느껴져서 좋다!!
개인 과제
자바는 객체지향을 강제로 사용하도록 만들어져 있는 것 같다. 그래서 이번 주차는 알고리즘 문제 풀이와 함께 자바 객체 지향을 사용해서 요구한 클래스를 만드는 개인 과제도 함께 진행했다.
객체지향 과제 깃허브
개인 과제는 어렵지 않았다. 자바 객체를 한 번도 만들어본적이 없어서 걱정했는데, 알고리즘 문제를 풀면서 자바에 익숙해지니 자바를 다루는 것에도 자신감이 생겼다.
자바 객체 지향
객체 지향을 찾아볼 때 헷갈리는 이유는 객체 지향을 절차 지향과 비교하면서 반대편에 있는 개념인 것처럼 생각하기 때문인 것 같다. 자바도 기본적으로 절차지향이다. 그런데 자바는 이 절차적 구조를 객체 안에서 수행한다. 그렇기에 절차를 따르는 객체들로 구성된 것이 내가 이해하는 객체 지향이다.
내가 자바 객체 지향을 좋아하는 이유는 프로그래밍을 좋아하는 이유와 같다. 타인의 라이브러리를 불러올 때마다 자바 생태 안의 선배 개발자들이 신기하고 그 구조가 놀랍다. 상속이나 인스턴트 개념은 플라톤 철학이 생각나기도 해서 프로그래밍 세계가 형이상과 형이하의 연결점 처럼 느껴질 때가 있다. 자바 객체 지향은 마치 내게 이 거대한 세계를 유지하고 지속하게 만드는 것이 유기적으로 연결되어 있는 각 객체 혹은 개체의 힘이라고 말하는 것 같다.
JVM
자바 가상 머신은 자바를 실행시켜주는 고마운 친구다. 자바가 지금까지 명맥을 유지하고 있는 이유 중 하나가 이식성이 좋다는 말을 들은 기억이 있는데, 이 말은 자바의 경우 내부적으로 자바 파일을 읽고 실행하는 JVM이 동봉되어 있어 어떤 os에서도 os에 종속되지 않고 동일한 실행결과를 기대할 수 있는 것과 관계가 있다.
마치 밀키트와 같은 것이다! 파이썬의 경우 로컬 환경에서 만들고 AWS로 배포할 때 pip를 통해 패키지를 다운 받아주어야 하는데, 자바의 경우 그런게 없다 그냥 빌드하고 그대로 옮겨서 실행하면 끝이다! 이걸 가능하게 해주는 것이 바로 JVM!! 만세 만세 만만세! 나도 오늘 밀키트를 먹을 것이다!
스프링
당장 내일부터 스프링이 시작된다. 아무런 준비도 하지 않았기에 불안하고 스프링이 뭔지도 아직 잘 모르겠다. 다음주도 무사히 마쳤으면...