CodeWarrior — это интегрированная среда разработки (IDE), выпущенная компанией NXP Semiconductors для редактирования, компиляции и отладки программного обеспечения для нескольких микроконтроллеров и микропроцессоров ( Freescale ColdFire , ColdFire+, Kinetis, Qorivva , PX, Freescale RS08 , Freescale S08 и S12Z) и цифровых сигнальных контроллеров (DSC MC56F80X и MC5680XX), используемых во встраиваемых системах .
Система была разработана Metrowerks на Macintosh и была одной из первых систем разработки на этой платформе, которая полностью поддерживала как существующую архитектуру набора инструкций Motorola 68k , так и PowerPC (PPC) . Во время перехода Apple на PowerPC CodeWarrior быстро стала фактически стандартной системой разработки для Mac, быстро вытеснив Symantec 's THINK C и Macintosh Programmer's Workshop от Apple . Покупка Apple NeXT в 1996 году привела к снижению актуальности CodeWarrior, поскольку программирование для Mac перешло на собственные инструменты разработки платформы NeXT: Interface Builder и Project Builder , которые были построены на основе GNU Compiler Collection .
Metrowerks ответила портированием CodeWarrior на Microsoft Windows и введением компиляторов для более широкого спектра платформ. Он стал основной частью программного стека для различных линеек микроконтроллеров Motorola и в конечном итоге привел к покупке Metrowerks в 1999 году. Он широко использовался на большинстве платформ на базе PPC или других процессоров Motorola, а также на многих игровых консолях . Продукт перешел к Freescale Semiconductor , когда эта компания была образована в 2004 году, а затем к NXP, когда они купили Freescale в 2015 году.
Первоначально единый интегрированный продукт, теперь известный как «Classic IDE», IDE позже был заменен на Eclipse IDE. Текущие версии — 6.3 Classic IDE, [1] и 11.0 для Eclipse IDE. [2] Поддерживаемые языки: C , C++ и язык ассемблера .
В октябре 1992 года Джон МакЭнерни, бывший менеджер по развитию группы языковых продуктов Symantec, покинул компанию, чтобы работать самостоятельно над продуктом PowerPC, изначально думая о компиляторе Pascal . Рич Сигел, автор BBEdit , услышал, что МакЭнерни покинул Symantec, и рассказал об этом Грегу Галаносу из Metrowerks в Монреале . Галанос позвонил МакЭнерни и попросил его «описать работу своей мечты». МакЭнерни сказал, что хочет написать генератор кода для нового чипа PowerPC (PPC), который, как объявила Apple, они будут использовать в будущем. [3]
Metrowerks уже разработали компиляторы Pascal и Modula-II , изначально для Atari ST , но позже портированные на ряд современных машин, включая Mac. Они отправили МакЭнерни в Монреаль, чтобы встретиться с Галаносом и его партнером Жаном Беланже. Они чувствовали, что есть огромная возможность для нового набора инструментов на PPC, объединяющего их компиляторы с новым генератором кода PPC, написанным МакЭнерни. Они чувствовали, что могут выйти на рынок быстрее, чем Symantec , ведущий поставщик систем разработки для Mac. Symantec была далека от выпуска своих продуктов для PPC, а Apple использовала обновленные версии своего собственного Macintosh Programmers Workshop (MPW) для разработки на PPC, продукта, который игнорировался в течение многих лет. МакЭнерни был заинтересован, но не впечатлен их компиляторами, и из этого первоначального контакта мало что вышло. [3]
Примерно в то же время Андреас Хоммель учился в университете в Германии, заканчивая магистратуру по информатике . Он заинтересовался написанием компьютерных игр на языке C, но обнаружил, что существующие компиляторы генерируют некачественный код. За несколько лет он разработал собственный компилятор C для 68k вместе с простой интегрированной средой разработки (IDE). Когда он закончил университет, ему предложили работу в Гамбурге, но он решил попробовать посмотреть, есть ли рынок для его компилятора. Несколько месяцев спустя ему позвонил Галанос. После нескольких трансатлантических телефонных звонков Галанос пригласил Хоммеля приехать в Монреаль и обсудить работу с ними. [4]
В феврале 1993 года Галанос позвонил МакЭнерни и спросил, могут ли они встретиться в Пало-Альто, чтобы МакЭнерни мог рассмотреть новый компилятор C, приобретенный Metrowerks. МакЭнерни был чрезвычайно впечатлен; система выглядела как ранние версии Think C и была очень быстрой. Описывая ее как «необработанный алмаз», МакЭнерни подписал контракт с Metrowerks в течение нескольких часов. Хоммель расширил свой компилятор C до полной реализации C++ , отделив его от стадии генерации кода. МакЭнерни написал новый генератор кода PPC, который управлялся бы компилятором Хоммеля. Существующий генератор кода 68K Хоммеля использовался бы для этой платформы, слегка измененный для поддержки Pascal. Берардино Баратта и Марсель Ахим в Монреале продолжили бы разработку IDE и разработали бы компилятор Pascal, работающий на тех же генераторах кода. [3]
Изучив новую систему, МакЭнерни решил использовать совершенно новый подход к генерации кода. Типичные компиляторы той эпохи неоднократно проверяли свое промежуточное представление (IR), создавая все более и более оптимизированные версии кода, пока они, наконец, не преобразовывали его в машинные инструкции. Этот подход был менее важен для платформ RISC , поскольку архитектура набора инструкций была намного проще, и было гораздо меньше работы, связанной с принятием решения о том, какой конкретный тип инструкций использовать для данной задачи. Вместо этого новый генератор кода МакЭнерни брал исходное IR и преобразовывал его напрямую в код PPC. [3]
Главным изменением стала реализация алгоритма Чайтина для использования регистров. Эта система, представленная в 1982 году, стала знаковым событием в технике компиляции. Она позволила генератору кода отображать локальные переменные в регистры процессора с очень высокой эффективностью. На машине, которая полагалась на использование регистров для производительности, что является одной из основных концепций процессоров RISC, эта техника может привести к огромным улучшениям. Недостатком является то, что вычисление результатов является дорогостоящим процессом, представляющим собой O(N 2 ) . [3]
Чтобы помочь разработать компилятор PPC, Джордан Мэттсон из Apple отправил МакЭнерни одну из своих систем RS/6000 . К августу 1993 года базовая система была запущена. МакЭнерни позвонил бывший коллега из Symantec, Дэн Подвалл, который искал работу в Metrowerks. Галанос позвонил Подваллу, которого немедленно наняли для написания отладчика , завершенного всего за четыре недели. [3]
Прототип машины Power Macintosh был отправлен в компанию в сентябре 1993 года. В то время основная IDE и инструментальная цепочка компилятора все еще работали на машинах 68k, создавая двоичные файлы PPC, которые затем переносились в прототип и отлаживались. Это позволило им быстро перенести систему на PPC, и к декабрю вся система была готова к производству. [3]
Система была представлена как CodeWarrior на выставке MacWorld Expo в январе 1994 года. В том же месяце планировалось выпустить Power Mac, но ряд задержек вынудил отложить запуск до официального запуска машин Power Mac 14 марта. [3]
В то время и MPW от Apple, и Think C от Symantec работали только на машинах 68k, и только MPW мог генерировать двоичные файлы PPC. Работая на PPC и основываясь на коде, предназначенном для платформы, CodeWarrior предлагал значительно более высокую производительность, позволяя разрабатывать и отлаживать на одной машине. Продажи других систем разработки практически прекратились в одночасье. Symantec, владевшая рынком разработки для Mac с 1986 года, не выпускала собственную версию PPC до конца марта 1995 года. К этому времени несколько крупных поставщиков программного обеспечения для Mac перешли на CodeWarrior, и Symantec так и не смогла восстановить какую-либо долю рынка на Mac. [5]
CodeWarrior сыграл ключевую роль в успешном переходе Apple с архитектуры своих машин с процессоров 68K на PowerPC, поскольку он предоставлял полный, надежный компилятор PowerPC, в то время как конкуренты (инструменты MPW от Apple и Symantec C++) были в основном неполными или опоздали на рынок. [5] Metrowerks также упростил генерацию толстых двоичных файлов , которые включали как код 68K, так и код PowerPC.
Поддержка Java в CodeWarrior для Macintosh была анонсирована в мае 1996 года и намечена на CodeWarrior 9. [6] Metrowerks решила добавить поддержку инструментов Java в CodeWarrior, включая отладку, вместо того, чтобы писать новую IDE. [7]
В 1997 году Apple приобрела NeXT , чтобы использовать их операционную систему OpenStep в качестве основы для будущих продуктов Mac. OpenStep основывалась на концепции всей операционной системы и всех ее приложений, создаваемых с использованием внутренней системы разработки. Она, в свою очередь, основывалась на GNU Compiler Collection (GCC). Хотя CodeWarrior по-прежнему будет важен для разработчиков, пишущих «классические» приложения Mac на этой платформе, были четкие временные рамки, после которых разработка будет осуществляться в основном через новую платформу OpenStep, а значит, и через GCC.
В августе 1996 года Metrowerks анонсировала CodeWarrior для BeBox [8] , версию BeOS-среды IDE под названием BeIDE, дополняющую компилятор PowerPC, который уже был доступен разработчикам программного обеспечения BeOS.
После того, как Metrowerks была приобретена Motorola в 1999 году, компания сосредоточилась на встроенных приложениях , уделяя меньше внимания компиляторам для настольных компьютеров. 29 июля 2005 года они объявили, что CodeWarrior для Mac будет прекращен после следующего релиза, CodeWarrior Pro 10. Metrowerks указала, что доля дохода от продукта упала с 22% до 5% за последние четыре года, и усилия компании по концентрации на рынке разработки встроенных приложений. Спрос на CodeWarrior предположительно упал в то время, когда Apple начала бесплатно распространять Xcode (собственный комплект разработки программного обеспечения для OS X). [9] Кроме того, переход Apple на чипы Intel оставил Metrowerks без очевидного продукта, поскольку они продали свою технологию компилятора Intel компании Nokia в начале 2005 года. [ необходима цитата ]
В период своего расцвета продукт был известен своим быстрым циклом выпуска, с многочисленными изменениями каждый год, и своей необычной рекламной кампанией. Их рубашки "geekware" были представлены на модных страницах The New York Times . [10]
До приобретения продукта компанией Freescale существовали версии для Macintosh , Microsoft Windows , Linux , Solaris , PlayStation , PlayStation 2 , GameCube , Nintendo DS , Wii , [11] Dreamcast , SuperH , M·CORE , Palm OS , [12] Symbian OS и BeOS . [8]
Версии CodeWarrior от Metrowerks также включали компиляторы Pascal , Object Pascal , Objective-C и Java .
Более старые версии CodeWarrior можно использовать для разработки на классической Mac OS. Classilla построена с помощью Metrowerks CodeWarrior 7.1. [13]
В 1990-х годах Apple Computer выпускала ежемесячную серию CD-ROM для разработчиков , содержащих ресурсы для программирования Macintosh. Эти CD в ранние дни были причудливо названы с использованием каламбурных ссылок на различные фильмы, но с уклоном в кодирование; например, «Гекзорцист» ( The Exorcist ), «Властелин файлов» ( Lord of the Flies ), «Гориллы на диске» ( Gorillas in the Mist ) и т. д. [20]
Один из них, том 9, назывался «Code Warrior», что отсылало к фильму «The Road Warrior ». Позже Apple отказалась от причудливого названия в пользу более сдержанного «Developer CD series». По совпадению основатель Metrowerks, Грег Галанос, австралиец, также был вдохновлен фильмом и предложил название CodeWarrior. Впоследствии Metrowerks использовала это название для своего нового продукта для разработчиков.
Упаковка CD CodeWarrior была очень традиционна для компакт-дисков разработчиков Apple, с лозунгами, такими как «Кровь, пот и код» и «Veni, Vidi, Codi» в виде заметных букв. Конкурирующие продукты, такие как THINK C от Symantec, продавались более традиционно.
Metrowerks предвидела, как и при переходе на PowerPC, необходимость предоставить необходимый инструмент разработчикам, чтобы помочь им перейти с программного обеспечения MacOS на будущую операционную систему Apple под кодовым названием Rhapsody . [21]
В 1997 году Metrowerks приобрела основные активы The Latitude Group Inc. у Дэвида Хемплинга и его партнеров. Latitude был программным слоем совместимости, используемым для переноса приложений Macintosh на NeXT Computer и другие системы UNIX. [22]
Latitude представляла собой библиотеку, которая реализовала API Macintosh System 7 таким же образом, как программное обеспечение Altura Mac2Win Ли Лоренцена, а также собственный Quicktime для Windows SDK от Apple, позволяли перекомпилировать приложения Macintosh для Windows с минимальными изменениями. Latitude ранее успешно использовался Adobe для портирования Photoshop и Premiere на рабочие станции Silicon Graphics и Solaris . [23]
Metrowerks переименовала Latitude в CodeWarrior Latitude, [24] обновила его для Rhapsody, начиная с Developer Preview 1, а затем стала продавать его разработчикам Macintosh как отдельный продукт за 399 долларов, наряду с CodeWarrior Professional. [25] [26]
Latitude Developer Release 1 (DR1) был представлен на WWDC 1997 в CodeWarrior Lounge. Latitude DR2 был выпущен 27 октября 1997 года и получил премию Eddy Award на Macworld 1998 года за лучший инструмент для новых технологий, обойдя Joy от AAA+ Software F&E и Visual Cafe для Macintosh 1.0.2 от Symantec. [27]
В то время Стив Джобс активно продвигал API OPENSTEP (переименованный в Yellow Box ) для доступа к новым функциям операционной системы. Для разработчиков Macintosh на C/C++/Pascal это представляло существенное препятствие, поскольку оно заметно отличалось от классического API MacOS, который работал внутри Blue Box и был основан на Objective-C . Latitude на короткое время был придуман как «Green Box» [28] по очевидным причинам и, казалось, стал еще одним хитом для Metrowerks и еще больше укрепил свое доминирование на рынке инструментов для разработчиков Macintosh, но у Apple втайне были свои планы.
CodeWarrior's IDE для Rhapsody и CodeWarrior Latitude были продемонстрированы на Всемирной конференции разработчиков в 1998 году в павильоне сторонних разработчиков, но были тихо сняты с производства после выступления Стива Джобса. Анонс Apple своего предстоящего API Carbon (под кодовым названием «Ivory Tower»), призванного привлечь разработчиков, которым требовался практичный способ перехода на новую операционную систему, устранил необходимость в каких-либо сторонних решениях. [29]
Metrowerks использовала Latitude внутри компании для портирования CodeWarrior для работы на Red Hat и SuSE Linux для коммерческой продажи, а также на Solaris по контракту с Sun Microsystems. Оба продукта использовали компиляторы командной строки gcc, а не собственные технологии компиляции Metrowerks, чтобы способствовать принятию в сообществе разработчиков UNIX.
Финальная версия Latitude поддерживала Solaris 2.3, SGI Irix 5.2 и Rhapsody DP2, отказавшись от поддержки HP-UX.
Официальный сайт