К основному контенту

Немного о Clang

Выход каждой новой версии LLVM+Clang возбуждают старый диалог о ненужности этого инструмента в мире где безраздельно владычествует gcc. Ведь что нужно от компилятора? Чтобы переводил с одного языка на другой, понятный компьютеру, чтобы ошибки показывал, да пооптимизировал что-нибудь где-нибудь. Подавляющему большинству разработчиков этого вполне достаточно.
Но давайте немного представим что будет если для разработчика будет доступен семантический слой своего же программного кода на этапе исполнения. Что будет если программист будет владеть более полной информацией о программе чем смехотворно куцый RTTI? Разве это не изменит облик программирования? Разве это не даст новые уникальные возможности? Разве это не позволит  заново переосмыслить принципы построения систем объектного брокеринга, систем клиент-сервер, маршаллинга типа, интраспекции и самой логики работы с данными в базах данных? Разве это не даст новый толчок к созданию новых систем разработки интеллектуального пользовательского интерфейса? А какие перспективы этот подход сулит для разработчиков IDE, какие просторы для рефлексивного самоанализа и верификации программных систем, корректный и встраиваемый интерпретатор C++? В мире gcc подобные фантазии не рассматриваются в силу определенных исторических стереотипов.
На самом деле понимание необходимости подобных усложнений было давно. В мире Ada давно активно используется слой семантического представления, но в мире С++ таких излишеств не наблюдается. 
Существует успешная попытка нашего соотечественника - Евгения Зуева создать подобный инструмент для мира С++. Его мысли воплощены и продолжают развиваться в компиляторе переднего плана, который существует как основа корпоративных проектов фирмы Интерстрон. На страницах сайта фирмы мы и можем читать о всех тех волшебствах которые сулят нам технологии семантического слоя компилятора переднего плана. А статья о истории его создания сама по себе интересна. Но увы. Видеть и пробовать этот удивительный инструмент мне не довелось. Разработка закрыта. Фирма Интерстрон специализируется на создании микропроцессорной техники и я даже не знаю существует ли версия удивительного компилятора Зуева для традиционных Unix систем. Что нам остается? Сожалеть о невозможности испытать нужный инструмент и выражать глубокое уважение его автору. (Насколько я знаю Евгений Зуев ныне профессор университета города Цюриха, где готовит европейских компиляторщиков)
Однако понимание необходимости семантического уровня конечно остается и, собственно именно для решения поставленных ранее задач, и был инициирован проект LLVM+Clang. Насколько я понимаю полного цикла поддержки семантического уровня пока нет. Мне еще предстоит с этим разобраться, но то, что компилятор разделен на возможные для стороннего использования динамические библиотеки и существует самостоятельный AST слой, вселяет колоссальные надежды. Даже если в процессе сборки не создается полная и доступная из рантайма нотация программы, ее уже сейчас можно создать самостоятельно используя существующие в clang инструменты.
До версии 2.7 clang был еще экспериментальной разработкой, но после 2.8 clang стал рабочим инструментов. С помощью 2.8 я без замечаний собрал Qt4.7 с ключами (-no-pch -no-3dnow), собрал QtCreator и KalpaWorld возрадовавшись значительному приросту производительности и очаровательной диагностике. Команда clang сдержала свои обещания и добилась совместимости с gcc. Qt и QtCreator я собирал связкой llvm+clang(НЕ llvm-gcc) со стандартными спеками gcc. Теперь я намерен использовать llvm+clang для ежедневного процесса разработки и поиска новых форм работы с С++ в рамках проекта Kalpa.
Конечно этот инструмент еще предстоит настраивать, обучать и доводить до нужной кондиции, но уже сейчас можно смело утверждать, что с приходом clang 2.8 для мира C++ открываются новые, совершенно потрясающие горизонты, которые еще предстоит освоить и изучить. 

Популярные сообщения из этого блога

Надежды юношей питают.

Всем хорошо известна эта фраза. Считается, что она являет собой аналог известного афоризма Ф. Бекона: "Надежда - хороший завтрак, но плохой ужин".
История появления этой фразы в русском языке проследить не удается. Известно только, что она появилась в стихотворении Глеба Глинки.

Надежд сомнителен приют.
«Надежды юношей питают,
Отраду старцам подают»,
Но все же постепенно тают.

И, наконец, на склоне дней
Вдруг понимает человече
Тщету надежд, тщету идей...
«Иных уж нет, а те далече»,
Интересно отметить, что рассматриваемая фраза взята в кавычки. Конечно Глинка не мог не знать знаменитой оды Ломоносова "На день восшествия на престол Елисаветы".
Науки юношей питают,
Отраду старым подают,
В счастливой жизни украшают,
В несчастной случай берегут;
В домашних трудностях утеха
И в дальних странствах не помеха.
Науки пользуют везде,
Среди народов и в пустыне,
В градском шуму и наедине,
В покое сладки и в труде.
Но здесь вовсе не надежды, но науки. Искажение, результат творческой переработки, заб…

К вопросу об организации оркестратора кластера в деле бесшовного ввода новых версий Kalpa-системы.

Страшное дело - организация взаимодействия в большой системе взаимодействующих узлов.
Первое и основное дело, с каким придется столкнуться - реализация плавного, бесшовного обновления всей системы на новые версии. Причем делать это надо не дергая пользователей. Пусть они спокойно доработают свою сессию на старой версии. Для обеспечения такой плавности необходима одновременная работа как всего серверного хозяйства в старой версии, так и плавный ввод в работу версии новой.
Итак. В системе существует служба "SystemControl". Она отвечает:

За контроль топологии системы. Знает какие узлы существуют в системе и какие службы эти узлы обслуживают.Мониторит отказ отдельных узлов и перебалансировку топологии системы.Осуществляет плавное обновление системы.  Каждая служба (кроме слоя сервера приложений) имеет свой набор сетевых портов ожидания. Каждая версия использует только один из трех портов. SystemControl всегда знает расписание портов текущей и прошлой версии. Таким образом можно о…

Новости госмессенджеров.

«Развитие IT-технологий является приоритетом работы правительства Республики Крым. Наш президент в своём послании Федеральному собранию назвал развитие цифровой экономики вопросом национальной безопасности и технологической независимости России. Глава государства обратил особое внимание на риски, связанные с цифровыми технологиями, и необходимость защиты от киберугроз», — отметил Сергей Аксёнов.
Андрей Назаров уточнил, что свои разработки программисты могут представить на третьем ялтинском форуме в апреле следующего года. Отметим, что Назаров также занимает пост председателя правления Ялтинского международного экономического форума.
Госконтрактом с крымским правительством уже заинтересовались разработчики российского мессенджера Dialog, которые участвуют в конкурсе Института развития интернета на создание государственного мессенджера для федеральных чиновников.

«Мы готовы принять участие и в разработке закрытого безопасного мессенджера для крымских чиновников, в свете чего планируем про…