Переводит в коды сразу всю программу и создает независимый исполняемый файл exe
1. Отметьте все языки программирования высокого уровня.
-Паскаль
-Си
-Python
2. Отметьте языки программирования, которые используются для создания Web-сайтов в Интернете.
-Javascript
-PHP
3. Как называется программа, которая переводит в машинные
коды тексты программ, написанных на языке высокого уровня?
-компилятор?
5. В чем преимущества трансляторов-интерпретаторов в сравнении с компиляторами?
- программы легче отлаживать
9. Как называется программа для поиска ошибок в других программах?
- отладчик
10. Как называется программа, позволяющая оценить время работы каждой процедуры и функции во время выполнения программы?
- тут самому интересно узнать :)
1. Отметьте все языки программирования высокого уровня.
Паскаль
Си
Python
2. Отметьте языки программирования, которые используются для создания Web-сайтов в Интернете.
Javascript
PHP
Perl
3. Как называется программа, которая переводит в машинные
коды тексты программ, написанных на языке высокого уровня?
компилятор
4. Как называется программа, которая переводит в машинные
коды символьную запись машинных команд?
5. В чем преимущества трансляторов-интерпретаторов в сравнении с компиляторами?
программы легче отлаживать
программы переносимы на любую платформу, для которой есть интерпретатор
6. Назовите тип транслятора, который переводит в машинный код сразу всю программу и строит исполняемый файл.
однопроходный компилятор (??)
7. Как называется промежуточный исполняемый код, который выполняется виртуальной машиной?
байт-код
8. Как называется программа, которая собирает разные части (модули) создаваемой программы и функции из стандартных библиотек в единый исполняемый файл?
линковщик (linker)
9. Как называется программа для поиска ошибок в других программах?
отладчик
10. Как называется программа, позволяющая оценить время работы каждой процедуры и функции во время выполнения программы?
профайлер (profiler)
11. Каким термином называется набор стандартных структур данных и функций операционной системы или сервиса, которые программисты могут использовать в своих программах?
интерфейс программирования приложений
12. Отметьте все программы, которые обычно входят в состав интегрированной среды разработки программ (IDE).
текстовый редактор
компоновщик
отладчик
профилировщик (??)
13. Как называются среды программирования, нацеленные на высокую скорость и низкую стоимость разработки программ?
среды быстрой разработки приложений
14. Отметьте языки программирования, программа на которых может быть переведена в псевдокод, выполняемый в виртуальной машине.
Londinium Lysenko Sergey Просветленный (42871) ну тогда просто из вежливости стоило бы выложить правильные ответы, а то так дураком и помру
Транслятор — это программа, которая переводит в машинные коды тексты программ, написанных на языке высокого уровня.
Существуют два типа трансляторов: интерпретаторы и компиляторы.
Интерпретатор анализирует текст программы по частям. Разобрав очередной фрагмент, он немедленно выполняет описанные в нем действия и переходит к обработке следующего фрагмента.
Достоинства интерпретаторов:
• программы переносимы (программа будет работать в любой системе, где установлена программа-интерпретатор);
• удобно отлаживать программу.
Есть и существенные недостатки.
• программу невозможно выполнить, если не установлен интерпретатор;
• программы выполняются медленно (в цикле из 100 шагов каждая строчка 100 раз «разбирается» интерпретатором);
• в тех частях программы, которые не выполнялись во время отладки, могут оставаться синтаксические ошибки.
Второй тип трансляторов — компиляторы. Они, в отличие от интерпретаторов, сразу переводят всю программу в машинный код и строят исполняемый файл, готовый к запуску.
Достоинства компиляторов:
• чтобы запустить программу, не нужно устанавливать транслятор;
• поскольку программа уже переведена в машинные коды, она выполняется значительно быстрее, чем при использовании интерпретатора.
Недостатки тоже есть:
• при любом изменении нужно ждать окончания компиляции (перевода в коды); это несколько затрудняет отладку;
• готовая программа будет выполняться только в той операционной системе, для которой она была создана 1 .
Чтобы как-то совместить достоинства интерпретаторов и компиляторов, была предложена идея компиляции программы в некоторый промежуточный исполняемый код (псевдокод, P-код), а не сразу в команды конкретного процессора. Для выполнения такого псевдокода нужна специальная среда — виртуальная машина, которую в принципе можно разработать для любого процессора и любой операционной системы.
Программа сначала обрабатывается компилятором, который строит псевдокод, а потом этот псевдокод выполняется интерпретатором.
Таким образом,
• при компиляции в псевдокод проверяются все синтаксические ошибки, поэтому при выполнении такую проверку делать не нужно; это значительно ускоряет работу программ в сравнении с интерпретацией;
• обеспечивается переносимость программ — можно выполнять программу (псевдокод) на любом компьютере, где есть виртуальная машина.
Байт-код — это разновидность псевдокода, в котором команда занимает 1 байт, а далее следуют её аргументы (или их адреса). Современные версии интерпретируемых языков Perl, РНР, Python используют компиляцию в байт-код для ускорения выполнения программы.
Готовые программы на Java распространяются в виде байт-кода, поэтому для их выполнения необходимо установить виртуальную Java-машину. При этом для ускорения работы часто используется JIT-компиляция (англ. JIT — just-in-time — в это самое время), при которой байт-код «на лету» преобразуется в команды конкретного процессора. Тогда при повторном выполнении команды трансляция уже не нужна.
Следующая страница Состав системы программирования
Cкачать материалы урока
Все языки программирования делятся на два типа — интерпретируемые и компилируемые.
Интерпретаторы
Программируя на интерпретируемом языке, мы пишем программу не для выполнения в процессоре, а для выполнения программой-интерпретатором. Ее также называют виртуальной машиной.
Как правило, программа преобразуется в некоторый промежуточный код, то есть набор инструкций, понятный виртуальной машине.
При интерпретации выполнение кода происходит последовательно строка за строкой (от инструкции до инструкции). Операционная система взаимодействует с интерпретатором, а не исходным кодом.
Скомпилированные программы работают быстрее, но при этом очень много времени тратится на компиляция исходного кода.
Программы же, рассчитанные на интерпретаторы, могут выполняться в любой системе, где таковой интерпретатор присутствует. Типичный пример — код JavaScript. Интерпретатором его выступает любой современный браузер. Вы можете однократно написать код на JavaScript, включив его в html-файл, и он будет одинаково выполняться в любой среде, где есть браузер. Не важно, будет ли это Safari в Mac OS, или же Internet Explorer в Windows.
Компиляторы
Компилятор — это программа, превращающая исходный текст, написанный на языке программирования, в машинные инструкции.
По мере преобразования текста программы в машинный код, компилятор может обнаруживать ошибки (синтаксиса языка, например). Поэтому все проблемы забытых точек с запятыми, забытых скобок, ошибок в названиях функций и переменных в данном случае решаются на этапе компиляции.
При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой. То есть образуется, например,.EXE файл.
Примеры компилируемых языков: C, C++, Pascal, Delphi.
Препроцессинг
Эту операцию осуществляет текстовый препроцессор.
Исходный текст частично обрабатывается — производятся:
- Замена комментариев пустыми строками
- Подключение модулей и т. д. и т. п.
Компиляция
Результатом компиляции является объектный код.
Объектный код — это программа на языке машинных кодов с частичным сохранением символьной информации, необходимой в процессе сборки.
Компоновка
Компоновка также может носить следующие названия: связывание, сборка или линковка.
Это последний этап процесса получения исполняемого файла, состоящий из связывания воедино всех объектных файлов проекта.
EXE файл.
Заходим в Сервис -> Настройки -> Опции компиляции. Поверяем, стоит ли галочка напротив 2 пункта. Если стоит, то убираем ее.
Теперь откройте свою программу и запустите ее.
Откройте директорию, в которой у вас лежит исходный код программы.
Кликаем по приложению. Как вы видите, после ввода данных, окошко сразу закрывается. Для того чтобы окно не закрывалось сразу, следует дописать две строчки кода, а именно: uses crt (перед разделом описания переменных) и readkey (в конце кода, перед оператором end).
Подключаем внешнюю библиотеку crt и используем встроенную в нее функцию readkey.
Теперь окно закроется по нажатию любой клавиши.
Среда разработки включает в себя:
- текстовый редактор;
- компилятор;
- средства автоматизации сборки;
- отладчик.
На сегодня все! Задавайте любые вопросы в комментариях к этой статье. Не забывайте кликать по кнопочкам и делится ссылками на наш сайт со своими друзьями. А для того, чтобы не пропустить выход очередной статьи, рекомендую вам подписаться на рассылку новостей от нашего сайта. Одна из них находится в самом верху справа, другая — в футере сайта.
Интерпретаторы и компиляторы отвечают за преобразование языка программирования или сценариев (язык высокого уровня) в машинный код. Но если обе программы делают одно и то же, чем они различаются? Давайте разберемся.
Что такое компилятор?
Компилятор — это компьютерная программа, которая переводит компьютерный код с одного языка программирования на другой. Компилятор берет программу целиком и преобразует ее в исполняемый компьютерный код. Для этого требуется целая программа, так как компьютер понимает только то, что написано двоичным кодом. Задача компилятора — преобразовать исполняемую программу в машинный код, который и распознается компьютером. Примерами скомпилированных языков программирования являются C и C++.
Компилятор в основном используется для программ, которые переводят исходный код с языка программирования высокого уровня на язык программирования более низкого уровня.
Компилятор способен выполнять многие или даже все операции: предварительную обработку данных, парсинг, семантический анализ, преобразование входных программ в промежуточное представление, оптимизацию и генерацию кода.
Что такое интерпретатор?
Интерпретатор — это компьютерная программа, которая преобразует каждый программный оператор высокого уровня в машинный код. Сюда входят исходный код, предварительно скомпилированный код и сценарии.
Интерпретатор представляет собой машинную программу, которая непосредственно выполняет набор инструкций без их компиляции. Примерами интерпретируемых языков являются Perl, Python и Matlab.
- И компилятор, и интерпретатор выполняют одну и ту же работу — преобразовывают язык программирования высокого уровня в машинный код. Однако компилятор преобразовывает исходный материал в машинный код перед запуском программы. Интерпретатор выполняет эту функцию при ее запуске.
Интерпретатор создает программу. Он не связывает файлы и не генерирует машинный код. Происходит построчное выполнение исходных операторов во время исполнения программы.
Транслятор translator –– программа или устройство, переводящее текст с одного языка (исходный язык source language ) на другой язык (целевой язык target language ). Процесс работы транслятора называют трансляцией translation .
Исходный код source code –– фрагмент текста, написанный на исходном языке для некоторого транслятора, “программа” как текст.
Единица трансляции translation unit –– файл исходного кода, обрабатываемый транслятором как единое целое. В случае языка C единица трансляции (файл .c) является модулем.
Интерпретатор interpreter –– транслятор, целевым языком которого является множество действий. Иными словами, интерпретатор не создаёт файл программы на некотором целевом языке, а сразу исполняет программу, поданную ему на вход. Процесс работы интерпретатора называют интерпретацией interpreting .
Компилятор compiler –– транслятор, создающий файл на некотором целевом языке. В ряде случаев этот файл уже сразу готов к запуску в некоторой среде исполнения (операционной системе или на виртуальной машине). В других (например, в случае C) требует связывания с другими фрагментами (см. ниже про компоновку). Процесс работы компилятора называют компиляцией compilation .
Если для компилятора помимо собственно целевого языка имеет значение способ оформления результирующих файлов и иные особенности операционной среды (обычно задаваемые выбором целевой ОС), то говорят о целевой платформе. Если целевая платформа не совпадает (не является надмножеством) платформы, на которой запущен сам компилятор, то процесс такой компиляции называется кросс-компиляцией (например, на GNU/Linux компилируется код, который будет затем запускаться на Windows).
Раздельная компиляция separate compilation — компиляция единиц трансляции по отдельности независимо друг от друга (в произвольном порядке, в том числе параллельно). Какая-то часть из них может быть откомпилирована заранее. В случае C и C++ это означает независимую компиляцию разных .c и .cpp файлов, включенных в проект. Когда все единицы трансляции скомпилированы, можно выполнить их компоновку в конечный продукт — например, исполняемый файл.
Ассемблер assembler — транслятор, исходным языком которого является стандартизованная текстовая форма машинного кода (удобная для человека — ассемблерный код assembly ), а целевым языком — машинный код. Ассемблер можно считать видом компилятора, но традиционно термин “компилятор” применяется только по отношению к трансляторам с исходных языков высокого уровня.
Дизассемблер disassembler — транслятор, исходным языком которого является машинный код, а целевым языком — ассемблерный код. Дизассемблеры, как правило, принимают на вход исполняемые файлы и библиотеки в машинном коде.
Объектный файл object –– результат работы компилятора в случае использования отдельной программы-компоновщика. Как правило, содержит специальным образом оформленный машинный код (объектный код object code ).
“Object code” тоже можно перевести как “целевой код”, и он действительно является целевым для компилятора. Однако такой перевод может вызвать путаницу с точки зрения разделения “целевого языка” вообще или фрагмента программы на этом языке и промежуточного файла, принимаемого компоновщиком (см. ниже) — “объекта”.
Машинный код machine code –– язык, интерпретатором которого является некоторый процессор (“машина”).
Компоновщик linker –– программа, выполняющая построение готового к запуску исполняемого файла, либо стандартным образом оформленной библиотеки в машинном коде из набора объектных файлов, библиотек в машинном коде, а также любых дополнительных данных. Процесс работы компоновщика называют компоновкой linking .
Исполняемый файл executable –– оформленная в виде файла стандартного формата (для определённой ОС) программа в машинном коде, которую можно немедленно запустить на исполнение. В ОС Windows исполняемые файлы традиционно помечаются разрешением exe.
Модуль module — многозначное слово. В зависимости от контекста применения возможны следующие толкования:
Специальным образом оформленная единица исходного кода, задающая свою область видимости. Во многих языках (включая C, с той поправкой, что интерфейс модуля предоставляется в виде отдельного заголовочного файла) совпадает с файлом исходного кода и единицей трансляции. Такой модуль может иметь имя, доступное из программы (например, юнит в Pascal, в C — просто имя заголовочного файла, используемое в директиве include).
Сборка building — полный многоэтапный процесс порождения исполняемых файлов (модулей) из файлов исходного кода, библиотек и файлов ресурсов. Необходимый для сборки конкретный набор программ называют (это распространённый жаргонизм) тулчейном toolchain . Обычно это компилятор и компоновщик. Нередко в состав тулчейна добавляют отладчик. Естественно, отладчик не задействуется в процессе сборки непосредственно, однако, если мы хотим эффективно применять некоторый отладчик к результирующему машинному коду, то поддержка этого отладчика должна быть заложена уже на этапе сборки. Конкретные реализации стандартных библиотек также могут включаться в тулчейн (просто потому, что любая реализация языка обязана поддерживать его стандартную библиотеку).
Объявление declaration — языковая конструкция, заявляющая о наличии среди используемых в сборке единиц трансляции и библиотек некоторой сущности (глобальной переменной, функции, типа) и предоставляющая компилятору необходимый минимум сведений об этой сущности. В частности, объявление функции состоит из заголовка функции, что позволяет компилятору оформить вызов функции в объектном коде. А уже на этапе компоновки будет достаточно проставить реальный адрес вызываемой функции.
Определение definition — полное описание некоторой сущности (переменной, функции, типа) на языке программирования.
Правило одного определения one definition rule, ODR в C++:
- Любая глобальная сущность может быть определена лишь однажды.
- Любая локальная сущность может быть определена лишь однажды в своей области видимости.
Программа, нарушающая первую часть ODR может быть скомпилирована без ошибок, но привести к ошибкам компоновки. Программа, нарушающая вторую часть ODR приведёт к ошибкам компиляции.
В некоторых случаях допускаются послабления правила одного определения, но при условии, что повторяющиеся определения полностью идентичны друг другу. См. подробнее здесь.
Библиотека library –– самостоятельный фрагмент кода, предназначенный для использования в составе другого ПО. Библиотека может существовать как в исходном коде, подключаемом во время компиляции и транслируемом вместе с кодом ПО, использующего библиотеку, так и в специально оформленном машинном коде (“модуле”), подключаемом либо во время компоновки (статические библиотеки static libraries ), либо во время работы ПО (динамически связываемые библиотеки dynamically linked libraries, DLL , shared objects, SO ).
Точка входа entry point –– адрес в модуле (исполняемом файле или библиотеке), с которого можно начать выполнение кода. Адрес может иметь символическое имя, записанное в специальной таблице внутри модуля. Часто это имя просто совпадает с именем соответствующей функции в исходном коде. В C и C++ определена стандартная точка входа для исполняемых файлов — функция main.
Читайте также: