Разница между компилятором и интерпретатором
Какая разница между компилятором и интерпретатором? Может ли язык программирования иметь и компилятор и интерпретатор?
Отслеживать
11.4k 8 8 золотых знаков 39 39 серебряных знаков 69 69 бронзовых знаков
задан 23 дек 2016 в 8:09
Salut Amigo Salut Amigo
530 1 1 золотой знак 3 3 серебряных знака 17 17 бронзовых знаков
23 дек 2016 в 8:14
Бейсик имел традиционно много разных компиляторов и интерпретаторов.
23 дек 2016 в 8:24
– user181100
23 дек 2016 в 8:40
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Чтобы опеределить разницу, давайте узнаем, что это такое:
Компиля́тор — программа или техническое средство, выполняющее компиляцию.
Компиля́ция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа на предметно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код). Википедия
Компиляция и интерпретация за 10 минут
Интерпрета́тор — программа (разновидность транслятора), выполняющая интерпретацию.
Интерпрета́ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения). Википедия
Таким образом, можно заключить, что компилятор преобразует исходный код к близкому к машинному коду. Интерпретатор же, позволяет выполнять некоторое представление программы, налету преобразуя в машинный код.
Если взять язык java , то он имеет, как компилятор, так и интерпретатор. Компилятор преобразует исходный код в байткод. А байткод в начальной стадии выполнения программы обрабатывается интерпретатором.
Компилятор, это отдельная программа javac , интерпретатор же встроен в jvm . Помимо обычного компилятора, в jvm присутствует just-in-time компиляция. т.к. интерпретация довольно медленна, то горячие места в программе компилируются в машинный код jit компилятором, тем самым ускоряя выполнение.
Источник: ru.stackoverflow.com
Компиляция программы
трансляция программы, составленной на исходном языке программирования высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду.
- Telegram
- Вконтакте
- Одноклассники
Еще термины по предмету «Программирование»
Каталог (директория, папка)
оглавление файлов (доступен пользователю через командный язык операционной системы).
Что такое компиляция, линковка? Что такое run time?
Подобъекты
называются частями агрегата, и агрегат отвечает за них.
Системное ПО
это набор программ, обеспечивающих работу компьютера, в том числе управление ресурсами ЭВМ, взаимосвязь ЭВМ и пользователя, создание копий используемой информации, проверка работоспособности устройств компьютера, выдача справочной информации и другие функции.
Похожие
- Компиляция
- Компиляция программы; program compilation)
- Программа
- Задание по компиляции финансовой информации
- Социальные программы
- Офис программы
- Программа проектов
- Программа атласа
- Программа карты
- Прикладная программа
- Сервисная программа
- Учебная программа
- Программа аудита
- Программа наблюдения
- Программа испытаний
- Государственная программа
- Музейнопедагогическая программа
- Программа выпуска
- Программа реализации
- Облигационная программа
Научные статьи на тему «Компиляция программы»
1. Понятие компиляции в информатике
Определение 1 Компиляция в информатике — это формирование программы, которое включает транслирование.
Введение Под компиляцией понимаются процессы, которые облегчают диалог специалиста по написанию программ.
Формируя на этапе завершения свою программу, каждый программист вынужден использовать программу компиляции.
Если сформулировать более коротко, то процесс компиляции — это трансляция программы из проблемно-ориентированного.
всей программы.
Источник:
Справочник
Категория:
Информатика
Статья от экспертов
2. Компиляция программ для современных архитектур
Настоящая статья посвящена обзору некоторых работ по оптимизации программ для современных вычислительных архитектур, проводимых в отделе компиляторных технологий Института системного программирования РАН. Работы включают в себя выявление параллелизма на уровне команд для архитектуры Intel Itanium, исследование и разработку энергосберегающих оптимизаций для архитектуры ARM, а также исследования по динамическим оптимизациям для языков общего назначения, выполняемым на машине пользователя. Больш.
Авторы:
Белеванцев А.
Журихин Д.
Мельник Д.
Источник:
Труды Института системного программирования РАН
Научный журнал
3. Компиляция и интерпретация
Определение 1 Компиляция и интерпретация — это переформирование программы, которая выполнена на.
программ.
Компиляция программы В любом языке программирования есть некоторые рабочие процедуры формирования кода.
Первые программы компиляции писались прямо в машинных кодах или на языке ассемблера.
Интерпретация программы Альтернативным компиляции, считается метод интерпретации.
Источник:
Справочник
Категория:
Информатика
Статья от экспертов
4. Принципы компиляции программ на языке Scheme с использованием метода CPS
Рассмотрен один из наиболее перспективных подходов к реализации компиляторов для функциональных языков с «энергичной» семантикой, таких как Scheme и ML. В качестве примера использован компилятор Gambit-C для языка Scheme. Приведено краткое описание языка Scheme. Рассмотрены принципы компиляции программ на языке Scheme. Исследована проблема свободных переменных.
Проведен анализ возможных решений проблемы остаточных вычислений.
Источник: spravochnick.ru
Компилирование программы что это такое
- D:AVR-projects
- D:AVR-projects utorial
- D:AVR-projects utorialoutput
Теперь откроем блокнот и напишем текст батника:
D:avr avrasm avrasm.exe -i code.asm -e outputlistfile.lst -o outputhexfile.hex
pause=null
В первой строке мы вызываем компилятор tavrasm.
Мы ему говорим:
-i — тип выходного файла – «HEX»
code.asm – имя файла с исходным кодом. Вы можете вписать свое
-e – после этого ключа пишется путь к лист-файлу (он создается при компиляции)
outputlistfile.lst – относительный путь к лист-файлу
-o – после этого ключа пишем путь к выходному HEX-файлу
butputhexfile.hex – собственно, путь к HEX-файлу
Во второй строке мы просим батник не закрывать окно по завершении выполнения компиляции – чтоб спокойно прочитать, что нам написал компилятор. Он ведь может и ругаться 🙂
Теперь в меню «Файл» блокнота выбираем «Сохранить как».
Имя файла (File name): compile.bat Тип файла (Save as type): All Files
Если оставить тип файла .txt, то блокнот сохранит файл под именем compile.bat.txt.
Сохраняем файл, ес-но, в папку tutorial.
Но не спешите вылазить из нета. Надо еще кой-чего скачать. А именно – фирменный компилятор от Atmel – «Avrasm». Он нам очень нужен из-за того, что в нем есть заголовочные файлы def.inc. А также – хелп.
Правда – на английском. Кстати, русский хелп к ассемблеру для AVR можно посмотреть здесь
Качаем вот этот архивчик (компилятор Avrasm): https://atmel.com/dyn/resources/prod_documents/ASM.ZIP
Затем — создаем папку D:avravrasm и распаковываем в нее скаченный архив. Распакуется куча всего, и среди этой кучи – папочка Appnotes. Вот как раз она то нам и нужна. Соответственно, путь к ней будет такой:
D:avravrasmappnotes
Убедитесь, что в папочке есть файл 2313def.inc !
Все! Теперь можно приступать к написанию программы.
Создаем в блокноте новый файл и сохраняем его как code.asm в папку D:AVR-projects utorial. Это будет файл исходного кода.
Теперь можно написать первую строчку. Она выглядит так:
То есть, мы подключаем заголовочный файл.
Выбор заголовочного файла зависит от того, для какой микросхемы пишется софт. В данном случае, мы пишем для AT90s2313. Соответственно, и файл – 2313.
Заголовочные файлы xxxdef.inc содержатся в установочной папке любого атмеловского компилятора для AVR-ок. Например — AVR Studio. Он качается на сайте Atmel. Качаем, ставим, ищем папочку, куда установилась программа.
Скорее всего, это здесь: C:Program FilesAtmel.
Ищем в ней папочку Appnotes.
Путь к ней, скорее всего, такой: C:Program FilesAtmelAVR ToolsAvrAssemblerAppnotes.
Там будут необходимые файлы. Это на тот случай, если нужный файл не найдется в инсталляции Avrasm. Например, заголовочные файлы для новых семейств mega и tiny в Avrasm не входят 🙁
Также (ВНИМАНИЕ: ХАЛЯВА), все (почти все) заголовочные файлы для контроллеров AVR Atmel, можно скачать прямо у нас на сайте. Они находятся в архивчике appnotes.zip.
Ну вот, с заголовочными файлами разобрались.
Ниже можно писать текст программы. Напишем что-нибудь вроде:
ldi R16,5 ;загрузка констант в регистры
ldi R17,7
and R16,R17 ;логическое «И» двух регистров
nop
Заметим, что синтаксис ассемблера не требует каких либо знаков после команды. Но каждая команда обязательно должна писаться с новой строки. Знак «;» (точка с запятой), которым во многих языках обозначается конец команды, в Асме используется для комментирования – то есть все символы правее этого знака и до перехода на новую строку, компилятор игнорирует.
Сохраняем файл. Окно можно не закрывать. Лезем в папку tutorial и запускаем compile.bat. Файл компилируется.
Не забывайте сохранять файл перед каждой компиляцией!
По окончании компиляции, внимательно читаем текст на черном окошке. Если там содержатся слова типа «Error» – значит компилятор нашел ошибку. Обычно, он пишет, что именно ему не нравится и в какой строке. Смотрим номер строки, жмем в Блокноте Ctrl+G, вводим номер строки – и курсор автоматически встает в ее начало.
Исправляем ошибку.
Если ошибок нет – проверяем, создался ли в папочке output файл hexfile.hex.
Создался? Вот и здорово! Значит, можно приступать ко второй части Марлезонского балета – прошивке.
ВНИМАНИЕ.
Если компилятор пишет что ему не нравится строчка файла def.inc, с примерно таким содержимым:
.equ OR = 3
Просто октройте def.inc, найдите эту строчку и закомментируйте ее. То есть, поставьте в самом ее начале символ «;».
Источник: www.radiokot.ru
Что это — компилятор — описание
- Определение и история появления
- Принцип работы
- Просто, но сложно
- Трудности в создании
- Класс и компилятор
- Разработка компиляторов как работа
Если вы только начинаете изучать программирование или же просто интересовались данным вопросом, наверняка вам на глаза попадалось таинственное слово «компилятор». Это с виду страшное понятие способно отпугнуть людей. В данной статье постараемся разобраться, так ли все ужасно. Что такое компилятор?
Определение и история появления
Если говорить простыми словами, то компилятором является программа, преобразующая текст программы, написанной пользователем, в некоторую форму, которая пригодна для выполнения на вычислительной машине.
Появились такие программы вместе с зарождением первых языков программирования. Произошло это в конце 50-х годов. Получается, что история, которая связана с компиляторами и языками программирования насчитывает уже более шести десятков лет. Несмотря на такой серьезный срок, данное направление компьютерной науки ни в коем случае нельзя назвать устаревшим или устоявшимся.
Наоборот, с ходом времени, с появлением новых отраслей и задач, для решения которых применяются компьютеры, возникает потребность в разработке новых, более удобных языков программирования. Соответственно, для этих языков нужны компиляторы. Windows, Linux, MacOS – для каждой платформы существуют свои разработки.
Параллельное выполнение работы — обычная, привычная и естественная практика ручного труда. Но когда.
Принцип работы
Исходный текст, написанный разработчиком на языке высокого уровня, преобразуется в программу на специальном машинном языке. Полученный код называется исполняемой программой. Ее можно устанавливать и запускать на любом компьютере, не делая больше никаких преобразований.
Просто, но сложно
По традиции, компиляторы в информатике являются одной из базовых вещей вместе с операционными системами, а также базами данных. Что такое компилятор? Это в каком-то смысле базис компьютерной науки.
С другой точки зрения, сама тема создания таких программ подразумевает большое число теоретических и технологических аспектов, которые связаны с программированием. Многие разработчики полагают, что эта тема вообще является самой привлекательной во всей информатике.
Когда программист разрабатывает какую-либо программу, которая решает некую задачу, он пишет ее на определенном языке. В процессе разработки он оперирует терминами, близкими именно к той области, с которой приходится иметь дело. Компьютер совсем не понимает того, что ему говорит человек.
Он способен разобраться лишь в достаточно простых вещах, к которым можно отнести числа и переменные, ячейки и регистры, постоянную и временную память. Что такое компилятор? Это программа, задача которой – перевод понятий, близких к предметной области разработчика в понятия, которыми способен манипулировать компьютер.
Многие программисты скажут вас в один голос: учить STL – стандартную библиотеку, которая содержит.
Именно такой задачей занимается компилятор Java или любого другого языка программирования. При каждом появлении нового языка возникает нужда в переводе кода, написанного на нем, в тот вид, который сможет понять компьютер. Иначе он ее не выполнит. Ведь всегда присутствует семантический зазор между понятиями человека и компьютера. Именно для его преодоления и предназначены компиляторы языка программирования.
Трудности в создании
Создатели таких программ сталкиваются с самыми различными проблемами. Это и научные проблемы, которые связаны с правильным отображением понятий прикладной области. Это и инженерные, и технологические проблемы, связанные с реализацией этого самого отображения.
Задача создания компилятора состоит из множества разнородных подзадач. Это сложная, но очень увлекательная отрасль, которой посвящают жизнь многие программисты. И не жалеют.
Класс и компилятор
Наверное, многие слышали о таких языках, как C и C++. Ведь они являются одними из самых популярных и распространенных. Это очень серьезные языки программирования, содержащие мощные понятия, которые удобны для того, чтобы отображать понятия прикладных областей, в сфере которых трудятся разработчики. К примеру, есть там понятие классов, функций. Они являются основополагающими для многих языков, но для C++ они в особенности характерны.
«Джава» — это язык программирования широкого назначения. С его помощью разрабатываются.
Программисту гораздо удобнее создавать модели с помощью таких понятий. Компилятор C для Windows или другой операционной системы помогает отобразить такие высокоуровневые вещи в форме, которую поймет компьютер. Только тогда он сможет ими манипулировать.
Любая вычислительная машина, какой бы мощной и сложной она ни являлась, оперирует очень простыми понятиями. Но понятие класса является трудным, так как с его помощью очень удобно отображать многие вещи из реальной жизни. Компилятор сложные понятия превращает в примитивные.
Разработка компиляторов как работа
В последние годы прослеживается тенденция, когда любая крупная компания, связанная с информационными технологиями, выпускает свой собственный язык программирования, который затем продвигается в широкие массы разработчиков.
Конечно, для каждого языка необходим компилятор. И фирмы, как правило, создают их вместе с языками. Но существует также и большое число самостоятельных программистов и фирм, которые по тем или иным причинам хотят иметь собственные компиляторы для языков либо они разрабатывают новые языки и, соответственно, компиляторы к ним. Можно с уверенностью утверждать, что специалист, посвятивший себя этой сфере, точно не останется без работы.
Таким образом, теперь вам должно быть понятно, что такое компилятор. Это программа-переводчик между разработчиком и компьютером, без которой в сфере компьютерной науки никуда.
Источник: autogear.ru
Этапы компиляции и компоновки программ на языке C++
Вы когда-нибудь задумывались над тем, как именно создаются исполняемые файлы с расширением .exe из исходных кодов? Какова роль компилятора и компоновщика? В этой очень короткой заметке, я опишу этот процесс очень просто, не вдаваясь в подробности его реализации.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке. Для того чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов. Рисунок ниже иллюстрирует эти этапы для языка С++.
Этапы создания исполняемой программы на C++
Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов — текстовых файлов, в которых содержатся описания используемых в программе элементов).
Получившийся полный текст программы поступает на вход компилятора, который выделяет лексемы, а затем на основе грамматики языка распознает выражения и операторы, построенные из этих лексем. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль.
Компоновщик, или редактор связей, формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие функции библиотек, обращение к которым содержится в любой программе (например, для осуществления вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки. Исполняемый модуль имеет расширение .ехе и запускается на выполнение обычным образом.
Таким образом создаются исполняемые программы на C++. Конечно это очень общее описание этого сложного процесса, но четко передает смысл всех этапов работы компилятора и компоновщика.
По материалам книги «Программирование на языке высокого уровня CC++», Павловская Т.А.
Источник: itandlife.ru