오늘도 주말이라 가벼운 이야기를 다뤄보려고 합니다. 주말은 너무 바빠요(...)
어제 말씀드린 것과 같이, 오늘은 여러분들이 개발을 배우면서 한 번 정도 거쳐보게 될 개발용 에디터,
비주얼 스튜디오 코드(Visual Studio Code)에 관한 이야기를 해 보겠습니다.
개발 툴? 에디터?
최근의 프로그래밍 언어를 개발하는 데에는 보통 전용의 개발 도구를 사용합니다.
단순히 코드를 입력하는 에디터 이외에, 애플리케이션을 빌드한다거나, 버그를 찾는다거나 하는 등,
프로그램 개발에 필요한 각종 기능을 모두 포함한 프로그램을 사용합니다.
이것을 통합 개발 환경(Integrated Development Environment, IDE)이라고 하는데요.
오늘 말씀드리는 비주얼 스튜디오 코드는 솔직히 이런 IDE 종류는 아닙니다. 기본적으로 코드 에디터죠.
마이크로소프트의 간판 IDE인 비주얼 스튜디오(Visual Studio)의 이름을 빌려왔기 때문에,
똑같은 IDE 종류가 아닌가 착각하시는 분들도 있을 것 같은데요.
이것은 이 에디터가 기본 기능 외에 개발을 보조하는 확장 기능(Extension)들을 붙일 수 있고,
비주얼 스튜디오 코드 자체는 그냥 평범한(?) 코드 에디터에 지나지 않습니다.
물론 자체 내장된 기능이 평범하지는 않습니다. 편의성이 뛰어나기 때문에 지금처럼 쓰이고 있지요.
등장
비주얼 스튜디오 코드는 자바스크립트 언어로 만들어졌습니다.
옛날 웹 초창기 시절 같으면 말도 안 되는 소리였지만,
자바스크립트를 데스크톱 환경에서 구동이 가능하게 만든 node.js라는 놀라운 "런타임 환경"이 등장하면서 가능해졌죠.
이 런타임 환경을 내장한 일렉트론(Electron)이라고 하는 오픈 소스 프레임워크에서 구동하는 애플리케이션입니다.
node.js 런타임의 문법으로 작성한 애플리케이션을 윈도나 macOS에서 네이티브처럼 구동하게 만든 플랫폼이 일렉트론인데요.
이 일렉트론을 통해 개발된 애플리케이션 중 하나가 바로 이 비주얼 스튜디오 코드, 약칭 VS코드(VSCode)로도 불리는 녀석입니다.
(참고로 지금까지 포스팅했던 엔트리도 일렉트론으로 개발됐다고 하네요)
"런타임 환경(Run-time Environment)"이라는 새로운 말이 등장했는데요.
제가 예전에 코딩과 프로그래밍을 구분하는 것처럼, 굳이 용어를 구분해서 사용하는 것을 느끼셨는지 모르겠습니다.
뭔가 프레임워크에, 플랫폼에, 라이브러리에... 복잡한 말들이 많이 등장합니다.
이 부분에 대해서는, 예고해 드린 비동기 프로그래밍 관련 포스팅을 마친 다음 한 번 용어를 정리하고 넘어가도록 하겠습니다.
엔간한 언어용으로 다 쓸 수 있는 확장성
이 VSCode가 개발자들에게 굉장히 사랑받게 되었던 점은, 이제 얘기할 확장성 때문입니다.
이 녀석은 막 깔고 나서는 그저 단순한 코드를 입력하는 에디터에 지나지 않습니다.
사실 그런 에디터는 이 녀석이 나오기 전까지도 기존에 쓰던 것들이 적지 않았습니다.
지금도 단순 성능으로만 보면 더 능가한다고 말할 수 있는 것들도 몇몇 있습니다.
하지만, 이걸 개발한 곳이 다름 아닌 마이크로소프트였고, 이걸 또 어울리지 않게 오픈소스로 공개하면서 인기를 얻기 시작했죠.
더군다나 말씀드린 확장 패키지를 붙이는 데 따라서 자기가 원하는 개발 용도로 커스터마이즈를 할 수 있습니다.
하지만, 이게 그냥 개발사에서 지원하는 걸 눈뜨고 기다리는 형태였으면 아마 인기가 이 정도는 아니었을 겁니다.
그러나... 이게 오픈소스에 자바스크립트로 확장 패키지를 개발해서 배포할 수 있다는 것이 결정적이었던 겁니다.
자기가 필요하다면 직접 자바스크립트로 만들어 마켓에 배포하는 것이 가능하거든요.
작성 가이드(https://code.visualstudio.com/api)도 있습니다.
그 결과, 현재는 전용 IDE가 필요한 특정 플랫폼을 빼면, 거의 기본 개발 툴이 되는 지경에 이르렀습니다.
저도 애용하는 툴이고, 앞으로 개발 관련 포스팅을 할 때는 대부분 여기서 작성한 코드가 등장할 것입니다.
Cursor
제가 처음에 VSCode 이야기를 꺼냈을 땐 이걸 미리 깔고 뭘 어떻게 해보시라... 는 생각이었는데요.
사실 이건 사이트(https://code.visualstudio.com)에만 가보셔도 다 있는 내용이죠.
그러나 이 에디터 이야기를 하면서, 요즘 뜨고 있는 개발 툴인 커서(Cursor)(https://www.cursor.com/) 이야기를 안 할 수 없어 첨언하게 되었습니다.
AI를 이용한 개발 툴인 Cursor는, 이 VSCode를 포크(pork : 오픈소스 프로젝트를 복사해 가져가는 것)해서 만든 툴입니다.
여기에 AI 지원 기능을 붙여서 개발 편의성을 높인 것으로 유명해졌죠.
커서의 월 사용료를 지급하면 많이 사용하는 AI들 (ChatGPT나 Chaude, 코파일럿 같은 것들)을 한꺼번에 사용할 수 있다고 해요.
참고로 위에서 언급한 각종 확장 툴들도, 그 뼈대가 같기 때문에 커서로 옮겨와서 그대로 쓸 수 있습니다.
그 인기가 너무 높은 나머지, VSCode를 관리하는 마이크로소프트는 자신들의 AI 프로그래밍 툴 상품인 깃허브 코파일럿(Github Copilot)에다 이쪽의 주요 기능을 거꾸로 참고해서 가져가고 있을 정도입니다.
우리 개발자들이 이런 인공지능을 이용한 개발을 점점 늘여가고 있는 시점에,
이와 같은 인공지능이 포함된 툴을 어떻게 사용해야 하는지,
기능을 좀 더 효과적으로 사용하려면 어떤 것들을 알아야 하는지를 좀 더 고민해야 하는 시점이 되었다고 생각하고,
그를 위해서는 더욱 프로그래밍의 지엽적인 부분보다 기본을 추구해야 하는 것이라는 생각입니다.
이 포스팅 시리즈도 그런 생각에 시작하게 되었다고 말씀드렸었죠.
다음 이야기
본의 아니게 빙빙 돌아가는 이야기를 또 하게 되었습니다. 주말은 역시 힘드네요.
내일부터는 다시 본궤도로 돌아갑니다. 그런데 또 힘든 이야기로 가네요.
하지만 아마도 이 포스팅 시리즈의 한 고비가 될 것 같습니다.
바로 비동기 프로그래밍에 관한 이야기입니다.
지난 포스팅에서 잠깐 언급했지만, 왜 이 부분이 현대 프로그래밍에서 중요하게 되었는지,
그리고 새로 프로그래밍을 배우시는 분들이 이 부분을 어떻게 접근해야 하는지에 대해 잠깐 이야기해 보도록 하겠습니다.