저도 basic, asm, c, c++, fortran, pascal, java, javascript, perl, php, ruby, lua, python 등을 알고 있지만…
개인적으로 꼽으라면, c, java, perl, bash스크립트를 손꼽고 싶네요.
java는 플랫폼 독립형이고, 임베이딩 운영체제환경에 강점을 가지고 있는 점이고,
java의 태동이 네트워크를 기본 베이스로 깔고 간다는 점에서, 앞으로도 많이 쓰이게 되리라 보입니다.
java classloader 자체가 네트웍으로 전송이 가능하다는 점은, 언어의 기능 정의가 네트워크적 성격을 가짐을 의미합니다.
c는 고전적인 언어이지만, 특유의 자유로움과 기계어적 성질로, 저레벨 수준에 근접하는 프로그램을 작성하기에 유리합니다.
asm 날코딩은 정말 쉽지 않지만, c로는 그 보다 훨씬 쉬운 방법으로 하드웨어를 제어할 수 있습니다.
또한, GPT에서 사용하는 펌웨어라던가 기타 펌웨어 및 드라이버들이 C언어로 작성됩니다.
또한, 유닉스 자체가 C로 작성되었다고 하고, 기본쉘로도 C언어가 장착되었습니다.
리눅스도 유닉스계열인 관계로, C언어를 이해하면 커널과 쉘을 이해하는데 상당한 도움이 됩니다.
perl도 고전적인 언어이지만, 최근에도 소프웨어 생산성 측면에서 두각을 드러내고 있습니다.
언어 자체가, 구조적, 객체지향적 언어가 아닌, 인터프리팅적 요소를 강조하는 다이나믹 스크립트인 관계로,
하나의 기능을 어찌 해석하느냐에 따라, 코드및 접근 방식이 아주 달라질 수 있습니다.
이런 것에 익숙해지면, 타언어에서 수십줄로 표현할 것을 몇줄이면 해냅니다.
왜나면 언어 자체가 코드를 인식하고, 변경하는 식의 인터프리팅적 요소가 강조되어 있기 때문입니다.
bash스크립트는 sh(Born Shell)이 향상된 (Born-Again Shell)입니다.
본쉘에 비해, 아주 막강해서… bash스크립트만 잘 사용하더라도, 왠만한 스크립팅 언어수준의 표현이 가능합니다.
쉘이란것이 커널과 사용자및 사용자프로그램 사이에서 동작하는 관계로…
쉘스크립팅을 잘 사용하면, 시스템에 보다 간편하게 접근이 가능하고,
시스템관리에 엄청난 장점을 지닐 수 있습니다.
왜 뜬금없이 언어 얘기를 하는가 하면…
이렇게 언어들도 각각의 용도별로 특장점들이 있듯,
에디터들도 그러한 속성을 지닌다는 것입니다.
제가 vim과 emacs를 perl과 python에 비교했듯이…
체계성이 부족하지만, 번역기능이 강조된 펄의 생산성 처럼…
vim도 emacs에 비해 체계성이나, 기능면에서는 분명 딸릴 것입니다만…
실질적으로 편집기에서는 그 많은 기능은 소용이 없을 뿐 더러,
또 많은 기능을 배우기 위한 진입장벽, 그것을 잊지 않기 위한 노력을 생각해 본다면…
분명 과기능이라고 생각합니다.
예전에 C언어를 배울때, 유닉스의 철학에 대한 문장을 본 적이 있는데…
비유하자면…
화분을 정리하는데는 모종삽이면 충분하고, 화단을 정리하는데는 삽이면 충분하다.
이런 곳에 포크레인을 사용한다며, 쓸데 없을 뿐 더러, 오히려 단점 만을 드러낼 수 있다.
대부분의 프로그램들을 잘게 쪼개 놓고, 쉘스크립트를 사용하여…
프로그램간의 표준 입출력을 통해서 많은 기능들을 창출한다는 것이죠.
이런 면에서도, vim은 프로그램 호출 및 표준 입출력을 통한 상호작용이 만족할 수준입니다.
또한, 자체로도 그렇게 무겁지 않기 때문에… 포터블한 환경에도 적용하기 쉽습니다.
저는 윈도우즈에서도, 주로 vim을 사용합니다.
어찌보면 습관이나 병같아 보이지만…
정규표현식을 vim만큼 잘 처리해주는 윈도우즈 에디터는 찾지 못하겠더군요.
그냥 win32용 vim을 복사해놓고, 실행만 하면 됩니다.