Skip to content

김은빈

  • 저는 새로운 것을 알아가고 공부하는 것을 좋아합니다.
  • 생각을 글로 (또는 코드로) 체계적으로 정리하는 데 재미를 느낍니다.
  • 상황을 다양한 시각으로 바라보고 고려하기 위해 노력합니다.
  • 정직하면서 성숙하게 말하는 사람이 되고 싶습니다.

잘 정리된 모습은 아니지만 제가 공부하고 생각한 내용을 기록하는 공간입니다.
들러주셔서 감사합니다. 좋은 하루 되세요!

최신글
객체 표현과 GC
컴파일러
객체 표현은 언어의 값을 메모리에 어떤 모양으로 담을지를 정하는 설계이고, 값의 수명을 누가 어떻게 끝낼지가 그 설계에 딸려 나온다. 값의 종류가 닫혀 있는지 열려 있는지가 두 선택을 함께 결정한다. 정적 타입 언어는 정수를 기계 워드 하나로 담는다. 컴파일 시점에 이게 정수라는 걸 알기 때문에 타입 정보를 실행 중에 들고 다닐 필요가 없다. 동적 타입 언어는 그럴 수 없다. 값이 어디로 흘러가든 자기가 무엇인지 스스로 알고 있어야 한다. CPython은 모든 값을 힙 객체로 만들고 PyObject * 하나로 가리킨다. 아래는 main(3.16.0a0) 기준이고 측정은 3.14.6에서 했다. 모든 값이 객체다 객체의 머리는 참조 카운트와 타입 포인터다. c struct _object {
컴파일러 생성기
컴파일러
컴파일러 생성기는 명세를 입력으로 받아 컴파일러의 한 단계를 코드로 만들어 내는 도구다. 사람은 "무엇을 인식할 것인가"만 적고, "어떻게 인식할 것인가"에 해당하는 표와 루프는 기계가 채운다. 이런 도구가 성립하려면 그 단계가 기계적으로 유도 가능한 형태여야 한다. 정규표현에서 DFA를 만드는 절차가 있고 문법에서 파싱표를 만드는 절차가 있기 때문에 렉서와 파서에 생성기가 있는 것이지, 컴파일러의 모든 단계에 있는 것이 아니다. 명세와 산출물 주요 생성기의 입출력을 실제로 재 보면 규모의 차이가 드러난다. flex와 bison은 직접 돌린 결과이고, 나머지는 CPython main(3.16.0a0) 저장소의 파일이다. | 생
+ 더보기