예전부터 만든던 프로그램을 rust 로 만들기 위해 rust를 공부하고 있다. 

예전부터 만들고 싶었던 프로그램이란 간단한 형태의 cvs viewer 와 약간의 함수를 지원하는 프로그램인데, 이 프로그램이 처음에는 nodejs 을 이용해서 electron 으로 만들려고 했는데, 성능이 생각대로 나오지 않아서 golang으로 만들려고 했는데, 그것도 내가 원하는 속도가 나오지 않아서 rust 로 만들려고 한다. 아마 이것도 내가 원하는 만큼의 속도가 안나온다면  cuda 를 이용해 가속을 하는 방법밖에 없는 것 같다.

첫 며칠은 그래도 공부할만 하다가 뒤로 갈 수로 많이 어렵다. 소유권까지는 이해 할 것 같은데, 라이프타임이라는 개념이 나오자, 내 머리가 너무 복잡해졌다. rust는 메모리관리가 없는 줄 알았는데, 라이프타임개념은 완전 반자동 메모리 관리 개념이 들어 가는것 같더라.

첫 회사에서 C++ 으로 프로그램을 만들었는데, 그 때 메모리 관리를 addRef 함수와 release 함수로 했다. 이 함수를 호출하면 내부적인 counter 가 +1 또는 -1 이 되었다. 이 값이 0이 되면 delete this; 가 호출되면서 메모리가 스스로 삭제되는 식으로 만들어져있다. 그래서 참조를 할 때 마다 addRef 해주고 참조가 사라진 때, release 함수를 꼭 해줘야 했다. 이게 참조라는 개념이 나도 모르게 되는 경우도 있는지라, 참 어려웠고 메모리 오류가 발생하는 버그도 참 많았다. 

 rust 의 라이프타임을 보자 옛날에 사용했던 addRef, release 함수가 생각난다. 이거 이렿게 까지 복잡하게 메모리를 관리하진 않길 바란다. 

내가 느낌 rust 의 인상은 그래도 C나 C++ 보다는 개발환경이 편리한 것 같다. vscode 가 꽤 편하고 platform 에 따라 코드가 엄청 달라지지 않는 것 같다. 이것만 해도 그런대로 할만한 것 같다.