맥시말리즘에 필요한 미니멀리즘.
최적화 전략에는 보통 미니맥스 알고리즘들이 많이 사용된다. 예를들어 클러스터링의 경우에 내부적 거리는 최소화 하며 외부적 거리는 최대화 하는 클러스터들을 찾게 하는 비용함수를 사용하게 된다. CRPG 게임을 하다보면 어떤 게임을 하든 주가 되는 능력치를 최대로 하고 나머지를 최소화하는 미니맥스 전략이 주효할 때가 많다. 물론 밸런스를 중요시하는 게임에서 그러면 망할때도 있지만, 밸런스라는게 그리 쉬운 일이 아니다.
처음 프로그래밍을 하다보면, 다양한 툴들을 사용해보면서 감탄하게 된다. 마이크로소프트의 비주얼스튜디오를 처음 사용했을 때의 그 놀라움이란. 지금은 어떤 에디터든 다 있는 Intellisense 기능들 등. 단점은 개발환경자체가 너무 크고 무거워서 한 곳에서만 개발을 했어야 하는 정도?
컴퓨터를 바꿀 때마다 개발환경 만드는데만 한 세월이 걸리다보니, 그리고 모든 OS 에서 작업을 하다보니 개발환경은 점점 단순하고 간단해진다. Sublime 에디터조차 무겁게 느껴질 때 즘 해서 그냥 오래전에 사용하던 Vim 으로 모든 환경을 바꿔버렸다. 개발 웍스테이션의 시끄러운 팬 소리도 짜증나서 그냥 원격 서버 하나 사서 Vim 으로 모든 작업을 하기 시작하니 터미널만 사용하면 되어 랩탑이나 소형 PC 에 모니터만 잔뜩 연결해서 사용하게 되었다. 그래도 원격으로 작업하는 서버가 열대가 넘어가고, 집이나 사무실에서 사용하는 컴퓨터들이 열대가 넘어가니, 모든 곳에서 똑같이 작업할 수 있으려면 이게 제일 나은 방법인 것 같다.
대부분의 컴퓨터 (윈도우)에는 OS 에서 기본적으로 Vim 을 깔아주니, 별로 더 할건 없지만, Vim 플러그인들을 깔아주는 스크립트를 하나 간단히 짜 두고 github 같은데 올려놓고 스크립트 실행하면 새 서버나 웍스테이션에서 개발환경 만드는데 몇초 안걸리니 매우 편리하다. Nvim 같은 더 발전된 에디터가 있지만, 애시당초 따로 설치해야 하고, Vim 과 달리 Nvim 은 OS 버전에도 영향을 꽤 받기 때문에, 성능이 아무리 좋다해도 선택지에서는 빼버렸다. 굳이 설치를 따로 해줄거면 그냥 VS Code 쓰는 것이 훨씬 정신건강상 유리하다. 원격 서버에서 작업을 할땐 Nvim 이 더 나을 수 있겠지만, Nvim 을 설치하려면 관리자가 되든지, 컴파일을 하든지, AppImage 로 사용해야하는데, 컴파일 및 AppImage 사용은 OS 버전에 영향을 받는 경우가 많다. 그냥 Local 컴퓨터에서 Vim 이 좋아 사용하는 것 외에는 사실상 쓸모가 없다고 해야하나.
Vim 은 익숙해지는데 시간이 조금 걸리기는 한다. 근데 몇달정도 익숙해지면 이것만큼 편한 에디터가 없다. 마우스에 손을 거의 안대고 작업을 할 수 있기 때문에, 이것 쓰다가 다른 일반적인 에디터를 사용하면 암걸릴정도로 답답하다. NERDTree 같은 플러그인을 쓰면 생산성이 VSCode 보다 훨씬 나은 것 같다. 게다가 네트웍 Latency 가 100ms 정도 이하면 원격으로 작업해도 그다지 불편하지 않으니 사무실이나 집에 웍스테이션을 돌릴 필요도 없다. 웍스테이션의 팬 소리는 정말 거슬린다.
개인적으로 만드는 GUI 툴들을 전부 TUI 로 바꾸어 나가고 있는데, 매우 마음에 든다. 속도는 말할것도 없고, 원격에서 실행해도 다 똑같으니. 물론 개인용도로 쓰는 것이라 그럴 수 있는 것이지만. 개인적으로 UI 프로젝트는 웹아니면 TUI 로 모두 진행한다. Rust 커뮤니티에서 TUI 프로젝트들이 많은 것 같다. 툴들도 꽤 쓸만하고. Yazi 같은 파일탐색기는 맥이나 윈도우터미널(최근버전)에서 사용하면 이미지도 잘 보이고 해서 이미징 관련 리서치 프로젝트 할 때도 편리하다.
Vim 을 사용하는 이유는, 너무 많은 시스템들을 관리해야하고 작업위치가 가변적이기 때문이다. 너무 많은 개발환경이라는 맥시말리즘에서 작업을 하기 위해 최소화된 툴을 사용하는 미니말리즘. 그 중심에 Vim 이 있다.
30년전에 터미널을 사용할 때는, 아 앞으로는 모든게 화려한 그래픽 인터페이스로 바뀔거야 라고 생각했는데, 그래픽 인터페이스가 엄청나게 발전하고 나니, 오히려 텍스트 터미널 인터페이스가 다시 효용성이 늘어나고 있다는 것이 재미있다.