프로그래밍 언어 제작 관련 질문

이번에 고1이 된 학생입니다.
'프로그래밍 언어 제작 및 이를 활용한 프로그램 제작’을 학교 과제 연구 주제로 결정하였습니다.
선생님께 계획서를 보여드렸는데, 구체적으로 어떤 프로그램을 만들 것인지에 대하여 보완해 오라고 하셨습니다.
Q1 fbprophet처럼 시계열 분석 프로그램을 만들 수 있을까요?
Q2 만약 시계열 분석 프로그램 제작이 안된다면 고1 수준에서 어떤 프로그램을 만들어 보는것이 좋을까요?

뭐 그냥 만들어보고 싶은걸 하나 잡는게 낫다고 봅니다. 고1수준이라고 하더라도 워낙 천차만별이니까요. 어떤걸 만들 수 있냐고 물어봐도, 실력, 하루에 쓸 수 있느 시간, 마감 시간 등 아무것도 모르잖아요? 8ㅅ8 알려드리기가 어렵네요

시계열 분석 프로그램 작성은 생각보다 기반 지식이 많이 필요 합니다.

보통, '시계열’이라 함은, 시간 기반으로 누적되는 데이터를 의미하는데, 대체적으로 누적되는 데이터의 양이 많이 큰 데이터 계열을 의미 합니다. 이에 당연히 메모리에 들고 있을 수 없는 사이즈의 데이터를 다루게 되고, 우리가 하나의 컴퓨터 내에서 가장 느린 re/writable 하드디스크를 일반적인 대상 저장소로 활용 합니다.

추가로 시계열은, 일반 database처럼 단 하나의 record를 검색 대상으로 하는 경우도 있기는 하나, 대체적으로 aggregation이 필요한 데이터들 (map-reduce와 같은 연산들이 이를 위한 대표적 기능 입니다.)을 보관 할 수 있어야 하는데, 다시 이는 연속된 데이터에 대한 빠른 re/write 연산 능력을 요구 합니다.

이에, 크게는 하둡과 같이 각각 디스크들의 throughtput을 극한으로 사용하기 위한 분산 파일 시스템이 개발 되기도 하고, 중간사이즈로는 couchbase, cassandra, elasticsearch, influx 와 같은 클러스터 기반 DB들이 나오기도 했습니다. 조금 더 작게는, mysql의 storage engine들의 특성을 이해 할 필요도 있습니다. (InnoDB - auto incremented index를 PK로 삼는 table의 writing 정책 이해)

시계열 데이터의 본질을 정리 해 드리면, 많은 양의 데이터(메모리로 못담는, 심지어 하나의 물리적 디스크 크기를 벗어날 수 있는 데이터의 운영 및 visualization 을 함께 다루는 분야인데, 사실 이 두가지가 각각 또 작지 않은 분야라, time series / visualization 두가지로 다시 세분화가 되며, 각각 분야가 그리 만만하지만은 않습니다.

일반적인(강조) 고1 수준에서 다루기 어렵다 생각 되며, 흉내라도 내는 구현을 성공 하신다면 의미가 있다고 평가 할 수 있겠으나, 만약 주어진 시간 내 프로젝트가 흐지부지 된다면 높은확률로 시간 낭비가 될 가능성이 높다 보여집니다.

연구 주제의 의도를 생각해보면,

언어 정의 및, 문맥/어휘 분석을 통한 런타임 인터프리터 제작, 그리고 그를 활용한 예제를 만들라 정도로 이해가 되는데요,

흥미 유발을 할 수 있는 프로젝트를 해보시는건 어떠실지 권유 드려 봅니다.

예를들면 slack 채팅방 연결 후, 그 채팅 입력들을 통한 퍼즐/격투 게임을 구현 하되, 채팅방 메세지를 일련의 매크로로 간주하여 render client측에서 이를 해석하고 수행 해 주는 형태루요. (엄연하게 매크로가 언어는 아닙니다만, 인터프리터를 구혔했다고는 할 수 있는…-_- 너무 억지인가요)

여튼 요지는, 본인 스스로가 조금 더 흥미를 가질 수 있는 분야와 연관된 구현을 하시는것이 집중도나 프로젝트 지속력 측면에서 도움이 되지 않을까 싶어 끄적여 봤습니다.