네, 배열을 담은 배열에 대해 어제부터 고민하고 있었지요~~^^*
p5.js가 메모리를 Dynamic Allocation 동적 할당만 하기 때문에, 배열을 만들 때 구성요소가 몇 개인 배열인지는 고민하지 않아요. 그냥, 배열이다~~라고 선언한 뿐이죠.
다른 언어들은, 배열의 구성요소의 갯수를 미리 정하여, 배열을 만드는 경우도 있는데요. p5.js는 무조건, 메모리 동적 할당 Mamory Dynamic Allocation 만 해요.
그래서…오늘은 동적 할당에 대한 기초 공부를 해 보는 것이 좋지 않을까 싶어요…
그리고, 배열을 담은 배열이, 배열의 주소를 담는지, 배열의 데이터를 담는지, 내용 확인이 아직 어려워서, 자세하게 설명해 볼 수가 없을 것 같아요. p5.js의 경우, 동적 할당이 기본이다 보니, p5.js의 동적 할당에 대한 강의 영상들을 따로 찾을 수가 없었어요….그래서, 관련 내용을 공부하고 있는 동영상 강의 사이트에 문의글을 보내었어요. 혹시 답장이 오면, 그 때 내용을 확인해 보기로 할게요~^^*

두 번째 방식, 배열들의 데이터를 모은 배열인 경우, 메모리 동적 할당을 하면 작업 속도가 엄청 많이 걸릴 것 같거든요….인접한 메모리 공간이 더 이상 없으면, 더 큰 크기의 빈 공간을 찾아, 이제껏 모은 데이터를 거기에다 다 복사를 하고, 남는 공간에 새로운 데이터들을 또 채우고, 또 어느 시점에 이 공간이 꽉 차게 되면, 더 넓은 빈 공간을 찾아 이제껏 모은 데이터들을 복사해 넣고, 남은 공간에 새로운 데이터들을 채우고…해서….
저는 첫 번째 방식, 배열들의 주소만 받아서 저장해 두고, 주소를 찾아가서 데이터를 확인하는 방식이 더 효율적일 것 같은데요…이렇게 주소접근 방식으로 작동되는 지를 확인하지 못했어요…
근데…연의 실이 점점 늘어나면, 컴퓨터 부하가 많이 걸린다고 동영상 강의에서 말씀하시는 것을 들으니, 두 번째 방식을 쓰나…싶기도 해요….
아래 동영상 강의를 5:00까지 보시면, 정적 배열 Static Array와 동적 배열 Dynamic Array에 대한 기초 개념을 보실 수 있어요. p5.js는 JavaScript 계열이기 때문에, 동적 배열을 그냥 기본 배열로 다루기 때문에, 이름도 그냥 Array예요.
(1) 배열이 선언되면, 기본 값으로 설정된 크기의 메모리를 확보해 놓아요.
(2) 배열에 데이터가 계속 들어와서, 준비해 둔 메모리가 꽉 차게 되면, 그 메모리 크기의 두 배가 되는 크기의 메모리 공간을 또 확보해요.
(3) 새 메모리 공간에, 이제껏 모은 데이터를 옮겨 와요.
(4) 배열에 또 계속 데이터가 들어와서 이 메모리 공간도 꽉 차면, 이 메모리 공간 크기의 두배가 되는 크기의 메모리 공간을 또 확보해요.
(5) 이전 메모리에 있던 데이터들을 또 다 옮겨 오고,
on and on~~~~
항상 기존 메모리의 두 배 크기의 메모리로 확장이전해 가다 보니,,,,메모리 공간이 남게 되는 경우도 있구요. 데이터들을 매번 옮겨 오니, 그 작업 시간도 많이 걸릴 수 있어요…
하지만, 처음에 배열 만들 때, 구성요소가 몇 개일지 모르는 경우가 많을 때 아주 유용한 메모리 할당 방식인 것 같아요. 그래픽 디자인 작업이 주된 업무인 p5.js의 경우, 배열의 크기를 미리 정하지 않는 것이 자연스러울 것 같기도 하네요. 업무적 특성 때문에, 메모리 관리와 컴퓨팅의 효율성보다는 프로그래밍의 절차적 편이성이 더 중요할 수도 있을 것 같아요…
음…이렇게 생각을 펼쳐가다 보니, 위의 그림의 두 번째 경우가 배열 this.currentPath들을 모으는 배열 this.Paths를 보여주는 것 같네요…
다른 언어들은 메모리의 정적 할당과 동적 할당을 모두 시도해 볼 수 있기 때문에, 메모리 사용에 대한 이해를 위해 공부해 볼 필요도 있을 것 같아요~^^* 시청자 모드로 그림만 주로 본다 생각하시고 편안히 편안히 보셔도 좋을 것 같아요~~^^*
어제 오늘 배열의 배열에 대해 알아보다 좀 먼 곳까지 다녀온 기분이예요. 그래도, 동적 배열이 p5.js의 기본 배열이라는 것을 알게 되어서, 내일은 연의 실로 다시 돌아와 프로그램을 마무리 해 볼 수 있을 것 같아요. 낯 선 길 배회하다 제자리로 돌아오는 것을 기다려 주셔서 감사합니다~~^^*
오늘 저와 함께 동적 할당에 대해 공부해 주셔서 감사합니다~~^^*
우리 내일도 만나서~~ 연의 실 마무리 함께 할까요~~^^*
네!!! 꿈은 이루어 집니다~~~!!!
댓글 남기기