Linux Programmer

좋은 에디터란 어떤 것일까? 본문

저술 관련/손에 잡히는 vim

좋은 에디터란 어떤 것일까?

sunyzero 2011. 10. 4. 11:49
우리가 사용하는 수 많은 에디터들 중에 가장 좋은 에디터란 어떤 것일까? 하지만 이런 질문은 좀 잘못된 질문이다. 왜냐하면 가장 좋은 에디터라는 것은 특정 분야에 따라서 달라지기 때문이다. 그렇다면 이번에는 질문을 바꿔서 general하게 사용할 수 있는 2위쓸만한 에디터는 무엇일까?

출처 http://www.vim.org/about.php출처 http://www.vim.org/about.php


이에 대한 답으로 위의 4컷 만화가 생각난다. 이는 vim.org에 있는 만화인데, 너무 심플하지도 않고 너무 무겁지도 않은 에디터가 좋다는 것을 보여주고 있다. 개인적으로 2위의 쓸만한 에디터가 갖춰야 하는 조건부터 나열해보자.(이건 개인적인 생각이다. 하지만 많은 동료들도 공감했던 이야기이다.)

1) 가벼워야 한다.
2) 많은 플랫폼에 포팅되어 있어야만 한다.
3) 텍스트 환경에서도 가능해야 한다.
4) 확장이 가능해야 한다.
5) 너무 쉽게 배울 수 있으면 안된다.(?)


위 5가지의 조건만 만족한다면 꽤 쓸만한 에디터가 될 수 있다. 그럼 왜 이 5가지 조건을 걸었는지 생각해보자.

* 첫째 조건 : 가벼워야 한다.
가볍다는 것은 적은 메모리에서 구동이 가능하고, 낮은 사양의 CPU에서도 잘 작동한다는 것을 의미한다. 우리가 사용하는 컴퓨팅 환경은 항상 고성능의 환경만 존재하는 것은 아니다. 더군다나 고성능의 환경이라고 해도 가벼운 에디터를 사용해야만 하는 경우가 꼭 있다. 바로 기업에서 주로 사용하는 CS(서버/클라이언트) 환경이다.

예를 들어 어떤 서버가 있다. 메모리가 수십기가바이트이고 CPU도 수십개의 노드를 가지고 있다. 하지만 네트워크 서버로 활용하고 있고 평균 1만유저이상이 접속하고 있다. 따라서 가용할 수 있는 메모리나 CPU파워가 절대적으로 부족한 경우가 많다. 그런데 운용하는 도중에 접속해서 어떤 작업을 해야 한다고 치자. 평소라면 아무리 무거운 프로그램도 쉽게 띄울 수 있었겠지만, 지금은 최대한 접속된 다른 클라이언트에 영향을 주지 않아야만 한다. 그러므로 가벼운 에디터를 띄워야만 한다.

실제로 서버 환경에서는 무거운 프로그램을 띄우는 것은 자살행위에 가깝다. 따라서 관리 프로그램도 매우 가볍게 만들고 꼭 필요한 경우가 아니라면 차라리 외부로 데이터를 빼고 물리적으로 다른 호스트에서 실행시키는 경우가 많다.(아래 그림 참조)

Server vs Admin console물리적으로 분리된 서버와 관리 콘솔


이와 반대로 예전에 모 게임회사에서 게임 서버의 유저나 맵 관리 등등 각종 관리 프로그램을 서버에서 직접 띄우는 방식으로 제작했던 것을 봤었다. 그런데 사용자가 늘어나면서 부하가 걸리자 관리자용 프로그램에서 마우스조차 제대로 안움직일 정도로 심각한 문제가 생겼던 것을 목격한 적이 있었다. 이렇듯이 가벼운 프로그램의 중요성은 서버쪽에서 굉장히 중요한 문제인 것이다.

* 두번째 조건 : 많은 플랫폼에 포팅되어 있어야 한다.
이는 에디터를 학습하는 수고를 덜어준다. 같은 프로그램이 여러 곳에 포팅되어있다면 우리는 일석이조의 효과를 누릴 수 있게 된다. 예를 들어 유닉스에서 vim을 사용하던 사용자는 윈도우즈에서도 동일하게 vim을 사용하면 에디팅이 쉬워진다.

* 세번째 조건 : 텍스트 환경에서도 가능해야 한다.
우리가 사용하는 GUI환경은 편리하고 보기는 좋아도 생각보다 성능을 깍아먹는 주범이 된다. 텍스트 환경과 그래픽 환경은 전송되는 데이터량과 성능에 대한 부분에서 수십배 이상이 차이난다. 예를 들어 텍스트 파일 1MB와 그래픽 파일 1MB의 표현가능한 정보량을 생각해보자. 텍스트 파일 1MB에는 1,048,576개의 문자를 적을 수 있다. 무려 약 1백만자의 글자이다. 하지만 1MB의 그래픽 파일에 글자를 몇개나 적을 수 있을까? 뭐 더 이쁘긴 하겠지만 그래픽으로 전송하는 규약은 bandwidth로 볼때는 좋은 선택은 아니다.(물론 어떤 경우에는 꼭 그래픽 환경을 써야 하는 경우도 있지만...)

따라서 가볍고 빠르게 운용하고 어떤 곳에서도 제약을 받지 않으려면 텍스트 환경에서도 가능해야 한다.

* 네번째 조건 : 확장이 가능해야 한다.
이 조건은 프로그래머들을 위한 기능이다. 프로그래머들은 자기 손에 맞는 매크로나 확장 기능을 작성해서 생산성을 높이려고 한다. 고급 프로그래머들일 수록 매우 게으른 예술가 기질을 보이기 때문에 그들을 만족시키려면 최소한 내부 언어를 제공해야만 한다.

* 다섯번째 조건 : 너무 쉽게 배울 수 있으면 안된다.
이 조건은 특히 중요하다. 왜냐하면 쉽다는 것은 할 수 있는 것이 다양하지 않다는 의미도 된다. 레고 블록은 누구나 조립하기 쉽지만 섬세한 모양은 만들 수 없다. 이에 비해 레진이나 찰흙은 다루기 어렵지만 익숙해진 숙련자에게는 정말 입이 다물어지지 않는 작품을 만들어낼 수 있게 한다.

그렇다고해서 너무 어려우면 초반에 좌절할 수 있다. 대표적인 에디터로 이맥스(Emacs)라는 것이 있다. 이 에디터는 너무나 강력하고 너무 대단한 에디터이다. 이 에디터를 잘 쓰는 사람을 보고 한때 열심히 배워보려고 했던 적이 있다. 하지만 너무 복잡하고 힘들고 손에 익는데 너무 고된 시간이 흘러가는 것 때문에 포기하고 vim으로 다시 발을 돌린 적이 많았다. 그 이후로도 대여섯번 시도하다가 이젠 아주 포기해버렸다.


결국 이 다섯까지 조건을 모두 만족하는 에디터는 흔치 않다. 하지만 가장 근접한 형태의 에디터가 바로 vim인 것이다. 심지어 어떤 회사에서는 vim에디터를 사용하는 것을 입사시험에 넣을 정도로 중요하게 다루고 있다. 심지어 유닉스, 리눅스 분야에서 vim을 쓰지 못한다는 것은 어디가서 유닉스, 리눅스 써봤다고 말을 하면 안된다고 생각할 정도이다.

한줄 결론: vim은 필수전공 과목이다


반응형
Comments