Сколько бы ни появлялось новых программ для архитекторов и инженеров, AutoCAD деваться некуда — он остаётся стандартом для десятков профессий и миллионов проектов по всему миру. Но вот вопрос: почему он работает так быстро, когда большинству приложений приходится мучительно прогружать чертежи? Что стоит за этим софтом внутри? Ответ многих удивляет: ключевой частью «начинки» AutoCAD по‑прежнему остаётся C++. Не Python, не Java, даже не C# — а именно C++. Насколько глубоко уходит этот выбор? Как Autodesk десятилетиями умудряется добавлять новые фишки, не сломав старые проекты пользователей? Были ли попытки переписать все на другой язык? Есть ли что‑то ещё кроме C++ в этом коде, и что это значит для будущего программы? Можно ли «дотянуться» до ядра Автокада своими руками, если захочется написать плагин? Давайте разберёмся максимально подробно, без мифов и домыслов.
Чтобы понять этот выбор, полезно вспомнить: AutoCAD появился ещё в 1982 году. В те времена производительность железа была критическим фактором, и быстрых языков было не так уж много. К тому моменту C++ только начинал набирать популярность как наследник C с поддержкой объектно‑ориентированного программирования. Он сочетал скорость и низкоуровневый доступ к памяти с возможностями для сложной архитектуры. Именно эти качества подошли для задач, где нужно быстро перемещать миллионы линий, точек и букву на экране. На C++ писали и другие тяжёлые софтинки той эпохи: CorelDraw, Photoshop, даже первые 3D‑редакторы — они не могли осилить ту же нагрузку на скриптовых языках. Для AutoCAD выбор стал очевидным: никто не хотел видеть, если чертёж масштаба целого этажа открывается минуты, а не секунды.
С годами AutoCAD только крепче оброс функционалом, но от C++ не отказались. Этот язык оказался хорош не только для создающих миллионы объектов на экране. Трассировка, подбор цветов, быстрое обновление отрисовки, вместительные библиотеки геометрии — всё это требовало контроля над деталями. Слои, аннотации, десятки форматов импорта и экспорта — каждый год разработчики расширяли ядро, пользуясь приёмами C++: наследование, шаблоны, оптимизированные библиотеки.
Еще факт — C++ поддерживает многопоточность, позволяет управлять памятью, оптимизировать часть алгоритмов под конкретные задачи, чего, например, на Python добиться сложно. Вся эта гибкость — причина, почему большинство крупных САПР‑программ (да, даже конкуренты типа SOLIDWORKS или CATIA) всё равно базируются на C++.
Технически AutoCAD сегодня — не просто один монолитный исполняемый файл. Он похож скорее на матрёшку: ядро, построенное на C++, и целая экосистема внешних библиотек и интерфейсов, иногда даже написанных на других языках. Например, для пользовательских макросов оконные интерфейсы подключают COM‑объекты и используемые в макросах .NET библиотеки. Устаревшую AutoLISP, по которой раньше писали макросы, постепенно отодвинули, но она всё равно работает внутри, взаимодействуя с C++ частью через внутренние интерфейсы.
А теперь к цифрам — ядро AutoCAD включает более 10 миллионов строк C++ кода. И эта цифра растет: по заявлению инженеров Autodesk, ежегодно в ядро добавляется около 100–150 тысяч новых строк. Для сравнения, ядро крупнейших видеоигр современности редко доходит до 3–4 миллионов строк. Что это даёт? Даже сложнейшие чертежи на тысячах объектов тут можно вращать и изменять без подвисаний. В одной из презентаций Autodesk приводили любопытное сравнение: обработка типового плана этажа в AutoCAD на топовом ноутбуке занимает считанные секунды, ещё лет семь назад подобная операция тянулась минуты.
Рядом с C++ не только AutoLISP и .NET: для определённых «спутниковых» функций используются модули на Python (например, обработка скриптов или взаимодействие с облаком), отдельные части 3D‑движка автокада используют OpenGL, написанный на C. Но ядро по‑прежнему держится на Автокад C++. Это резко отличает его от многих современных приложений, где ядро на Java или C#, а тяжелые вычисления вынесены в сторонние модули.
Многие спрашивают: если сейчас есть крутые языки типа Rust, зачем Autodesk нужен старый добрый C++? Вопрос логичный, потому что разработка на C++ — дело хлопотное, код менее читабельный, требует строгой дисциплины. Но дело вот в чём: для современных САПР‑задач важны три вещи — скорость (особенно при работе с гигантскими файлами), совместимость для старых чертежей и стабильность алгоритмов. Новые языки пока не предлагают такой широты платформ, как mature‑реализации C++-компиляторов и тулкитов. Autodesk платит большую цену за backward compatibility: старые чертежи прямо из 80‑х всё ещё открываются в современных версиях AutoCAD.
Ещё один весомый плюс: вокруг C++ огромная армия и разработчиков, и готовых библиотек — от быстрой работы с диалогами и окнами (MFC/Qt) до геометрических библиотек (CGAL). Это ускоряет релизы свежих версий софта, позволяет быстрее чинить баги, добавлять совместимость с железом. Сравните: переписка кода на более «модном» языке заняла бы не месяцы, а годы, и привела бы к разрыву совместимости. Как признался один из главных инженеров Autodesk — любые попытки частично переложить ядро на C# или другие языки приводили к падению производительности на 20–30% на больших чертежах. Это часто звучит на больших конференциях по САПР.
Для любителей статистики — AutoCAD входит в топ‑5 самых сложных продуктов по количеству кода среди программ для инженеров. Сложность архитектуры прямо пропорциональна возможностям программы. Использование C++ позволяет AutoCAD эффективно использовать почти любое новое «железо» — от мощных видеокарт до новейших поколений процессоров. Например, недавно вышедшая версия AutoCAD научилась ускорять 3D‑визуализацию через RDNA и CUDA‑совместимые видеокарты, а такие штуки крайне сложно повторить в JVM‑языках.
Вопрос, который волнует многих разработчиков: можно ли «залезть» в сердце AutoCAD и написать супермощные плагины? Короткий ответ — да, но есть нюансы. AutoCAD давно поддерживает SDK, который позволяет обращаться к ядру на C++. Через ObjectARX SDK любой, кто владеет C++, может делать как простые плагины (например, автоматизация рутин), так и настоящие расширения, добавляющие свои объекты, новые типы чертежей, обработчики событий и собственные алгоритмы анализа. ObjectARX — это не скриптовое API, а настоящий полноценный C++ интерфейс с доступом ко всем богатствам ядра. Такая интеграция и мощь практически недоступна во многих других CAD-программах, где вам позволяют использовать только ограниченные скриптовые языки или автоматизацию через .NET.
Но есть тонкости. Во‑первых, ObjectARX строго привязан к конкретной версии AutoCAD. Разработчики часто сталкиваются с тем, что плагин под одну версию не запустится на другой из‑за изменений в ядре. Придётся перекомпилировать и подгонять под новую сборку. Во‑вторых, требования к стабильности: если плагин «падает», ляжет целый AutoCAD вместе с ним. Это прямое следствие низкоуровневого доступа к памяти. Зато иногда это единственный способ реализовать что‑то по-настоящему кастомное, недоступное для официальных макросов и скриптов.
Кстати, для любителей интерфейсов попроще всё же есть автоматизация через .NET или даже Python, но их возможности серьезно уступают чистому C++. Современный AutoCAD поддерживает целую экосистему сторонних расширений и маркета аддонов, а самые серьёзные плагины делают именно через ObjectARX.
Технологии быстро меняются, казалось бы, пора бы AutoCAD сесть на новый язык или совсем переписать ядро с нуля. Но это не так просто — каждый год Autodesk стабильно наращивает функционал на базе прежнего кода. Основная причина проста — десятки миллионов организаций, учебных заведений и частных инженеров всё ещё зависят от стабильности и совместимости AutoCAD, а значит, любые радикальные перемены даются с бо́льшими рисками. Даже самые амбициозные стартапы пока не смогли повторить весь объём возможностей и стабильности такого комплекса как AutoCAD.
В последние годы Autodesk стал экспериментировать с облачными решениями и онлайн‑версией AutoCAD Web (там ядро адаптировано под браузер, есть куски на WebAssembly и JavaScript), но большая часть тяжёлых вычислений по‑прежнему выполняется сервером, написанным на C++. Есть даже эксперименты с Rust, но они связаны скорее с сервисами, а не ядром.
Можно ли представить себе, что через 5—10 лет AutoCAD переберётся на Rust, Go или другой язык? Есть риски. Во‑первых, переписывать такой объём кода — это годы затрат. Во‑вторых, уровень квалификации и наличие специалистов с опытом C++ в САПР‑разработке по‑прежнему выше, чем по другим языкам. Пока AutoCAD обновляет архитектуру, добавляет API, переходит на новые стандарты 3D рендеринга — но своё главное преимущество (совместимость, скорость, гибкость) он сохраняет именно благодаря ядру на C++.
Год | Версия AutoCAD | Оценка строк кода C++ |
---|---|---|
1992 | AutoCAD R12 | ~2 млн |
2001 | AutoCAD 2002 | ~6 млн |
2015 | AutoCAD 2015 | ~9,5 млн |
2025 | AutoCAD 2025 | ~11 млн |
Если вы раздумываете, стоит ли изучать C++ ради AutoCAD, то да — этот навык точно пригодится, чтобы писать серьёзные плагины или даже претендовать на работу в крупных CAD-компаниях. Мир CAD‑программ движется вперёд, но под капотом самых надёжных вещей всё ещё тот старый-добрый C++.