[항해 99 WIL] 22년 5월 3주차에 배운 것들

박성규·2022년 5월 22일
0

[WIL]

목록 보기
2/7
post-thumbnail
  1. 객체지향 프로그래밍이란?

우리가 실생활에서 쓰는 모든 것을 객체라 하며, 객체 지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다.

객체는 클래스라는 틀에서 생겨난 실체(instance)이다. 따라서 객체 지향 프로그램은 객체와 객체 간의 연결로 되어 있으며 각각의 객체 안에 자료구조와 알고리즘이 들어있는 것이다.

사람들은 객체지향의 예시로 붕어빵 틀을 많이들 든다.
붕어빵 틀을 만들때 붕어빵 모양을 정하고
안에 팥을 넣으면 팥 붕어빵, 슈크림을 넣으면 슈크림 붕어빵이 된다.
이런식으로 하나의 틀에서 다양한 값들을 넣어가며 변신시킬 수 있는 신기한 방식이다.

순차 프로그래밍만 한다가 객체지향의 구조를 생각하게 되면 머리부터 아파온다.
내가 코딩을 하는거 같기도 하고.. 사용 설명서를 만드는것 같기도 하고.. 헷갈린다.

예전에 자바를 처음 공부할 때 객체들로 이루어진 객체 카페, 블랙잭 게임 구현 등을 해봤었는데,코드에 생명을 불어넣는듯한 느낌에 큰 감명을 받기도 했다.

2.JVM
직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다.
Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다.
즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.

예전에 어셈블리 언어를 배운적이 있다.
pop, push 등 명령어를 한땀한땀 쳐가면서 컴퓨터의 메모리에 직접 접근 했었다.
너무 원시적이었고 코딩이라는 느낌 보다는 노가다에 가까웠다.

이후 컴파일러의 개념이 생겨나면서 C언어가 탄생했다고 하는데 정확하진 않다.
아무튼, C언어로 코딩을 하면 바로 컴퓨터가 해석하는게 아니라
어셈블리어로 컴파일 된 후 그 어셈블리어가 컴퓨터에 멍령을 하게 된다.

그럼 JAVA는 어떨까?
당연히 똑같다. "Hello World"를 출력해달라는 System.out.prinln은 컴퓨터는 무슨말인지 모른다.. 컴퓨터는 영어를 배운적이 없기 때문이다.

그럼 Hello World를 출력하려면 어떻게 해야할까? JVM이라고 하는 번역기가 자바를 기계어로 바꾸어 준다. 사실상 컴퓨터가 입력받는 것은 멋들어지고 긴 코드들이 아니라 101011010110....
인 것이다.

정말 바보이지 않은가?

  1. 한주간 느낀점
    주로 알고리즘을 공부하고 지금 주특기 Spring 공부를 3일째 하고 있다.
    예전에는 못 풀던 문제들을 지금은 클린하지 못한 코드로 해결해 내고 있다.
    만족스러운 결과였다. 일주일 내에 100문제를 풀어내고 싶었지만 난이도가 높은 문제를 풀어 냈다는 것에 기분이 좋다.

Spring은 Boot와 JPA를 사용하다보니 조금 어색하다. 얼른 익숙해져야 할텐데..
이번주의 목표는 간단하다. 로그인 / 회원가입 / CRUD 게시판을 만들어내 볼것이다.

0개의 댓글