통합 개발 환경

내위키

Integrated Development Environment. 줄여서 IDE라고 많이 부른다.

컴퓨터 프로그램 개발을 위한 환경으로, 개발에 필요한 각종 기능들을 통합해서 지원하는 프로그램 패키지를 뜻한다. 운영체제나 언어에 따라서 따르지만 프로그래밍을 위해서는 코드를 입력하고 편집할 편집기, 프로그래밍 언어로 짠 코드를 기계가 인식할 수 있는 코드로 변환하기 위한 컴파일러, 인터프리터, 링커와 같은 빌드 도구, 그리고 프로그램을 실행시키면서 오류를 찾아내기 위한 디버거가 필요한데, IDE는 이를 하나의 환경 안에서 다룰 수 있다. IDE에서 내장된 편집기로 코드를 짜고, 버튼이나 메뉴를 선택해서 빌드를 하고, 디버거를 돌리면서 편집기 안에서 현재 실행되고 있는 코드의 위치와 변수의 값, 메모리 상태와 같은 정보들을 체크해서 오류를 추적할 수도 있다. 그밖에도 사용자 인터페이스를 디자인하거나, 즉석에서 코드의 리팩토링을 하거나 하는 오만가지 일들을 통합된 환경 안에서 할 수 있도록 많이 진화되었다. 아예 클릭 몇 번으로 만들고자 하는 프로그램의 뼈대 코드를 자동 생성함으로써 초기 오버로드를 왕창 줄여주는 기능도 대부분 IDE가 지원하고 있다. 최근에는 Git과 같은 버전 관리 시스템이 널리 쓰이면서 IDE 차원에서 이를 지원하는 경향이 두드러진다.

IDE의 편집기는 빌드 도구 및 디버거와 연동이 되므로 프로그램 개발에 굉장히 편리하다. 예를 들어 명령어의 처음 몇 글자를 치면 그 글자들로 시작하는 명령어의 목록을 제시하거나, 함수의 이름만 입력하면 매개변수 부분을 완성해 준다든가, 클래스 혹은 객체의 이름만 치면 사용할 수 있는 멤버 필드 또는 메서드의 목록을 제공하는 것과 같은 자동 완성 기능. 프로그래밍 언어의 문법에 안 맞는 코드를 입력하면 이를 잡아내고 경고하는 기능과 같은 것들은 IDE에서는 기본에 가깝다. 더더욱 나가면 함수의 이름을 바꾸면 그 함수를 사용하고 있는 다른 코드에서도 이름이 동시에 바뀐다든가, 클래스의 메서드를 다른 클래스로 옮기면 관련된 코드가 그에 맞게 바뀐다든가 하는 리팩토링 기능까지도 제공하는 IDE가 많아졌다. 프로젝트 안에 속한 소스 파일의 목록, 각 소스 파일에 들어 있는 클래스나 함수의 목록, 클래스 안에 있는 메서드나 필드의 목록을 트리 구조로 일목요연하게 제공하는 기능은 뭐... 말할 것도 없다.

특히 IDE의 편리함을 느낄 수 있는 부분은 디버그 과정으로, 코드를 한 줄씩 단계별로 실행시켜 가면서 변수의 값이 어떻게 변화하는지 추적하고, 오류가 있는 줄을 발견하면 바로 그 부분을 수정할 수 있다.[1] IDE가 없던 시절의 디버깅이 그야말로 암흑 속에서 실행 결과를 보고 계속해서 추측하고 시행 착오를 거치는 식이었다면 IDE가 지원하는 디버그 기능은 그야말로 개발자들에게 천국과도 같았던 것.

텍스트 기반 인터페이스에서도 터보 C, 터보 파스칼과 같은 IDE가 있었지만 그래픽 기반 인터페이스가 대세가 되면서는 IDE도 빠르게 발전하고 기능도 쑥쑥 향상되어 왔다. IDE에서 좀 더 나가서 컴포넌트 기반으로 마치 블럭 조립을 하듯 프로그램의 뼈대를 구성하고 간단한 코드를 추가해서 빠르게 개발 작업을 할 수 있는 신속 응용프로그램 개발도구(Rapid Application Development Tool)도 등장했다. 비주얼 베이직이나 델파이와 같은 것들이 그 예. 하지만 RAD 쪽은 요즈음은 많이 풀이 죽은 분위기다.

과거에는 프로그래밍 언어에 따라서 IDE가 나왔지만 다양한 언어나 환경을 지원하는 IDE도 속속 등장했다. 일종의 플러그인 방식으로 다중 지원이 가능해졌는데, 그 대표적인 예가 MS의 비주얼 스튜디오, 그리고 오픈 소스 프로젝트인 이클립스. 비주얼 스튜디오는 원래 MS 윈도우만을 지원했고 맥용 비주얼 스튜디오가 맥을 일부 지원하는 정도였지만 이후 MS가 친 오픈 소스 쪽으로 돌아서면서 파이썬, 자바스크립트를 비롯한 다양한 언어들을 적극 수용하면서 폭이 크게 넓어졌다. 최근 들어서는 체코의 개발회사인 JetBrain에서 개발하는 IDE 시리즈들이 상당한 인기를 얻고 있는데, 특히 안드로이드용 앱 개발을 위해 구글에서 제공하는 안드로이드 스튜디오는 JetBrain의 자바/코틀린 개발용 IDE인 IntelliJ IDEA를 기반으로 한 것이다. 맥OS는 애플의 운영체제인만큼 애플의 Xcode가 필수이며[2], 리눅스이클립스가 많이 쓰이는 편이지만 MS의 준 IDE라 힐 수 있는 비주얼 스튜디오 코드도 많이 쓰인다.[3]

각주

  1. 다만 코드를 고친 결과를 확인하려면 다시 빌드해서 실행시켜야 한다. 디버그 모드로 컴파일했을 때에는 코드를 고치고 다시 빌드했을 때 전체를 다시 빌드하지 않고 바뀐 부분의 모듈만 빌드해서 실행 파일에 붙인 후, 프로그램의 실행을 새로 붙인 모듈 쪽으로 오게 해서 빌드 시간을 단축시키는 증분 빌드(increment build)를 지원하는 프로그래밍 언어나 컴파일러도 있다. 단 이렇게 되면 빌드를 하면 할수록 실행 파일 크기가 점점 커진다.
  2. 설령 다른 IDE를 쓰더라도 Xcode가 있어야 빌드를 할 수 있다.
  3. 기본은 텍스트 편집기지만 확장을 통해 빌드나 디버깅도 가능해서 웬만한 IDE에 못지 않은 성능을 보여준다.