24.03.17 46.5K

C — это простой процедурный язык программирования общего назначения. Он достаточно прост в освоении. В то же время он мощный, чтобы его можно было использовать для создания любой компьютерной программы.

C++ — это объектно-ориентированный язык программирования, который изначально был создан как надмножество C . Языки C и C++ являются одними из самых популярных технологий, используемых для написания программ.

В этой статье перечислены бесплатные компиляторы C и C++ для различных операционных систем.

Бесплатные компиляторы и интерпретаторы C, C++ для компьютеров

Open Watcom V2 Fork

Он может работать и создавать исполняемые файлы под Windows (16-разрядные, 32-разрядные и 64-разрядные версии ), Linux (32-разрядные и 64-разрядные версии ), OS / 2 и MS-DOS (16-разрядные и 32-разрядные режимы ). Стоит пояснить, что Watcom — это был известный коммерческий компилятор, пока первоначальные разработчики не прекратили его продажи и не опубликовали исходный код (в соответствии с публичной лицензией Sybase Open Watcom ).

Microsoft Visual Studio Community

Для индивидуальных или начинающих программистов Microsoft Visual Studio Community включает в себя много важных инструментов из коммерческих версий проекта. Вы получите в свое распоряжение IDE , отладчик, оптимизирующий компилятор, редактор, средства отладки и профилирования. С помощью этого пакета можно разрабатывать программы для настольных и мобильных версий Windows , а также Android . Компилятор C++ поддерживает большинство функций ISO C++ 11 , некоторые из ISO C++ 14 и C++ 17 . В то же время компилятор C уже безнадежно устарел и не имеет даже надлежащей поддержки C99 .

Программное обеспечение также поставляется с поддержкой построения программ на C# , Visual Basic , F# и Python . В то время, когда я писал эту статью, на сайте проекта утверждалось, что Visual Studio Community 2015 «бесплатный инструмент для индивидуальных разработчиков, проектов с открытым исходным кодом, научных исследований, образовательных проектов и небольших профессиональных групп ».

Clang: Фронтенд языка программирования C для LLVM

Clang — компилятор C , C++ , Objective C и Objective C++ , разработанный под Apple . Это часть проекта LLVM . Clang реализует различные стандарты ISO C и C++ , такие как C11 , ISO C++ 11 , C++ 14 и частично C++ 1z .

Он также поддерживает расширения, которые можно найти в семействе компиляторов C GNU . Компилятор C для Windows выпущен под лицензией BSD . К сожалению, на момент написания этой статьи, он предоставляется только в исходной форме, и вам придется собирать его самостоятельно.

MinGW-w64

Проект MinGW-w64 предоставляет библиотеки, заголовки, необходимые компиляторам C и C++ GNU для работы в системе Windows . В случае MinGW-w64 эти файлы поддержки позволяют создавать 64-битные программы в дополнение к 32-битным . Проект также предоставляет кросс-компиляторы, так что можно скомпилировать программу Windows из системы Linux .

AMD x86 Open64 Compiler Suite

Это версия набора компиляторов Open64 (описанного ниже ), которая была настроена для процессоров AMD и имеет дополнительные исправления ошибок. Компилятор C / C++ соответствует стандартам ANSI C99 и ISO C++ 98 , поддерживает межъязыковые вызовы (так как он включает в себя компилятор Fortran ), 32-битный и 64-битный код x86 , векторную и скалярную генерацию кода SSE / SSE2 / SSE3, OpenMP 2.5 для моделей с разделяемой памятью, MPICH2 для моделей с распределенной и разделяемой памятью; содержит оптимизатор, поддерживающий огромное количество оптимизаций (глобальную, цикл-узел, межпроцедурный анализ, обратную связь ) и многое другое. Набор поставляется с оптимизированной AMD Core Math Library и документацией. Для этого набора компиляторов требуется Linux .

Компилятор C/C++ Open Source Watcom / Open Watcom

Является бесплатным компилятором для Windows 7 с открытым исходным кодом. Он генерирует код для Win32 , Windows 3.1 (Win16) , OS / 2 , Netware NLM , MSDOS (16-битный и 32-битный режим ) и т. д. Watcom был очень популярным компилятором несколько лет назад до тех пор, пока Sybase не закрыла его. Он также включает в себя довольно известный STLport (реализация библиотеки стандартных шаблонов C++ ). Обновление: этот проект, похоже, застопорился, и в настоящее время запущен новый проект Open Watcom V2 Fork (описан выше ).

Компилятор Digital Mars C/C++ (замена Symantec C++)

Digital Mars C / C ++ является заменой Symantec C++ с поддержкой компиляции программ для Win32 , Windows 3.1 , MSDOS и 32-разрядных расширенных MSDOS . Если используемый ПК не имеет процессора с плавающей запятой (машины pre-Pentium ), можно связать эмуляцию с плавающей запятой в вашей программе. Компилятор поддерживает определение C++ из аннотированного руководства по C++ (ARM ) и расширенные функции языка AT & T версии 3.0 , включая шаблоны, вложенные классы, вложенные типы, обработку исключений и идентификацию типа во время выполнения.

UPS Debugger (интерпретатор C)

Это графический отладчик уровня исходного кода для X Window , который содержит встроенный интерпретатор языка C . Он может обрабатывать один или несколько исходных файлов. Можно использовать его для создания исполняемого файла с байтовым кодом и выполнения интерпретатора в этом исполняемом файле. Если вам нужен интерпретатор для отладки или создания прототипов программ, или просто для изучения языка, попробуйте этот инструмент. Он поддерживает следующие платформы: Solaris , SunOS , Linux , FreeBSD , BSD / OS и некоторые другие Unix-платформы .

The BDS C Compiler

Помните старый (популярный ) компилятор C BDS для систем CP / M 8080 / Z80 ? В настоящее время этот компилятор языка C находится в публичном доступе, в комплекте с исходным кодом языка ассемблера. Пакет представляет собой розничную версию компилятора с компоновщиком и руководством пользователя. Его можно использовать для простой генерации кода 8080/8085 / Z80 для встраиваемых систем (то есть создавать собственные процедуры для замены любого кода библиотеки, который обращается к функциям операционной системы ).

Компилятор C / C++ Bloodshed Dev

Это интегрированная среда разработки Win32 , включающая в себя компилятор C++ egcs и отладчик GNU из среды Mingw32 . А также редактор и другие средства, облегчающие разработку программ с использованием компилятора Mingw32 gcc на платформе Windows . Он также содержит программу установки для приложений.

Компилятор C Orange

Он работает как в Windows , так и в DOS , имеет интегрированную среду разработки с редактором программ (с подсветкой синтаксиса и автоматическим завершением кода ). Он может генерировать программы для Win32 и MSDOS , а также файлы Intel и Motorola hex (что полезно, если вы пишете программы для встроенных систем ). Для вывода MSDOS ваши программы будут использовать расширитель DOS .

DeSmet C

DeSmet C должен быть знаком тем, кто программировал на C в 1980-х годах. Это компилятор C для MSDOS . Он был выпущен под лицензией GNU GPL и поставляется с руководствами, редактором и сторонним оптимизатором.

Apple Xcode для Mac OS X

Xcode — это интегрированная среда разработки Apple , которая включает в себя редактор с подсветкой синтаксиса, систему управления сборкой, отладчик, компилятор C GNU (gcc ), конструктор интерфейса, AppleScript Studio , поддержку разработки на Java , инструменты разработки WebObjects . Чтобы получить в свое распоряжение данные инструменты необходимо быть участником Apple Developer Connection (ADC ) . Но онлайн-членство является бесплатным.

Tiny C Compiler — самый компактный Linux C компилятор

Этот небольшой компилятор C для Linux и Windows генерирует оптимизированные двоичные файлы x86 . Утверждается, что он собирает, компонует и связывает код в несколько раз быстрее, чем GCC . В настоящий момент разработчики стремятся обеспечить соответствие ISO C99 . Компилятор также включает необязательную проверку границ. Он обрабатывает файлы скриптов C (просто добавьте в Linux shebang код #!/usr/local/bin/tcc -run в первую строку исходного кода на C , чтобы он выполнялся напрямую ). TCC распространяется под лицензией GNU General Public License .

Portable Object Compiler

Это набор библиотек классов и компилятор Objective C , который преобразует код Objective C в простой C-код . Работает на Windows , Linux , OS / 2 , Macintosh и т. д.

C & C++ компиляторы Mingw32

Эта система поставляется с компилятором GNU C / C++ , который можно использовать для создания исполняемых файлов Win32 . Она содержит собственный , который находится в открытом доступе. Предполагается, что приложения, созданные с использованием этой системы, будут быстрее, чем, те которые созданы с помощью Cygwin32 , и они не ограничиваются положениями лицензии GNU . Mingw32 поставляется с инструментами для обработки текста (sed, grep ), генератором лексического анализатора (flex ), генератором парсеров (bison ) и т. д. Mingw32 также поставляется с компилятором ресурсов Windows .

Компилятор C / C++ GNU

На странице компилятора C GNU можно получить ссылки на бинарные файлы и исходный код для компилятора GNU C . Также можно использовать приведенные в этой статье ссылки на наиболее часто запрашиваемые бинарные версии (MSDOS и Win32 ).

Компилятор C Pelles

Еще один компилятор C , основанный на LCC (смотрите также LCC-Win32 ). Он включает в себя компилятор C , компоновщик, компилятор ресурсов, сообщений, утилиту make и другие инструменты. Он компилирует код для Windows и Pocket PC .

Компилятор C Compaq

Пользователи Linux / Alpha теперь могут бесплатно скачивать и использовать компилятор Compaq , просто заполнив форму и приняв лицензионное соглашение. Компилятор может использоваться для генерации любых программ, коммерческих или иных. Он включает в себя математическую библиотеку и отладчик (ladebug ), перенесенный из True64 Unix . Он поставляется с обычными справочными страницами, а также справочником по языку и руководством программиста.

Интерпретатор C / C++ Ch Embeddable (стандартная версия)

Интерпретатор C / C++ , поддерживающий стандарт ISO 1990 C (C90 ), основные функции C99 , классы C++ , а также расширения к языку С , такие как вложенные функции, строковый тип и т. д. Он может быть встроен в другие приложения и аппаратные средства, использоваться в качестве языка сценариев. Код C / C++ интерпретируется напрямую без компиляции промежуточного кода. Поскольку этот интерпретатор поддерживает Linux , Windows , MacOS X , Solaris и HP-UX , созданный вами код можно перенести на любую из этих платформ. Стандартная версия бесплатна для личного, академического и коммерческого использования. Для загрузки пакета необходимо зарегистрироваться.

Компиляторы C и C++ DJGPP

Это система разработки, основанная на хорошо известном компиляторе C / C++ GNU . Она генерирует 32-разрядные исполняемые файлы MSDOS , которые являются файлами с длинными именами Windows 95 . Это очень функциональная система с IDE , графическими библиотеками, генераторами лексического анализатора (flex ), генераторами парсеров (bison ), утилитами обработки текста и так далее. Компилятор языка C , утилиты и библиотеки поставляются с исходным кодом.

Cilk — ANSI компилятор на основе C

Cilk — это язык на основе ANSI C , который может использоваться для многопоточного параллельного программирования. Это особенно эффективно для использования динамического, высоко асинхронного параллелизма в стиле параллельных данных или передачи сообщений. На официальном сайте упоминается, что Cilk уже используется для разработки трех шахматных программ мирового класса: StarTech , Socrates и Cilkchess .

Sphinx — компилятор C—

Это своего рода сочетание компилятора C и ассемблера, который позволяет «создавать программы с возможностями и читабельностью C , сохраняя при этом эффективность языка ассемблера ». Он может создавать исполняемые файлы MSDOS или файлы .OBJ , которые можно применять вместе с другими компоновщиками для создания исполняемого файла. По приведенной выше ссылке можно найти исходный код и документацию для компилятора. Если вы хотите получить предварительно скомпилированный бинарный файл, это можно сделать на неофициальном сайте компилятора C— Sphinx .

Компилятор C LSI C-86

Сайт этого компилятора написан на японском языке. Он выглядит как кросс-компилятор, позволяющий генерировать код для ROM . Старая версия компилятора (3.30c ) предоставляется бесплатно. Бесплатная версия работает только на MSDOS .

Кросс-компилятор C SDCC

Это кросс-компилятор C , предназначенный для микропроцессоров Intel 8051 , DS390, Z80, HC08 и PIC. Он также может быть переназначен для других 8-битных микроконтроллеров или ОСТО . SDCC поставляется с перенастраиваемым ассемблером и компоновщиком, отладчиком исходного уровня и симулятором. Библиотеки совместимы со стандартом C99 . Исходный код для компилятора доступен под лицензией GPL . Поддерживаются такие платформы, как Linux , Windows , Mac OS X , Alpha , Sparc и другие.

Компилятор C LADSoft CC386

Это компилятор ANSI C для MSDOS / DPMI и Win32 , который поставляется с библиотекой среды выполнения, компоновщиком, отладчиком, DOS-расширителем (версия MSDOS ), IDE (версия Win32 ) и утилитой make . Также доступен исходный код. При работе в режиме совместимости с C99 он компилирует большинство конструкций C99 .

Проект Cygwin (компиляторы C и C ++)

Этот «проект» включает в себя коммерческий компилятор (GNU C / C++ ), который генерирует графический интерфейс Win32 и консольные приложения. Предоставляется исходный код компилятора, библиотек и инструментов. Обратите внимание, что опция по умолчанию в этом пакете требует от вас распространять исходный код, если вы компилируете и связываетесь со своими библиотеками. Существует также специальная вызываемая опция, которая задает возможность связи с альтернативными библиотеками, позволяя распространять свои приложения без источников.

Компилятор C LCC-Win32

Это компилятор C для Windows , который генерирует графический интерфейс Win32 и консольные приложения. Он поставляется со своим собственным компоновщиком, IDE , отладчиком, редактором и компилятором ресурсов. LCC-Win32 основан на компиляторе LCC и является бесплатным только для некоммерческого использования.

LCC — перенанаправляемый компилятор для ANSI C

LCC — это компилятор C (только исходный код ), который генерирует код для Alpha , Sparc , MIPS R3000 и Intel x86 . Он является основой как минимум для двух других компиляторов Win32 C (также описанных выше ).

Cyclone C

Cyclone C не является компилятором ANSI C в строгом значении, а представляет собой компилятор «безопасного диалекта » C . Он обеспечивает безопасность типов, имеет множество проверок для защиты от переполнения буфера, связанных с массивами нарушений и т. д. В настоящее время он работает на Linux и Windows (в последнем случае через Cygwin ), для него требуется наличие в системе инструментов компиляции GNU .

Leonardo IDE

Это IDE на базе Macintosh , компилятор и отладчик для программ на C . Он включает в себя редактор с подсветкой синтаксиса, ANSI C компилятор, компилятор для языка визуализации ALPHA , редактор графов, обратимый виртуальный процессор и т. д.

Обратите внимание, что программы в код, который будет выполняться для виртуального ЦПУ. Виртуальная машина и отладчик позволяют выполнять код вперед и назад и поддерживать многозадачность. IDE поставляется с анимированными алгоритмами, примерами исходного кода таких игр, как Tetris , Checkers и других. IDE полезна для проверки и отладки исходного кода, поиска процессов, неэффективно использующих память и т. д.

Примечание: этот проект был прекращен.

Turbo C 2.01

Старый, но проверенный Turbo C 2.01 для DOS доступен бесплатно по решению новых владельцев Borland . Это был популярный компилятор C во времена MSDOS , известный своей быстрой сборкой, интегрированной средой разработки («IDE ») и графической библиотекой (DOS ).

Данная публикация представляет собой перевод статьи «Free C/C++ Compilers and Interpreters » , подготовленной дружной командой проекта

Хорошо Плохо

Язык C++ возник в начале 80-х годов, когда сотрудник одной фирмы, придумал усовершенствование языка C для своих нужд. Через 5 лет вышло 1-е издание «Языка программирования C++». Вообще, языки программирования имеют большое значение в современном мире. Многие языки, которые создавались для первого поколения компьютеров не могут решать задачи, которые необходимы сейчас. C и С++ являются теми языками, которые до сих пор в полной мере удовлетворяют запросам программистов. Их должен знать каждый, даже начинающий программист. Кроме этого, эти языки программирования широко используются талантливыми программистами, чтобы взаимодействовать с компьютером.

1 место. Microsoft Visual C++

Как следует из названия, среда разработана фимой Microsoft и как почти все, что производит эта фирма стоит недёшево (100$), и как почти всё, отличается высокой степенью полезности, особенно для начинающего программиста. Visual C++ входит в комплект Visual Studio, которая, предоставляет ещё более широкие возможности. Я очень сомневаюсь, что какой-либо редактор сможет превзойти Visual Studio.

2 место. Eclipse

Eclipse IDE это свободная среда разработки приложений, которая имеет функции, которые очень полезны для C++ разработчиков. Среда имеет некоторые впечатляющие функции, такие как подсветка синтаксиса, отладчик и авто-завершение кода. Eclipse IDE кроссплатформенная, поддерживается на Windows, Linux и Mac OS X. Eclipse делает процесс кодирования проще, как для начинающих программистов, так и для профессионалов.

3 место. NetBeans

NetBeans является свободным програмным обеспечением с открытым исходным кодом, разрабатывалась NetBeans Community. В NetBeans, кроме C++ поддерживаются языки: UML, SOA, Ruby, Python, в версии 6.5 в этом списке появился PHP, а в 6.8 появилась поддержка фреймворка Symfony. Эта IDE помогает легко и быстро разрабатывать как настольные, так и мобильные приложения, также помогает создавать безошибочный код, благодаря интеллектуальным и удобным функциям.

4 место. CodeBlocks

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

5 место. Digital Mars

Digital Mars пока что является свободным компилятором, который имеет поддержку командной строки. Это достаточно быстрый компилятор для OS Windows. Она включает в себя компилятор, библиотеку, стандартные примеры приложений Win32 и многое другое.

6 место. C Free

C Free является отличной альтернативой для традиционного компилятора Turbo C . Это маленькая IDE с блестящими возможностями. В последних обновлениях улучшена подсветка синтаксиса, авто завершение кода, и переосмыслена технология навигации. Компилятор является платным, но вы также можете скачать бесплатную 30-ти дневную версию.

7 место. Dev C++

Это один из самых лучших редакторов и компиляторов для C++. IDE содержит в себе все необходимые инструменты для написания, компилирования, проверки и выполнения программ, написанных на С++. Есть также инструменты для создания инсталляционных пакетов для созданных вами программ. Также редактор включает в себя авто-завершение кода, подсветку синтаксиса, менеджер проекта и поддержку печати.

8 место. CodeLite

Как и некоторые другие редакторы, имеет открытий исходный код, кроссплатформенность и поддержку других языков кроме C и C +. CodeLite может работать на различных операционных системах, таких как Windows, Linux и Mac OS.

9 место. MinGW

MinGW (Minimalist GNU for Windows) это коллекция бесплатных виндусовских компиляторов для C и C++ . Это компилятор с открытым исходным кодом. MinGW включает в себя: GCC – компиляторы, ассемблер, линковщик, архиватор, комплект библиотек, а также набор утилит, для работы с командной строкой.

10 место. Ultimate++

Ultimate++ , более известная как U++ или UPP, является кросс-платформенным IDE, распространяемый по свободной лицензии, которая направлена на повышение производительности программистов С++ . При использовании, мы получаем набор библиотек, таких как графический интерфейс и SQL, удобную работу с виджетами, многофункциональные шаблоны диалогов.

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

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

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

Сервис имеет достаточно простой интерфейс, но поддерживает много языков программирования, среди них Си, C++, D, Haskell, Lua, OCaml, PHP, Perl, Plain Text, Python, Ruby и Tcl. Интерфейс не интерактивный, вы набираете программу, затем она отправляется на сервер, компилируется и вы получаете результат выполнения.

2. remoteinterview.io

Это онлайн компиляторы Си и С++, ориентированные в первую очередь на разработчиков Си. Но, кроме этого, эта отличная IDE поддерживает еще более десятка языков программирования, а также возможность делиться своим кодом с друзьями.

Интерфейс выглядит красиво и современно. Вы можете выбрать светлую или темную тему для онлайн редактора. Также доступны различные сочетания клавиш, причем вы можете выбрать один из вариантов - горячие клавиши Sublime, Vim или Emacs. Особенно полезными среди всех поддерживаемых языков есть интерпретаторы PHP и Python. На домашнем компьютере вечно может не хватать какой-либо библиотеки, а здесь вы можете быстро проверить небольшой кусок кода ничего не устанавливая.

3. ComeauComputing.com

Это очень простой, но и достаточно настраиваемый онлайн компилятор для Си и C++. Поддерживаются только эти языки, но поддерживаются очень хорошо, здесь реализованы почти все возможности, которые есть в оригинальном Си. Кроме того, перед выполнением можно задать очень много настроек, таких как: платформа, версия Си, дополнительные функции и версия компилятора.

4. C++ Compiler Explorer

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

Компилятор gcc.godbolt.org использует компилятор C++ и выполняет преобразование кода C++, в машинный код, потому это очень удобный инструмент для экспериментов, отладки и обучения.

Иногда лучший способ понять часть кода, это увидеть как она выглядит на уровне железа. Синтаксис высоко двухуровневого языка не может сказать вам о программе все, слишком много моментов и тонкостей скрыто. Вы можете выбрать версию компилятора, с помощью которой хотите собирать программу, например, gcc-6, gcc-5 или clang, Сервис сразу находит ошибки в коде, а также вы можете выбрать стиль отображения машинного кода, например, синтаксис Intel или AT&T.

5. ideone

Ideone - это онлайн компилятор и инструмент отладки с поддержкой множества языков программирования. Поддерживается больше языков, чем в любом другом варианте, среди поддерживаемых C++, D, Javascript, Cofee Script, R, Rust, Scala, Node.js, Ruby, Python, Perl, Go и многие другие. Также здесь есть онлайн компиляторы java для разных версий. Всего поддерживается более 60 языков программирования и их модификаций. Вы можете писать код, проверять его на ошибки, компилировать и сразу же выполнять программу.

6. hackerearth

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

7. repl.it

Очень простой компилятор, сначала выберите нужный язык программирования на домашней странице, затем пишите код. Интерфейс редактора состоит из двух столбцов, первый - сам редактор, второй - консоль. Также в редакторе поддерживаются сочетания клавиш Vim и Emacs. Чтобы завершить набор кода и перейти к выполнению просто нажмите Ctrl+Enter. В редакторе есть подсветка синтаксиса и автодополенение, которое поможет вам программировать быстрее.

8. CompileOnline.com

Это одна из самых простых платформ для программирования в интернете. Здесь поддерживается много популярных языков программирования, а также есть удобный и простой интерфейс. Вы можете писать на таких языках, как C, C++, Fortran, Java, JavaScript, Python, Rerl и т д.

Кроме того, на сайте вы найдете некоторые учебные материалы по программированию, правда, на английском. Также для большинства языков есть по несколько примеров, например, есть программа hello world для C++, поэтому вам не нужно писать элементарные вещи.

9. onlinecompiler.net

Это последний сервис в нашем списке лучшие онлайн компиляторы, он может показаться немного сложным, но также достаточно функционален. Поддерживаются языки программирования C/C++, Fortran, Java, Pascal, Basic. Конечно, программы можно писать, компилировать и выполнять. Но ко всему прочему здесь есть библиотека программ других пользователей, в которой вы можете найти что-то полезное для себя, а также прочитать комментарии и обсуждения.

Выводы

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


Компания АстроСофт разрабатывает свой компилятор языков программирования C/C++ с 1999 года. К проекту привлекаются исключительно российские специалисты, на разработку потрачено в общей сложности более 170 человеколет. За это время созданы несколько пакетов средств разработки на базе компилятора UCC, которые используются в производственных процессах крупных промышленных компаний.

За счет архитектуры адаптация компилятора к новой платформе занимает около 2 месяцев в зависимости от сложности процессора и методов низкоуровневой оптимизации. Адаптация включает в себя настройку правил кодогенерации, в то время как основной исходный код компилятора остается неизменным.

Сферы применения:

  • оборонно-промышленный комплекс
  • системы безопасности и связи
  • авионика
  • приборо- и станкостроение
  • компьютерная периферия


Первая фаза компиляции – Frontend позволяет произвести первичное преобразование программы в ее высокоуровневое древовидное представление. Одним из основных предназначений данного этапа компиляции является лексический и синтаксический разбор исходного кода и его абстрагирование от конкретного языка программирования. Компилятор поддерживает два Frontend: C и C++.

На следующем этапе проводится первичная оптимизация промежуточного представления.

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

В дальнейшем дерево промежуточного представления проходит фазу кодогенерации. На этой фазе применяются правила кодогенерационной модели, и дерево преобразуется к машиннозависимому виду. После этой фазы в узлах дерева остаются только инструкции и атрибуты, совместимые с целевым процессором. Над этим представлением проводятся дополнительные среднеуровневые оптимизации и распределение переменных на регистры/память в зависимости от настроек модели. Следующим этапом дерево промежуточного представления преобразуется в список ассемблерных инструкций целевой платформы, и над этим списком проводится серия низкоуровневых оптимизаций и прогон алгоритмов, заточенных под конкретную платформу.

В финале список ассемблерных инструкций преобразуется в ассемблерный файл, который передается на трансляцию целевому ассемблеру.



Основная идея компилятора UCC - вынос платформо-специфичных настроек и алгоритмов в отдельный модуль. Этот модуль может быть гибко настроен при помощи описания правил кодогенерации на специализированном языке.

Для этого в компилятор введено понятие промежуточного высокоуровневого представления программы, состоящего из узлов: команд и атрибутов «псевдопроцессора». Этот процессор содержит универсальный набор команд, бесконечное количество регистров и памяти.



1999 - 2000
Разработка первой версии мультиплатформенного компилятора C.

2006-2010

Разработка и оптимизация модели процессора южнокорейской компании, предназначенного для медиаприложений.

Разработка новых специализированных методов высокоуровневой и низкоуровневой оптимизации.

2000-2001

Разработка C++ Frontend для мультиплатформенного компилятора.

2008-2010
Разработка и оптимизация модели процессора южнокорейской компании, предназначенного для смарт-карт.
2001-2002
Разработка модели для 32-битного стекового процессора шведской компании.
2011-2014
Поддержка и постоянные улучшения кодогенерационных моделей вышеуказанных процессоров.
2002-2003
Полный рефакторинг компилятора –
обновление платформы и алгоритмов.
Разработка и поддержка.
2012-2013
Разработка кодогенерационной модели для узкоспециализированного 32-битного RISC-процессора для контроллеров SSD-дисков крупнейшего в мире производителя чипов.
2004-2005
кодогенерационной модели для узкоспециализированного многоядерного процессора PRIME (задачи печати) для южнокорейской компании.
Настоящее время
Поддержка обновлённых стандартов языка и реализация новых оптимизаций кода.

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

Стартовав в 2000 году как исследовательский проект Университета Иллинойса, на сегодняшний день LLVM де-факто является стандартом в качестве платформы для создания новых компиляторов и продолжает активно развиваться.

В отличие от компилятора GCC, LLVM не требует раскрытия исходных кодов создаваемых на его основе продуктов, что стимулирует его использование в коммерческих проектах.

АстроСофт обладает соответствующими компетенциями, имея опыт разработки специфических LLVM оптимизаций, а в 2017 году ведет несколько проектов по разработке полных LLVM-компиляторов.



LLVM не является компилятором сам по себе, а скорее предоставляет инфраструктуру для его создания. Используя эту инфраструктуру, был создан компилятор Clang, на данный момент неотрывно связанный с LLVM и развивающийся параллельно. Сегодня, когда мы говорим LLVM, подразумеваем Clang, и наоборот. А разработка нового компилятора на базе LLVM обычно означает портирование на новую платформу компилятора Clang.

Clang создавался с целью замены GCC, который изначально рассматривался в качестве единственного фронт-энда для LLVM. Однако GCC по разным причинам оказался неудобен для некоторых разработчиков. Одной из веских причин стали лицензионные ограничения GCC, которые с появлением Clang были преодолены. Заинтересованность в проекте выразили такие известные компании, как Apple, ARM, Google, Microsoft, Intel и др.

Сам компилятор Clang (как и LLVM) разработан на языке С++, а поддерживаемыми языками стали C, C++, Objective-C, Objective-C++, OpenMP, OpenCL, CUDA.




Как мы уже выяснили, LLVM, по сути, является бек-эндом компилятора, фронт-эндом которого выступает Clang. Как правило, у разработчиков компиляторов на основе Clang/LLVM не возникает потребности модифицировать «ядро», и необходимыми знаниями в этом случае становятся:
  • общее понимание архитектуры LLVM;
  • владение языком внутреннего представления (LLVM IR, LLVM intermediate representation);
  • понимание организации мультиступенчатой оптимизации.

Разработка компилятора на базе Clang/LLVM – хороший вариант для компаний, если ожидаемая выгода от постоянного развития «ядра» компилятора и широкий спектр поддерживаемых «из коробки» технологий перевешивают потенциальный риск, связанный с зависимостью от зарубежных решений и невозможностью влиять на направление развития базового функционала. АстроСофт предлагает свои компетенции в создании таких компиляторов. Если же потенциальные риски «перевешивают», мы предлагаем полностью российскую разработку – универсальный компилятор UCC .



В качестве базы для проекта использовалась собственная разработка АстроСофт - продукт Universal C Compiler (UCC). В нем существует механизм разработки компилятора для новой платформы: реализовано построение кодогенерационной модели, которая настраивает внутренние алгоритмы генерации кода и позволяет конвертировать абстрактное внутреннее представление программы в ассемблерные инструкции целевой машины. С целью сокращения издержек было принято решение портировать ассемблер, линкер и симулятор заказчика на новую платформу.

Проект был разделен на две итерации: разработка и оптимизация. В ходе первой итерации был получен полностью работоспособный комплект разработки на основе существующих решений, в ходе второй итерации добавлены оптимизации, специфичные для новой платформы.



Разработаны: компилятор С для нового узконаправленного процессора, а также ассемблер, линкер и симулятор для новой платформы.

Компилятор интегрирован и активно применяется заказчиком. Готов к использованию при разработке Flash и SSD-накопителей.

Основное средство разработки - Универсальный компилятор C (UCC). Сборка компилятора осуществлялась при помощи MSVC 2010 и модифицированным Yacc. В качестве базы для других инструментальных средств использовались: ассемблер, линкер, симулятор компании-клиента. Для тестирования использовалась собственная система тестирования компиляторов АстроСофт - TestSuite (насчитывает более 25 тысяч тестов и синтезирует в себе признанные сторонние решения с наборами, разработанными сотрудниками компании).

Компилятор преобразует исходный код (файлов *.с, *.cpp) в работающую программу. Если у вас нет компилятора, необходимо его установить, прежде чем начать программировать. Есть много компиляторов, которые доступны в Интернете для скачивания. Если вы являетесь пользователем Mac OS X, Linux или других *nix систем (например, Unix или FreeBSD), вероятно, у вас уже установлены компиляторы, такие как GCC или G++.

Основные понятия

Компилятор — программа, транслирующая исходный (высокоуровневый) код программы в конечный (низкоуровневый) код.
Компиляция — процесс преобразования высокоуровневого исходного текста программы, в эквивалентный текст программы, но уже на низкоуровневом языке.
Компоновщик (Линкер) — программа, которая генерирует исполнимый модуль путём связывания объектных файлов проекта.
IDE (Интегрированная среда разработки) — сочетание текстового редактора и компилятора. Разработка, компиляция и запуск своих программы осуществляется непосредственно в IDE. Интегрированные среды разработки упрощают процесс составления программ, так как написание кода компиляция и запуск программ выполняются в одной программе — IDE. Ещё одной важной особенностью IDE является то, что IDE помогает быстро найти и исправить ошибки компиляции.

Понимание процессов компиляции

Процессы компиляции и компоновки — краткое описание того, что именно происходит, когда вы компилируете программу.
Ошибки компиляции , в некоторых строках компилятор находит ошибки, которые нужно ликвидировать.
Предупреждения компилятора — что такое предупреждения компилятора, как и почему их устраняют.
В чём разница между объявлениями и определениями в С/C++ . Узнайте разницу между объявлением и определением в Си/C++, и почему это так важно.

Выбор компиляторов (IDE)

Для ОС Windows:
Code::Blocks с Mingw — рекомендуемая нами, бесплатная IDE! Code::Blocks также доступна на Linux. Посмотреть, как установить эту IDE можно в нашей статье Установка Code::Blocks и MINGW.
Microsoft Visual C++ — читайте о Visual C++. Руководство по установке Microsoft Visual Studio 2012