1월 16일 (목)

오늘 배운 것

  • git 버전관리 시스템 공부하기

  • 객체지향 개념이 내게 없다는 걸 이해함 -> 코드를 어떤 식으로 짜야할지 감이 잘 안 잡힌다.

    내가 끈기가 약한거와는 별개의 문제같음. 개념 자체가 서있지 않아서 코드를 작성하지 못한다는 느낌

    끈기 있게 계속 보면 짤 수 있으려나? 그럴 것 같지는 않다. 책을 더 읽고 기반 지식을 쌓아야겠다.

  • nodeJS 모듈에 대한 지식 부족을 느꼈다. import, export 왜 안되지? node_modules 폴더는 뭐지? 이런것들

  • git에 익숙해지면 SourceTree 말고 터미널로 작성해서 하는게 좋겠다고 생각했다

컴퓨터에게 내릴 명령을 순서대로 작성한 것이 프로그램이다 신입 사원을 가르칠 능력이 되는 큰 회사는 CS 지식을 물어본다. 기반 지식을 어떻게 학습해왔는지. 실전 지식은 자기들이 가르칠 수 있기 때문에. 반대로 가르칠 자신이 없는 회사는 실전 경험을 묻는다.

CODE 책

컴퓨터는 모든 것을 숫자로 바꿔서 계산한다 -> 코드로 바꾼다

내가 작성한 코드 한 줄이 cpu가 봤을 때 얼마만큼의 instruction이 되는지 생각해야한다. 그게 왜 복잡도에 영향을 주는지. 왜 알고리즘, 빅오 이런거를 따지는지 이해하기

왜 Base에 Offset을 더해서 LOAD/STORE 할까

처음 기준에서 얼마만큼 떨어져있는지를 계산하는게, 아예 다 따로 계산하는 것보다 효과적이기 때문이다.

  • Base : 오브젝트의 인스턴스, 배열의 Head

  • Offset : 오브젝트의 몇번째 메서드인지, 배열의 몇번째인지

CPU는 메모리가 어떻게 나눠져있는지 모르기 때문에 운영체제가 메모리를 관리(보호)해준다.

System Bus

버스는 그냥 회로다. 실제 버스처럼 일종의 노선이 있고 정류장이 있는 회로다. CPU의 클럭(진동 주기(?))에 따라 전류를 보내준다. 그 전류를 버스에 연결되어 있는 것들이 사용한다. 연결되어 있는 것들이 전류를 동시에 쓰지는 못하는데, 속도가 너무 빨라서 동시처럼 느껴지는 것이다.

Memory Model

Stack, Heap

메모리는 커다란 모눈종이, 광활한 Map 같은 거임

로컬에 변수가 생길 때 마다, Stack에 쌓인다. 함수 호출이 점점 많아질 수록 Stack이 점점 쌓인다. Stack이 넘치면 Stack Overflow가 발생하게 된다.

객체를 만드는 순간 Heap에 만들어진다. 객체 정보가 Heap에 담기고 이 곳을 가르키는 값이 cpu 예제에서 load/store 할 때 사용했던 Offset값이다.

Last updated