PVOID - Компиляторы

Компиляторы

Этот раздел является переводом туториала C++ Language


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

   C++ - это язык, который значительно эволюционировал за последние годы, и это руководство описывает многие возможности, недавно добавленные в язык. Поэтому для следования руководству необходима последняя версия компилятора. Он должен поддерживать( хотя бы частично) возможности, введенные в 2011 стандарте.

   Различные поставщики компиляторов поддерживают поддерживают новые возможности в разной мере. В конце раздела приведены некоторые компиляторы, которые поддерживают необходимые возможности. Некоторые из них являются свободными!

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

Что такое компилятор?


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

Единичная инструкция компьютера может выглядеть так:

00000 10011110

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

00000 10011110
00001 11110100
00010 10011110
00011 11010100
00100 10111111
00101 00000000

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

Это часть кода, написанного на  C++, которая выполняет такую же функцию:

int a, b, sum;
     
cin >> a;
cin >> b;
             
sum = a + b;
cout << sum << endl;

   Даже если Вы не поняли код выше, то могли оценить, насколько проще программирование на C++ в сравнении с машинным языком.

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

C++ разработан как компилируемый язык. Это означает, что он обычно транслируется в машинный язык, который непосредственно понимается системой, что делает программу высокоэффективной. Для этого необходим набор инструментов, ядром которого являются компилятор и компоновщик.

Консольные программы


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

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

   Способ компиляции консольной программы зависит от конкретных используемых инструментов.

Простейший путь для новичков для компиляции программы на C++ - это использование интегрированной среды разработки - IDE (Integrated Development Environment). IDE обычно сочетает несколько инструментов, включая текстовый редактор и инструменты для компиляции программы непосредственно из нее.

Далее изложены инструкции по компиляции и запуску консольных программ с использованием различных IDE:

IDEПлатформаИнструкция
Code::blocks Windows/Linux/MacOS Compile console programs using Code::blocks
Visual Studio Community Windows Microsoft Visual Studio Community official page
Dev-C++ Windows Compile console programs using Dev-C++

Если Вы имеете дело с Linux или MAC, Вы должны быть способны компилировать некоторые примеры прямо из терминала с использованием флагов C++11 в командной строке компилятора:

КомпиляторПлатформаКоманда
GCC Linux g++ -std=c++0x example.cpp -o example_program
Clang OS X clang++ -std=c++11 -stdlib=libc++ example.cpp -o example_program