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

Примечания

  1. ГОСТ 19781-83 // Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М.: Издательство стандартов, 1989. — 168 с. — 55 000 экз. — ISBN 5-7050-0155-X.; см. также ГОСТ 19781-90
  2. Першиков В. И., Савинков В. М. Толковый словарь по информатике / Рецензенты: канд. физ.-мат. наук А. С. Марков и д-р физ.-мат. наук И. В. Поттосин. — М.: Финансы и статистика, 1991. — 543 с. — 50 000 экз. — ISBN 5-279-00367-0.
  3. ↑ СТ ИСО 2382/7-77 // Вычислительная техника. Терминология. Указ. соч.
  4. Борковский А. Б. Англо-русский словарь по программированию и информатике (с толкованиями). — М.: Русский язык, 1990. — 335 с. — 50 050 (доп,) экз. — ISBN 5-200-01169-3.
  5. Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М.: Машиностроение, 1990. — 560 с. — 70 000 (доп,) экз. — ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания).
  6. Н. А. Криницкий, Г. А. Миронов, Г. Д. Фролов. Программирование / Под ред. М. Р. Шура-Бура. — М.: Государственное издательство физико-математической литературы, 1963.

Виды компиляции

Виды компиляции:

  • Пакетная. Компиляция нескольких исходных модулей в одном задании.
  • Построчная. Машинный код порождается и затем исполняется для каждой завершённой грамматической конструкции языка. Внешне воспринимается как интерпретация, но устройство имеет иное.
  • Условная. На фазе трансляции результат трансляции зависит от условий, прописанных в исходном транслируемом тексте программы директивами компилятора. (Яркий пример — работа препроцессора языка С и производных от него.) Так, в зависимости от значения некой константы некая транслятор заданную часть транслируемого исходного текста программы транслирует или пропускает (игнорирует).

Структура компилятора

Процесс компиляции состоит из следующих этапов:

  1. Трансляция программы — трансляция всех или только изменённых модулей исходной программы.
  2. Компоновка машинно-ориентированной программы.

Структурные реализации компилятора могут быть следующими:

  1. И транслятор, и компоновщик могут целиком входить в состав компилятора как исполняемые программы.
  2. Компилятор сам выполняет лишь трансляцию компилируемой программы, компоновка же программы выполняется вызываемой компилятором отдельной программой-компоновщиком. Практически все современные компиляторы построены по такой схеме.
  3. Пакет программ, включающий в себя трансляторы с разных языков программирования и компоновщики.

По первой схеме строились самые первые компиляторы, — для современных компиляторов такая схема построения нехарактерна.

По второй схеме построены все без исключения компиляторы с языков высокого уровня. Любой такой компилятор сам выполняет только трансляцию и далее вызывает компоновщик как внешнюю подпрограмму, который и компонует машинно-ориентированную программу. Такая схема построения легко позволяет компилятору работать и в режиме транслятора с соответствующего языка программирования. Этот обстоятельство нередко служит поводом считать компилятор разновидностью транслятора, что естественно неверно, — все современные компиляторы такого типа все же выполняют компоновку, пусть и силами вызываемого компилятором внешнего компоновщика, тогда как транслятор сам никогда не выполняет вызов внешнего компоновщика. Но это же обстоятельство позволяет компилятору с одного языка программирования на фазе компоновки включать в программу написанную на одном языке программирования функции-подпрограммы из уже оттранслированных соответствующим транслятором/компилятором, написанные на ином языке программирования. Так в программу на C/C++ можно вставлять функции написанные например на Pascal или Fortran. Аналогично и напротив написанная на C/C++ функции могут быть вставлены в Pascal- или Fortran-программу соответственно. Это было бы невозможно без поддержки многими современными компиляторами генерации кода вызова процедур (функций) в соответствии с соглашениями иных языков программирования. Например современные компиляторы с языка Pascal помимо организации вызова процедур/функций в стандарте самого Pascal поддерживают организацию вызова процедурой/функцией в соответствии с соглашениями языка C/C++. (Например чтобы на уровне машинного кода написанная на Pascal процедура/функция работала с входными параметрами в соответствии с соглашениями языка C/C++, — оператор объявления такой Pascal-процедуры/Pascal-функции должен содержать ключевое слово cdecl.)

Наконец по третьей схеме построены компиляторы, представляющие собой целые системы, включающие в себя трансляторы с разных языков программирования и компоновщики. Также любой такой компилятор может использовать в качестве транслятора любой способный работать в режиме транслятора компилятор с конкретного языка высокого уровня. Естественно такой компилятор может компилировать программу, разные части исходного текста которой написаны на разных языках программирования. Нередко такие компиляторы управляются встроенным интерпретатором того или иного командного языка. Яркий пример таких компиляторов — имеющийся во всех UNIX-системах (в частности в Linux) компилятор make.

Трансляция программы как неотъемлемая составляющая компиляции включает в себя:

  1. Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.
  2. Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в древо разбора.
  3. Семантический анализ. На этой фазе древо разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их объявлениям, типам данных, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным древом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.
  4. Оптимизация. Выполняется удаление излишних конструкций и упрощение кода с сохранением его смысла. Оптимизация может быть на разных уровнях и этапах — например, над промежуточным кодом или над конечным машинным кодом.
  5. Генерация кода. Из промежуточного представления порождается код на целевом машинно-ориентированном языке.

Создание файла исходного кода на языке C и его компиляция из командной строкиCreate a C source file and compile it on the command line

  1. В окне командной строки разработчика введите команду , чтобы изменить текущий рабочий каталог на корень диска C:.In the developer command prompt window, enter to change the current working directory to the root of your C: drive. Затем введите , чтобы создать каталог, и введите , чтобы перейти к этому каталогу.Next, enter to create a directory, and then enter to change to that directory. В этом каталоге будут находиться исходный файл и скомпилированная программа.This directory will hold your source file and the compiled program.

  2. В командной строке разработчика введите команду .Enter at the developer command prompt. В появившемся диалоговом окне блокнота с оповещением выберите Да , чтобы создать файл simple.c в рабочем каталоге.In the Notepad alert dialog that pops up, choose Yes to create a new simple.c file in your working directory.

  3. В окне блокнота введите следующие строки кода:In Notepad, enter the following lines of code:

  4. В строке меню блокнота выберите команду Файл > Сохранить , чтобы сохранить файл simple.c в рабочем каталоге.On the Notepad menu bar, choose File > Save to save simple.c in your working directory.

  5. Вернитесь к окну командной строки разработчика.Switch back to the developer command prompt window. Введите в командной строке, чтобы получить список содержимого каталога c:\simple.Enter at the command prompt to list the contents of the c:\simple directory. Вы увидите исходный файл simple.c в списке каталогов, который выглядит примерно так:You should see the source file simple.c in the directory listing, which looks something like:

    Даты и некоторые другие данные будут отличаться на вашем компьютере.The dates and other details will differ on your computer. Если вы не видите файл исходного кода simple.c, убедитесь в том, что вы открыли созданный каталог c:\simple и сохранили файл исходного кода в нем в Блокноте.If you don’t see your source code file, simple.c, make sure you’ve changed to the c:\simple directory you created, and in Notepad, make sure that you saved your source file in this directory. Кроме того, убедитесь в том, что исходный код был сохранен с расширением имени файла .c, а не .txt.Also make sure that you saved the source code with a .c file name extension, not a .txt extension.

  6. Чтобы скомпилировать программу, в командной строке разработчика введите .To compile your program, enter at the developer command prompt.

    Имя исполняемой программы (simple.exe) отображается в информации, выводимой компилятором.You can see the executable program name, simple.exe, in the lines of output information that the compiler displays:

    Примечание

    Если вы получаете сообщение об ошибке, например «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», ошибке C1034 или LNK1104, командная строка разработчика настроена неправильно.If you get an error such as «‘cl’ is not recognized as an internal or external command, operable program or batch file,» error C1034, or error LNK1104, your developer command prompt is not set up correctly. Чтобы получить сведения о том, как устранить эту проблему, вернитесь к разделу Открыть командную строку разработчика.For information on how to fix this issue, go back to the Open a developer command prompt section.

    Примечание

    Если вы получаете другое сообщение об ошибке или предупреждение компилятора или компоновщика, проверьте исходный код, исправьте ошибки, сохраните его и снова запустите компилятор.If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. Для получения сведений о конкретных ошибках введите номер ошибки в поле поиска вверху этой страницы.For information about specific errors, use the search box at the top of this page to look for the error number.

  7. Чтобы запустить программу, в командной строке введите .To run your program, enter at the command prompt.

    Программа выводит следующий текст и затем закрывается:The program displays this text and then exits:

    Поздравляем! Вы скомпилировали и запустили программу на C с помощью командной строки.Congratulations, you’ve compiled and run a C program by using the command line.

Основная функциональность и терминология

Компиля́ция — сборка программы, включающая:

  1. трансляцию всех модулей программы, написанных на одном или нескольких исходных языках программирования высокого уровня и/или языке ассемблера, в эквивалентные программные модули на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера) или непосредственно на машинном языке или ином двоичнокодовом низкоуровневом командном языке
  2. и последующую сборку исполняемой машинной программы, в том числе вставка в программу кода всех функций, импортируемых из статических библиотек и/или генерация кода запроса к ОС на загрузку динамических библиотек, из которых программой функции будут вызываться.

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

Входная информация для компилятора есть:

  1. на фазе трансляции: исходный код программы, являющийся описанием алгоритма или программы на предметно-ориентированном языке программирования;
  2. на фазе компоновки: сгенерированные на фазе трансляции файлы объектных кодов модулей программы, а также файлы объектных кодов статических библиотек и данные о используемых динамических библиотеках.

На выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код, байт-код).

Компили́ровать — проводить сборку машинной программы, включая:

  1. трансляцию с предметно-ориентированного языка на машинно-ориентированный язык,
  2. компоновка исполняемой машинно-ориентированной программы из сгенерированных на фазе трансляции объектных модулей — модулей, содержащих части кода программы на машинно-ориентированного кода программы.

Довольно часто компиляторы с языков высокого уровня выполняют лишь трансляцию исходного кода, компоновку же поручая внешнему компоновщику, — компоновщику, представляющему самостоятельную программу, вызываемую компилятором как внешняя подпрограмма. Вследствие этого компилятор многие считают разновидность транслятора, что неверно…

Генерация кода

Генерация машинного кода

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

Результат компиляции — исполнимый программный модуль — обладает максимально возможной производительностью, однако привязан к конкретной операционной системе (семейству или подсемейству ОС) и процессору (семейству процессоров) и не будет работать на других.

Для каждой целевой машины (IBM, Apple, Sun, Эльбрус и т. д.) и каждой операционной системы или семейства операционных систем, работающих на целевой машине, требуется написание своего компилятора. Существуют также так называемые кросс-компиляторы, позволяющие на одной машине и в среде одной ОС генерировать код, предназначенный для выполнения на другой целевой машине и/или в среде другой ОС. Кроме того, компиляторы могут оптимизировать код под разные модели из одного семейства процессоров (путём поддержки специфичных для этих моделей особенностей или расширений наборов команд). Например, код, скомпилированный под процессоры семейства Pentium, может учитывать особенности распараллеливания инструкций и использовать их специфичные расширения — MMX, SSE и т. п.

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

Генерация байт-кода

Результатом работы компилятора может быть программа на специально созданном низкоуровневом языке двоично-кодовых команд, выполняемых виртуальной машиной. Такой язык называется псевдокодом или байт-кодом. Как правило, он не есть машинный код какого-либо компьютера и программы на нём могут исполняться на различных архитектурах, где имеется соответствующая виртуальная машина, но в некоторых случаях создаются аппаратные платформы, напрямую выполняющие псевдокод какого-либо языка. Например, псевдокод языка Java называется байт-кодом Java и выполняется в Java Virtual Machine, для его прямого исполнения была создана спецификация процессора picoJava. Для платформы .NET Framework псевдокод называется Common Intermediate Language (CIL), а среда исполнения — Common Language Runtime (CLR).

Некоторые реализации интерпретируемых языков высокого уровня (например, Perl) используют байт-код для оптимизации исполнения: затратные этапы синтаксического анализа и преобразование текста программы в байт-код выполняются один раз при загрузке, затем соответствующий код может многократно использоваться без перекомляции.

Динамическая компиляция

Основная статья: Динамическая компиляция (англ.)

Из-за необходимости интерпретации байт-код выполняется значительно медленнее машинного кода сравнимой функциональности, однако он более переносим (не зависит от операционной системы и модели процессора). Чтобы ускорить выполнение байт-кода, используется динамическая компиляция, когда виртуальная машина транслирует псевдокод в машинный код непосредственно перед его первым исполнением (и при повторных обращениях к коду исполняется уже скомпилированный вариант).

Наиболее популярной разновидностью динамической компиляции является JIT. Другой разновидностью является инкрементальная компиляция.

CIL-код также компилируется в код целевой машины JIT-компилятором, а библиотеки .NET Framework компилируются заранее.

Обозначение понятия

Существуют следующие возможные способы применения слова компиляция:

  1. Аниме. В данной сфере компиляцией обозначают короткометражный или полнометражный фильм, который основан на соответствующем сериале, выполненном в классическом жанре японской анимации
  2. Литература. В этом виде искусства компиляцией называют создание сочинений на основании уже существующих произведений, без дополнительной обработки источников. Также в литературе данным термином обозначают любую работу, выполненную таким образом. Этот вид деятельности существенно отличается от плагиата ввиду того, что в некоторых типах произведений, таких как обзоры, очерки или монографии, авторам необходимо использовать большое количество источников, в том числе и отдельных вставок из них.
  3. Музыка. В данном виде искусства компиляцией называют сборник или же целый альбом, в который входят композиции, выполненные на одну и ту же тему. Это могут быть хит-парады, песни, определенного стиля или эпохи, а также сочинения некоего исполнителя различных лет написания. Отдельно в музыке этим термином именуется методика составления произведения из уже использующихся тем. Иногда компиляцией можно назвать то же, что и попурри.
  4. Программирование. Компиляцией в данной науке принято именовать осуществление трансляции программы, что написана на высокоуровневом языке, в программу, которая создана посредством языка более низкого уровня, но при этом имеющего схожий машинный код. Этот процесс осуществляется при помощи использования специального компилятора.

Вышеперечисленный перечень сфер применения понятия компиляция не является исчерпывающим.

Литература

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

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

Музыка

Основные типичные примеры компиляции в музыке заключаются в следующем:

  1. Сборники самых популярных композиций артиста или же группы. Для привлечения внимания к ним, чаще всего в них включают песню, ранее не выпускавшуюся в других альбомах.
  2. Другие сборники артиста или группы. Это могут быть редкие записи, песни, являющиеся саундтреками к фильмам, и т.д.
  3. Наборы дисков исполнителя. Они могут охватывать либо все творчество исполнителя, либо часть его альбомов.
  4. Тематические сборники нескольких исполнителей. Они могут быть посвящены любви, Новому году, Рождеству и т.д.
  5. Жанровые сборники. Чаще всего их создают исполнители, работающие в жанрах блюз, рок, джаз и др.
  6. Сборники хитов различных артистов. Чаще всего это касается самых популярных песен различных времен или же определенного года.
  7. Рекламные сборники. Эта форма продвижения является одной из наиболее успешных и популярных.
  8. Альбомы продюсеров. В большинстве случаев они помогают в работе большому количеству исполнителей.

Таким образом, компиляция в музыке обрела такое же распространение, как и в литературе.

Программирование

В программировании существуют следующие виды компиляции:

  • пакетная – использование нескольких модулей в одном и том же задании;
  • построчная – анализ и интерпретация каждой завершенной грамматической конструкции языка по очереди;
  • условная – транслируемый текст основывается на тех нормах, что заданы в первоначальной программе.

Трансляция программы – это неотъемлемая часть компиляции. Этот процесс включает в себя такие действия:

  • анализ лексики;
  • анализ синтаксиса;
  • анализ семантики;
  • оптимизация;
  • генерация нового кода.

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

Музыка

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

Наиболее часто встречающимися музыкальными компиляциями можно назвать сборники разных исполнителей, объединённых одним временем их написания — «Дискотека 80-х (90-2000-х)», или «Хит-парады» от различных студий звукозаписи или радиостанций.

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

Классические компиляции

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

  • Сборник лучших хитов определённого исполнителя. Часто выходят в виде коллекционных дисков. Если же певец до сих пор записывает новые вещи, то в подобные сборники могут включаться одно-два новых произведения, чтобы фанаты только ради них приобрели диск целиком.
  • Раритетные сборники одного исполнителя. В них обычно включаются ранее не выходившие версии песен, внестудийные записи, «квартирники» и прочие ценные для фанатов и «музыкальных гурманов» вещи.
  • Полный набор дисков, охватывающий всё творчество определённой группы или певца. Также подобные коллекции могут охватывать обширные по временным рамкам музыкальные произведения определённого жанра – рок-н-ролл, рок, джаз и т.п.
  • Сборники, составленные по какой-либо определённой теме. Например, песни о любви, армейские песни, студенческий фольклор.
  • Хит-парады. Обычно выпускаются в рамках танцевальной поп-музыки, и представляют лучших исполнителей по разным версиям за последний год.  
  • Семплеры. Сборники молодых, но перспективных исполнителей, выпускаемые звукозаписывающими компаниями на деньги продюсерских центров в рекламных целях. Распространяются бесплатно, либо за чисто символическую плату. Выпуск семплеров организуется для «раскрутки» определённого, ещё малоизвестного певца или группы. Семплеры могут предназначаться для широкой публики, или для внутрикорпоративного использования – для продюсеров, редакторов телерадиостанций.

Создание проекта в Code::Blocks

Чтобы создать новый проект, перейдите в меню File (Файл) → New (Новый) → Project (Проект). Появится диалоговое окно, которое выглядит следующим образом:

Рисунок 10 – Code::Blocks. Диалоговое окно создания проекта

Выберите Console application (консольное приложение) и нажмите кнопку Go (перейти/создать).

Если вы видите диалоговое окно мастера консольного приложения, нажмите Next (далее), убедитесь, что выбран C++, и снова нажмите Next.

Теперь вам будет предложено назвать ваш проект. Назовите проект HelloWorld. Вы можете сохранить его где угодно. В Windows мы рекомендуем сохранить его в подкаталоге диска C, например C:\CBProjects.

Рисунок 11 – Code::Blocks. Диалогове окно сохранения проекта

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

Теперь ваш новый проект создан.

В левой части экрана вы должны увидеть окно Management (управление) с выбранной вкладкой Projects (проекты). Внутри этого окна вы увидите папку Workspace с вашим проектом HelloWorld внутри:

Рисунок 12 – Code::Blocks. Workspace

Внутри проекта HelloWorld разверните папку Sources (исходники) и дважды щелкните на «main.cpp». Вы увидите, что для вас уже написана программа hello world!

Замените ее следующим кодом:

Чтобы собрать проект, нажмите Ctrl + F9 или перейдите в меню Build (Сборка) → Build (Сборка). Если всё пойдет хорошо, вы должны увидеть следующее в окне журнала сборки:

Это означает, что компиляция прошла успешно!

Чтобы запустить скомпилированную программу, нажмите Ctrl + F10 или перейдите в меню Build (Сборка) → Run (Запуск). Вы увидите что-то похожее на следующий скриншот:

Рисунок 13 – Запуск программы

Это результат выполнения вашей программы!

Для пользователей Linux

Пользователям Linux до компиляции в Code::Blocks может потребоваться установить дополнительные пакеты. Дополнительные сведения смотрите в инструкциях по установке Code::Blocks в уроке «0.6 – Интегрированная среда разработки (IDE)».

Функция bubble_sort

Для примера рассмотрим функцию сортировки “пузырьком”. Файл lib.py:

У типов нет аннотаций, но это не мешает mypyc ее скомпилировать. Чтобы запустить компиляцию, нужно установить mypyc. Он не распространяется отдельным пакетом, но если у вас установлен mypy, то и mypyc уже присутствует в системе! Запускаем mypyc, следующей командой:

После запуска в проекте будут созданы следующие директории:

  •   — mypy кэш, mypyc неявно запускает mypy для разбора программы и получения AST;

  • — артефакты сборки;

  • — собственно сборка под целевую платформу. Данный файл представляет из себя готовый CPython Extension.

Компиляция состоит из двух фаз:

  1. Компиляция python кода в код С;

  2. Компиляция С в бинарный .so файл, для этого mypyc сам запускает gcc (gcc и python-dev также должен быть установлены).

Файл имеет преимущество перед lib.py при импорте на соответствующей платформе, и исполняться теперь будет именно он.

Ну и давайте сравним производительность модуля до и после компиляции. Для этого создадим файл main.py с кодом запуска сортировки:

Получим примерно следующие результаты:

До

После

real 5.68

user 5.60

sys 0.01

real 2.78

user 2.73

sys 0.01

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

Чтобы ответить на вопрос “как компилируется динамически типизированный код”, придется заглянуть в представление этой функции на С. Но разобрать ее будет достаточно сложно, поэтому давайте попробуем разобраться с примером попроще.  

Консольные проекты

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

Ниже показан скриншот консоли Windows:

Рисунок 1 – Консоль Windows

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

Не беспокойтесь, если вы никогда раньше не пользовались консолью или не знаете, как получить к ней доступ. Мы будем компилировать и запускать наши программы через наши IDE (которые при необходимости будут вызывать консоль).

Заключение

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

Для меня не имеет значения, скомпилировано что-то или интерпретировано, если оно может выполнить задачу эффективно.

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

Сообщите мне, что бы вы предпочли: интерпретацию или компиляцию? Спасибо за уделенное время!

Данная публикация является переводом статьи «Interpretation Versus Compilation» , подготовленная редакцией проекта.

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

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

Adblock
detector