코드워리어

**코드워리어**(CodeWarrior)는 NXP 반도체가 임베디드 시스템에 사용되는 여러 마이크로컨트롤러 및 마이크로프로세서 (프리스케일 콜드파이어, ColdFire+, Kinetis, Qorivva, PX, Freescale RS08, Freescale S08, S12Z)와 디지털 신호 컨트롤러 (DSC MC56F80X 및 MC5680XX)용 소프트웨어를 편집, 컴파일 및 디버깅하기 위해 발행한 통합 개발 환경 (IDE)이다.

이 시스템은 메트로웍스가 매킨토시에서 개발했으며, 이 플랫폼에서 기존 모토로라 68k와 파워PC (PPC) 명령어 집합 아키텍처를 모두 깨끗하게 지원한 최초의 개발 시스템 중 하나였다. 애플이 파워PC로 전환하는 동안 코드워리어는 시맨텍의 THINK C와 애플 자체의 Macintosh Programmer's Workshop을 빠르게 대체하며 맥의 사실상 표준 개발 시스템이 되었다. 1996년 애플의 NeXT 인수는 맥 프로그래밍이 NeXT 플랫폼 자체 개발 도구인 GNU 컴파일러 모음을 기반으로 구축된 인터페이스 빌더와 프로젝트 빌더로 옮겨가면서 코드워리어의 중요성이 감소하는 결과를 가져왔다.

메트로웍스는 코드워리어를 마이크로소프트 윈도우로 이식하고 더 다양한 플랫폼을 위한 컴파일러를 도입하며 이에 대응했다. 이는 모토로라의 다양한 마이크로컨트롤러 라인에 대한 소프트웨어 스택의 주요 부분이 되었고, 결국 1999년 모토로라가 메트로웍스를 인수하게 만들었다. 이 제품은 PPC 또는 기타 모토로라 프로세서 기반의 대부분의 플랫폼과 많은 게임 콘솔에서 널리 사용되었다. 이 제품은 2004년 프리스케일 세미컨덕터가 설립될 때 그 회사로 넘어갔고, 2015년 NXP가 프리스케일을 인수하면서 NXP로 넘어갔다.

원래는 "클래식 IDE"로 알려진 단일 통합 제품이었으나, 나중에 IDE는 이클립스 IDE로 대체되었다. 현재 버전은 클래식 IDE 6.3 버전과 이클립스 IDE 11.0 버전이다. 지원되는 언어는 C, C++, 그리고 어셈블리어이다.

## 역사
### 기원
1992년 10월, 시맨텍 언어 제품 그룹의 개발 관리자였던 존 맥이너니는 자신의 파워PC 제품 작업을 위해 회사를 떠났다. 처음에는 파스칼 컴파일러를 생각했다. BBEdit의 저자인 리치 시겔은 맥이너니가 시맨텍을 떠났다는 소식을 듣고 몬트리올의 메트로웍스의 그렉 갈라노스에게 이 소식을 전했다. 갈라노스는 맥이너니에게 전화를 걸어 "꿈의 직업을 설명해달라"고 요청했다. 맥이너니는 애플이 미래에 사용하겠다고 발표한 새로운 파워PC (PPC) 칩을 위한 코드 생성기를 쓰고 싶다고 말했다.

메트로웍스는 이미 파스칼과 모듈라-2 컴파일러를 개발했는데, 원래는 아타리 ST용이었으나 나중에 맥을 포함한 여러 동시대 기계로 이식되었다. 그들은 맥이너니를 몬트리올로 초청하여 갈라노스와 그의 파트너 장 벨랑제와 만났다. 그들은 PPC를 위한 새로운 도구 체인에 큰 기회가 있다고 느꼈고, 그들의 컴파일러와 맥이너니가 작성한 새로운 PPC 코드 생성기를 결합했다. 그들은 맥의 주요 개발 시스템 공급업체인 시맨텍보다 더 빠르게 시장에 진출할 수 있다고 느꼈다. 시맨텍은 PPC용 제품 출시를 앞두고 있지 않았고, 애플은 수년 동안 무시되었던 Macintosh Programmers Workshop (MPW)의 업데이트 버전을 PPC 개발에 사용하고 있었다. 맥이너니는 관심이 있었지만 그들의 컴파일러에 감명받지 못했고, 이 초기 접촉에서는 거의 아무것도 나오지 않았다.

비슷한 시기에 안드레아스 호멜은 독일 대학에서 컴퓨터 과학 석사 학위를 마치고 있었다. 그는 C로 컴퓨터 게임을 작성하는 데 관심을 갖게 되었지만, 기존 컴파일러가 품질이 낮은 코드를 생성한다는 것을 알게 되었다. 그는 수년 동안 68k용 C 컴파일러와 간단한 통합 개발 환경 (IDE)을 개발했다. 대학을 마친 후 그는 함부르크에서 일자리를 제안받았지만, 자신의 컴파일러 시장성이 있는지 알아보기로 결정했다. 몇 달 후 그는 갈라노스로부터 전화를 받았다. 여러 차례의 대서양 횡단 전화 통화 끝에 갈라노스는 호멜을 몬트리올로 초대하여 함께 일하는 것에 대해 논의했다.

### 개발
1993년 2월, 갈라노스는 맥이너니에게 전화하여 팔로 알토에서 만나 메트로웍스가 인수한 새로운 C 컴파일러를 검토할 수 있는지 물었다. 맥이너니는 매우 감명받았다. 이 시스템은 초기 Think C 버전과 비슷해 보였고 매우 빨랐다. "다이아몬드 원석"이라고 묘사하며, 맥이너니는 몇 시간 내에 메트로웍스와 계약을 맺었다. 호멜은 자신의 C 컴파일러를 완전한 C++ 구현으로 확장하면서 코드 생성 단계와 분리할 것이었다. 맥이너니는 호멜의 컴파일러에 의해 구동되는 새로운 PPC 코드 생성기를 작성할 것이었다. 호멜의 기존 68K 코드 생성기는 그 플랫폼에 사용될 것이며, 파스칼도 지원하도록 약간 수정될 것이었다. 몬트리올의 베라르디노 바라타와 마르셀 아킴은 IDE 개발을 계속하고 동일한 코드 생성기에서 실행되는 파스칼 컴파일러를 개발할 것이었다.

새로운 시스템을 검토하면서 맥이너니는 코드 생성에 완전히 새로운 접근 방식을 취하기로 결정했다. 당시의 일반적인 컴파일러는 중간 표현 (IR)을 반복적으로 검사하여 점점 더 최적화된 코드 버전을 생성한 다음 최종적으로 기계 명령어로 변환했다. 이 접근 방식은 RISC 플랫폼에는 덜 중요했는데, 명령어 집합 아키텍처가 훨씬 간단하고 주어진 작업에 어떤 특정 유형의 명령어를 사용할지 결정하는 데 훨씬 적은 노력이 들었기 때문이다. 대신 맥이너니의 새로운 코드 생성기는 초기 IR을 직접 PPC 코드로 변환했다.

주요 변경 사항은 레지스터 사용을 위한 차이틴의 알고리즘을 구현한 것이었다. 1982년에 도입된 이 시스템은 컴파일러 기술의 획기적인 발전이었다. 이는 코드 생성기가 지역 변수를 프로세서 레지스터에 매우 효율적으로 매핑할 수 있도록 했다. 성능을 위해 레지스터 사용에 의존하는 기계(RISC 프로세서의 주요 개념 중 하나)에서 이 기술은 엄청난 개선을 가져올 수 있다. 단점은 O(N<sup>2</sup>) 프로세스이므로 결과를 계산하는 데 비용이 많이 든다는 것이다.

PPC 컴파일러 개발을 돕기 위해 애플의 조던 매트슨은 맥이너니에게 RS/6000 시스템 중 하나를 보냈다. 1993년 8월까지 기본 시스템이 실행되었다. 맥이너니는 메트로웍스에서 일자리를 찾고 있던 전 시맨텍 동료인 댄 포드웰로부터 전화를 받았다. 갈라노스는 포드웰에게 전화했고, 그는 즉시 고용되어 디버거를 작성했으며, 단 4주 만에 완료했다.

프로토타입 파워 맥 기계는 1993년 9월 회사에 보내졌다. 당시 메인 IDE와 컴파일러 도구 체인은 여전히 68k 기계에서 실행되어 PPC 바이너리를 생성했으며, 이 바이너리는 프로토타입으로 옮겨져 디버깅되었다. 이를 통해 시스템을 PPC로 빠르게 포팅할 수 있었고, 12월까지 전체 시스템이 생산 준비를 마쳤다.

### 출시
이 시스템은 1994년 1월 맥월드 엑스포에서 코드워리어라는 이름으로 출시되었다. 파워 맥도 그 달에 출시될 예정이었으나, 일련의 지연으로 인해 3월 14일 파워 맥 기계의 공식 출시까지 연기되었다.

당시 애플의 MPW와 시맨텍의 Think C는 모두 68k 기계에서만 실행되었으며, MPW만이 PPC 바이너리를 생성할 수 있었다. PPC에서 기본적으로 실행되고 해당 플랫폼 전용 코드를 기반으로 한 코드워리어는 단일 기계에서 개발 및 디버깅을 가능하게 하면서 훨씬 더 높은 성능을 제공했다. 다른 개발 시스템의 판매는 거의 하룻밤 사이에 중단되었다. 1986년부터 맥 개발 시장을 지배했던 시맨텍은 1995년 3월 말까지 기본 PPC 버전을 출시하지 않았다. 이때까지 몇몇 주요 맥 소프트웨어 공급업체는 코드워리어로 전환했으며 시맨텍은 맥에서 어떤 시장 점유율도 다시 확보할 수 없었다.

코드워리어는 애플이 기계 아키텍처를 68K 프로세서에서 파워PC로 전환하는 데 성공하는 데 핵심적인 역할을 했다. 경쟁사(애플의 MPW 도구 및 시맨텍 C++)가 대부분 불완전하거나 시장에 늦게 출시되었을 때, 코드워리어는 완전하고 견고한 파워PC 컴파일러를 제공했기 때문이다. 메트로웍스는 또한 68K 및 파워PC 코드를 모두 포함하는 팻 바이너리를 쉽게 생성할 수 있도록 했다.

매킨토시용 코드워리어의 자바 지원은 1996년 5월, 코드워리어 9에 예정되어 있다고 발표되었다. 메트로웍스는 새로운 IDE를 작성하는 대신 디버깅을 포함한 자바 도구 지원을 코드워리어에 추가하는 접근 방식을 취했다.

### 여러 플랫폼으로 이동
1997년 애플은 NeXT를 인수하여 그들의 운영체제인 OpenStep을 미래 맥 제품의 기반으로 사용했다. OpenStep은 전체 운영체제와 모든 응용 프로그램이 내부 개발 시스템을 사용하여 구축된다는 개념을 기반으로 했다. 이것은 GNU 컴파일러 모음 (GCC)을 기반으로 했다. 코드워리어는 플랫폼에서 "클래식" 맥 응용 프로그램을 작성하는 개발자에게 여전히 중요했지만, 개발이 주로 새로운 OpenStep 플랫폼을 통해 이루어질 것이므로 GCC를 통해 이루어질 것이라는 명확한 시간 프레임이 있었다.

1996년 8월, 메트로웍스는 BeOS 소프트웨어 개발자들이 이미 사용할 수 있었던 파워PC 컴파일러를 보완하는 BeOS 버전의 IDE인 BeIDE인 CodeWarrior for BeBox를 발표했다.

### 모토로라 시대
메트로웍스가 1999년 모토로라에 인수된 후, 회사는 임베디드 응용 프로그램에 집중했으며, 데스크톱 컴퓨터용 컴파일러에는 적은 노력을 기울였다. 2005년 7월 29일, 그들은 다음 출시 버전인 CodeWarrior Pro 10 이후에는 Mac용 CodeWarrior가 중단될 것이라고 발표했다. 메트로웍스는 지난 4년 동안 제품의 매출 비중이 22%에서 5%로 떨어졌으며, 회사가 임베디드 개발 시장에 집중하기 위한 노력 때문이라고 밝혔다. 코드워리어에 대한 수요는 애플이 엑스코드 (OS X용 자체 소프트웨어 개발 키트)를 무료로 배포하기 시작하면서 감소했을 것으로 추정된다. 또한, 애플이 인텔 칩으로 전환하면서 메트로웍스는 2005년 초에 인텔 컴파일러 기술을 노키아에 판매했기 때문에 명확한 제품이 없게 되었다.

전성기 시절 이 제품은 매년 여러 차례의 신속한 출시 주기와 독특한 광고 캠페인으로 유명했다. 그들의 "괴짜웨어" 셔츠는 뉴욕 타임스의 패션 페이지에 실리기도 했다.

## 이전 버전
섬네일|코드워리어 프로페셔널 릴리스 1

프리스케일에 제품이 인수되기 전에는 매킨토시, 마이크로소프트 윈도우, 리눅스, 솔라리스, 플레이스테이션, 플레이스테이션 2, 닌텐도 게임큐브, 닌텐도 DS, Wii, 드림캐스트, 슈퍼H, M·CORE, 팜 OS, 심비안 OS, 그리고 BeOS를 대상으로 하는 버전들이 존재했다.

메트로웍스 버전의 코드워리어는 파스칼, 오브젝트 파스칼, 오브젝티브-C, 그리고 자바 컴파일러도 포함했다.

구버전 코드워리어는 클래식 맥 OS에서 개발하는 데 사용될 수 있다. Classilla는 메트로웍스 코드워리어 7.1로 빌드되었다.

## 이름의 유래
1990년대, 애플 컴퓨터는 매킨토시 프로그래밍을 위한 리소스를 담은 월간 개발자 CD-ROM 시리즈를 출시했다. 이 CD들은 초기에는 다양한 영화를 코딩 관련 말장난으로 재치있게 제목을 붙였다. 예를 들어, "The Hexorcist" (The Exorcist), "Lord of the Files" (Lord of the Flies), "Gorillas in the Disc" (Gorillas in the Mist) 등이었다.

이 중 9번째 볼륨은 영화 매드 맥스 2를 참고하여 "Code Warrior"라는 제목이 붙었다. 나중에 애플은 이러한 재치 있는 제목 대신 더 진중한 "Developer CD series"를 선호했다. 우연히도 메트로웍스 창립자인 호주인 그렉 갈라노스도 이 영화에서 영감을 받아 CodeWarrior라는 이름을 제안했다. 메트로웍스는 이후 이 이름을 새로운 개발자 제품에 사용했다.

코드워리어 CD 패키징은 애플 개발자 CD의 전통을 많이 따랐는데, "피, 땀, 그리고 코드" ("Blood, Sweat, and Code")와 "왔노라, 보았노라, 코딩했노라" ("Veni, Vidi, Codi")와 같은 슬로건이 눈에 띄게 인쇄되어 있었다. 시맨텍의 THINK C와 같은 경쟁 제품은 더 전통적인 방식으로 마케팅되었다.

## 코드워리어 래티튜드

메트로웍스는 파워PC로의 전환 때와 마찬가지로 MacOS 소프트웨어에서 애플의 미래 운영 체제인 코드명 랩소디로 개발자들이 전환하는 데 필수적인 개발 도구가 필요하다고 예측했다.

1997년, 메트로웍스는 데이비드 헴플링과 그의 파트너로부터 The Latitude Group Inc.의 주요 자산을 인수했다. Latitude는 매킨토시 응용 프로그램을 넥스트 컴퓨터 및 기타 UNIX 시스템으로 포팅하는 데 사용되는 소프트웨어 호환성 계층이었다.

Latitude는 리 로렌젠의 Altura Mac2Win 소프트웨어와 애플 자체의 Quicktime for Windows SDK가 매킨토시 응용 프로그램을 최소한의 수정으로 Windows용으로 재컴파일할 수 있도록 한 것과 동일한 방식으로 매킨토시 시스템 7 API를 구현하는 라이브러리로 나타났다. Latitude는 이전에 어도비가 포토샵과 프리미어를 실리콘 그래픽스 및 Solaris 워크스테이션으로 포팅하는 데 성공적으로 사용되었다.

메트로웍스는 Latitude를 CodeWarrior Latitude로 재브랜딩하고, Developer Preview 1부터 랩소디용으로 업데이트한 다음 CodeWarrior Professional과 함께 매킨토시 개발자들에게 399달러에 별도 제품으로 판매했다.

Latitude Developer Release 1 (DR1)은 세계 개발자 회의 1997년 CodeWarrior 라운지에서 미리 선보였다. Latitude DR2는 1997년 10월 27일에 출시되었으며 1998년 맥월드에서 AAA+ 소프트웨어 F&E의 Joy와 시맨텍의 Visual Cafe for Macintosh 1.0.2를 제치고 신기술 최우수 도구로 Eddy Award를 수상했다.

당시 스티브 잡스는 운영 체제의 새로운 기능에 접근하기 위해 OpenStep API(Yellow Box로 이름 변경)를 적극적으로 홍보하고 있었다. C/C++/파스칼 매킨토시 개발자들에게 이것은 상당한 장애물이었다. Blue Box 내에서 실행되고 오브젝티브-C 기반인 클래식 MacOS API와는 현저하게 달랐기 때문이다. Latitude는 한동안 "그린 박스"(Green Box)로 불렸으며, 메트로웍스의 또 다른 성공작이 되고 매킨토시 개발 도구 시장에서의 지배력을 더욱 공고히 하는 것처럼 보였지만, 애플은 은밀하게 자신만의 계획을 가지고 있었다.

랩소디용 CodeWarrior IDE와 CodeWarrior Latitude는 모두 1998년 세계 개발자 회의에서 서드 파티 개발자 전시관에서 시연되었으나, 스티브 잡스의 기조연설 이후 조용히 중단되었다. 애플이 새로운 운영 체제로 전환할 실용적인 방법을 필요로 하는 개발자들을 위한 카본 API (코드명 "아이보리 타워")를 발표하면서 서드 파티 솔루션의 필요성이 사라졌기 때문이다.

메트로웍스는 Latitude를 내부적으로 사용하여 CodeWarrior를 Red Hat 및 SuSE 리눅스용으로 상업적으로 판매하고, Sun Microsystems와의 계약에 따라 Solaris용으로도 포팅했다. 두 제품 모두 UNIX 개발자 커뮤니티 내에서의 채택을 촉진하기 위해 메트로웍스 자체 컴파일러 기술 대신 gcc 명령줄 컴파일러를 사용했다.

Latitude의 최종 버전은 Solaris 2.3, SGI Irix 5.2, Rhapsody DP2를 지원하며 HP-UX 지원은 중단했다.

## 각주

### 참고 문헌
* 
* 

## 외부 링크

분류:통합 개발 환경
분류:C 컴파일러
분류:C++ 컴파일러