Compiler Explorer – это больше, чем посмотреть результат компиляции

Сегодня мы поговорим про Compiler Explorer (godbolt.org). Если Вы ещё не знакомы с этим сервисом для экспериментов с компиляцией кода в режиме online, значит пришло время прочитать про этот полезный и интересный инструмент. А если уже знакомы, то после прочтения заметки Вы сможете по новому взглянуть на этот инструмент.

Compiler Explorer – это больше, чем посмотреть результат компиляции

Что такое Compiler Explorer

Compiler Explorer – это интерактивный инструмент, который позволяет Вам набирать код в одном окне и сразу видеть результат компиляции в другом окне (онлайн компилятор).

Здесь Вы можете изучать предупреждения/ошибки и ассемблерный код, выдаваемые компилятором, а также просматривать результат выполнения скомпилированной программы.

Поддерживаются различные языки, например, Ada, D, Fortran, Python. Впрочем, нам здесь сейчас интересно пообсуждать поддержку языков C и C++.


Скриншот 1

Заметка! Если Вам интересно, у Compiler Explorer есть С++-канал в Slack. Вы можете присоединиться к нему, получив автоматический инвайт.

Важной полезной фичей является возможность создавать постоянные ссылки на «слепок» того, что Вы делаете, с сохранением напечатанного кода и взаимного расположения открытых Вами окон. Например, вот ссылка, открыв которую, Вы можете сразу увидеть текст программы, ассемблерный код и результат работы программы. Такими ссылками очень удобно делиться или использовать их в постах.

Скриншот 2

Интересный функционал Compiler Explorer

Возможно, всё это Вы уже знали и до прочтения данной статьи. Однако мне есть что добавить. Compiler Explorer постепенно развивается и из просто online-компилятора он превращается в нечто большее. Начал пополняться раздел дополнительных инструментов («Add tool»), и теперь возможно не только скомпилировать код, но и посмотреть, что о коде думают, например, такие анализаторы как clang-tidy или PVS-Studio.

Конечно, здесь надо проявлять разумность и не пытаться проверять с помощью сайта свой многофайловый проект – гораздо естественнее делать такую проверку, установив анализатор на компьютер. Также не стоит пытаться на основании синтетических примеров оценивать возможности анализаторов, ведь в таком случае очень легко ненароком поставить неправильные эксперименты.

В остальном это очень прикольная штука. Вы можете играться с анализаторами, список которых наверняка будет постепенно пополняться. Вы можете посмотреть, находится ли та или иная ошибка и как анализаторы предупреждают о них. Это можно использовать для удовлетворения любопытства, при написании статей или при каких-то исследованиях.

Пример использования


Это ещё не всё. Предлагаю взглянуть на Compiler Explorer как на среду для выполнения простых лабораторных работ. Конечно, возможности Compiler Explorer ограничены, однако для лабораторных работ из одного файла это самое то.

Можно набрать текст программы, скомпилировать и посмотреть, что будет распечатано в консоль. После можно создать ссылку на выполненную работу и отправить её по почте для проверки. И для всего этого устанавливать на компьютер ничего не требуется. Можно вообще сделать и сдать лабораторную работу с любого терминала, даже с телефона (хотя последнее, наверное, будет не так удобно). Думаю, студенты смогут оценить всё это, особенно в сессионную пору :).

А ещё при этом можно сразу пользоваться статическими анализаторами. Удастся сразу найти многие ошибки/опечатки и заодно приобщиться к хорошей полезной практике применения статических анализаторов кода.

Давайте посмотрим, как это может выглядеть на практике. Предположим, кто-то изучает массивы и циклы и ему нужно написать программу для транспонирования матрицы. И он пишет вот такую программу.

Скриншот 3

Как видите, программа компилируется и даже запускается. Вот только она как-то странно работает, и изменённая матрица упрямо не хочет печататься на экране.


Хорошо, что в правом нижнем углу статический анализатор PVS-Studio предупреждает о возможной опечатке. И действительно, во внутреннем цикле увеличивается переменная i, а не j. Возникает вечный цикл. Исправим код и теперь всё работает так, как и ожидалось.

Скриншот 4

Если Вы преподаватель, то возьмите такой сценарий выполнения лабораторных работ на заметку. Иногда он может оказаться весьма удобным. Заодно и студенты познакомятся с методологией статического анализа кода.

P.S. Для более сложных лабораторных работ или курсовых проектов такой подход, конечно, не годится. В этом случае можно установить PVS-Studio на компьютер и использовать бесплатные лицензии. См. раздел «Бесплатное использование PVS-Studio студентами и преподавателями».

На сегодня это все, пока!

Источник Заметки IT специалиста

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.