김범수의 개발공부기록

2020-04-13 TIL

|

계획수행표

계획 수행
알고리즘 과제 O
프언어 강의 듣기 O
데이터통신 강의 듣기 X
수행도 66%

Today I Learend

알고리즘 과제

  • Linear select를 구현하는 과정에서 오류가 있어 오늘도 약 세 시간동안 방황했다.
  • 테스트 케이스를 직접 손으로 적어보고 어디서 잘못되었는지 디버그를 하느라 한참 고생했다.
  • 문제는 5개로 나누는 방식에 있었다. 나는 이차원 배열을 통해 5개씩 분리하였고 그 이차원 배열의 5개 중 가운데를 select했다. 그래서 원하는 본 배열에서는 정렬이 변하지 않는다. 하지만 과제에서는 본 배열을 이용해 5개씩 분리하고 5개 중 가운데를 select하는 과정에서 본 배열의 정렬이 바뀌게된다. 그래서 과제에서 원하는 답이 나오지 않았다.
  • 교수님께서 제공한 ppt를 제대로 살펴봤다면 이런 실수를 하지 않았을텐데 너무 구현에만 신경을 썼나보다.

프로그래밍 언어론

  • storgae binding 과 lifetime에 대해서 배웠다.
    • 메모리는 code segment, data segment, heap segment, stack segment로 나눠진다.
    • 전역 변수는 data segment에 저장되고 힙 영역은 동적 할당을 위한 공간이다. 스택영역은 지역변수를 저장한다.
  • 변수의 Lifetime은 static과 dynamic한 것으로 나눠진다.
    • static variable 은 실행하기 이전에 바인딩되어야하고 실행하는 동안 동일한 메모리에 바인딩이 되어있어야한다.
    • dynamic variable은 stack dynamic, explicit heap dynamic, implicit heap dynamic 으로 나뉜다.
    • stack dynamic : 스택에 공간을 할당한다. 실행하는 동안 elaboration(공간을 할당하고 변수가 지칭하는 것을 바인딩하는 것)이 발생한다.
    • explicit heap dynamic : 프로그래머가 명시적인 할당과 제거를 표현한다. (malloc, free 등), 포인터와 레퍼런스를 사용하여 바인딩한다. 해제할 때는 명시적으로 해주거나 가비지 컬렉터를 사용한다.
    • implicit heap dynamic : assignment를 통해 자동적으로 할당과 제거가 된다.
  • Scope : 어디서 읽고 쓸 수 있는지에 대한 범위를 의미한다. ( local, nonlocal, global)
  • Scope rules : 변수의 이름이 어디서 접근 가능한지 나타내는 방식
    • Static scope : 변수의 scope가 실행 이전에 결정된다. 사람이나 컴파일러가 소스코드만 보고 각 변수의 타입을 알 수 있으면 static scope rule이 적용된 것이다.
      • 서브 프로그램이 중첩되는 경우 : 내부 function에 원하는 변수가 없을 경우 상위 function에서 해당 변수를 참조.
      • 서브 프로그램의 중첩이 허용되지 않는 경우
    • Block scope : while block, if block 등 block 단위로 내부의 변수를 선언할 경우 그 블록 안에서만 사용가능.
    • Dynamic scope : 누가 호출했는지에 따라 참조하는 것이 달라짐. 콜체인을 살펴봐야함.
  • Referencing environments : statement에 보이는 모든 name의 집합.
  • Named constatns : 상수의 이름을 짓는 것은 한번 값이 바인딩되면 바뀌지 않음.
    • 상수의 정의는 static 할 수 도 dynamic 할 수도 있다.

느낀점

  • 알고리즘 과제를 거의 12시간 동안 붙잡고있었다. 마침내 해결하니 기분이 좋았다. 삽질 한 것에 대해 허무하기도 하다.
  • 프로그래밍 언어론 수업을 들으면서 여러 개념들이 따로따로 형성되는 기분이다. 한번 정리를 해야할 것 같다.
  • 데이터 통신 수업이 결국 밀렸다. 이번 주에 데이터통신 수업을 꼭 듣고 이번 주 주차 수업은 꼭 이번 주일 안에 끝내도록 노력해야겠다.

Comments