분류 전체보기 477

Java | 객체 지향 디자인 패턴

객체지향 프로그래밍이 뭔가요? 어떤 프로그래밍 방식, 방법론 절차적 프로그래밍 데이터와 기능이 클래스로 캡슐화된 객체 (은닉성) 내부 구조는 private으로 감춰놓고 public으로 수행 (interface) 청소 담당 - 청소, 교실 이동 청소 담당이라는 인터페이스. 다른 클래스를 조립할 수도 있다. 반별로 일 실시. 교실 단위로 묶어서 청소 객체 지향의 상속 교실 청소팀을 (추상적인) 상위 클래스로 해서 과학 청소팀이라는 (구체적인) 자식 클래스를 만든다. 이때 @Override를 이용함 추상 클래스로는 abstract 객체를 생성할 수 없다. (다형성) 자식 클래스에서 다른 것으로 덮어쓸 수 있는 것 override 체계적이고 안정적인 코드 작성 가능함 트리 구조의 상하 관계가 뚜렷하다. (인터페..

장학금 | SNU이음장학금 세부 연수계획서 기록

SNU이음장학금 세부 연수계획서 3주 간의 연수 기간에 실리콘밸리에서 일하는 한인 21명을 인터뷰한 뒤에 그 기록을 사람책으로 남기겠습니다! (1) 연수 목적 벽에 붙어있는 세계지도 은 제 방 벽을 찍은 것입니다. 스무 살이 되던 해 1월에 세계지도를 사서 벽에 붙였습니다. 그러면서 세계를 누비며 세계지도에 다녀온 국가를 색칠하리라 다짐했습니다. 그러나 유감스럽게도 제가 대학을 입학하던 해인 2020년에 코로나19 팬데믹이 시작되었습니다. 스무 살의 다짐은 아직 실현되지 못한 채로 남아있습니다. 제 방에는 건들지 않은 세계지도가 빳빳하게 붙어있습니다. 그리고 2022년 4월, 해외방문 경험이 없는 학생을 위한 장학금이 있다는 소식을 알게 되었습니다. 바로 SNU이음장학금이었습니다. 세계를 경험하며 경험의..

Life 2022.05.13

OCaml | Reference call in OCaml

목표 : 아래 표현을 이해하기 let _ = reachable_locs := [] in let _ = loc_id := !loc_id + 1 in OCaml에서는 평소에 포인터를 쓰지 않고도 프로그래밍을 할 수 있다. 명시적 포인터가 필요한 경우는 드물다. 예를 들면, 고전적인 명령형 언어로 설명된 알고리즘을 OCaml로 번역할 때는(지금 내가 하려는 것) 명시적인 포인터가 필요하다. OCaml의 ref type ref 참조를 이용해서 reference call을 할 수 있다. 초기화 ref true ref 0 ref "foo" let eof = ref false in ... 대입 eof := true ref된 값을 업데이트하기 위해 := 연산자를 활용한다. !eof = false !(ref false)..

Garbage Collection의 정의와 알고리즘

메모리 재활용 Garbage Collection을 어떻게 정의할까? function gc(M) = 다음 프로그램 실행에서 쭉 사용되지 않을 메모리 M의 영역들을 재활용한다그러나 미래에 가보지 않고는 어떤 메모리의 영역들이 실행될 것인지 정확하게 알 수 없다. 그래서 대략 맞는 안전한 장치를 만들어낸다. 이때 이름을 통해서 메모리에 접근한다는 사실을 이용한다. M(E(x)), M(E(x)(age))그리고 현재 Env 환경이 이름에 들어있는 내용을 결정한다. 접근할 수 있는 메모리 영역은 현재 Env 환경에서 접근할 수 있는 영역과 같다. 이런 과정을 통해 fun gc는 다음과 같이 정의한다. fun gc(E, M) = E (Env)에서 접근할 수 있는 부분을 제외하고 M을 재활용한다. Mark & Swee..