Главная | Новости | Полезная информация | Документация | Школа | Файлы | Ссылки | Форум
 Текущая сборка
RusNuke Current
Web-SVN
SVN репозиторий
Bug Tracker

 Навигация
Главная
Новости
Обзоры
Информация
Документация
Вопросы и ответы
Каталог файлов
Каталог ссылок
Информация о проекте
Рассылка новостей
Контакт с автором
Наполнение сайта
Добавить статью
Добавить файл
Добавить ссылку

Наши услуги
Обменный пункт WM
Реклама на проекте
Платные услуги
Услуги хостинга

Отраслевые публикации
Статьи по отраслям

 Поиск по сайту


Google
Web nukefiles.ru


Компилятор и интерпретатор



Различие между компилятором и интерпретатором - это то, что может вызвать противоречие. Компилятор одного программиста - это интерпретатор другого, и весь предмет становится очень мутным, когда вы бросаете идею компиляции виртуальной машины и Just In Time. Так в чем же все дело? Если вы хотите начать спор между программистами или инженерами-программистами, тогда просто скажите, что «язык X реализован интерпретатором». Если это не вызывает жаркий спор, замените «интерпретатор» на «компилятор» в том же предложении. Ибо, хотя существуют языки, которые обычно принимаются как реализуемые обычно как один или другой, ситуация редко бывает четкой.

Еще в первые дни вычислений различие было гораздо более важным, и дискуссии о компиляторах и интерпретаторах могли бы разразиться на страницах любого журнала, а словесные войны были обычными. Сегодня, с более мощными машинами, проблема не такая важная, но она все равно может стать хорошим аргументом! Это может быть и более глубокая причина языковой войны. Например, споры о C ++ и C # касаются не только того, какой язык лучше, но и о том, как обычно реализуются языки. C ++ обычно компилируется в машинный код, где C # обычно компилируется в промежуточный код, а затем интерпретируется. Помимо споров, он также все еще находится на переднем крае развития, хотя теперь мы склонны больше говорить о «виртуальных машинах» и «Just In Time Compilers», чем простые интерпретаторы и компиляторы, и это заставляет все растворяться в оттенках серого.

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

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

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

Тогда у какого-то умного программиста появилась идея. Почему бы не использовать библиотеку подпрограмм машинного кода, чтобы облегчить жизнь?

Например, если языковая программа высокого уровня содержала строку

А = В * С

то стандартный подход к компилятору займет часть «B раз C» и преобразует ее в эквивалент машинного кода. Который, если бы вам повезло, был бы чем-то вроде: MUL B, C

Тем не менее, многие ранние машины не имели команды умножения, поэтому умножение должно было быть создано с помощью команд добавления и сдвига. Истинным компилятором было бы и должно было бы выполнить умножение B * C на высоком уровне и преобразовать его в полную последовательность команд машинного кода, которые выполняли умножение.



admin1 - 24/12/2017



Комментарии к статье
Вы не можете отправить комментарий анонимно, пожалуйста зарегистрируйтесь.


пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅ

 Авторизация
Логин
Пароль
Регистрация на сайте
Забыли свой пароль?

 Сейчас на сайте
Гостей: 6
Пользователей: 1
Всего: 7

Пользователи:
01: BoopIcomy

 Наш опрос
Какой форум предпочитаете?

Invision Power Board
vBulletin
Phorum
MyBB
PunBB
Simple Machines Forum
phpBB
BBtoNuke



Результаты
Другие опросы

Ответов: 1339
Комментариев: 10

 Рассылка новостей
Подробнее...

 Реклама


Главная | Новости | Полезная информация | Документация | Школа | Файлы | Ссылки | Форум
Copyright © 2002 Internet studio. All Rights Reserved.
Web site engine's code is Copyright © 2002 by PHP-Nuke.
PHP-Nuke is a free test software released under the GNU/GPL.
Страница сгенерирована за 0.0354 с. Выполнено 17 запроса к базе данных за 0.0100 с.

Rambler's Top100 Рейтинг@Mail.ru liveinternet.ru: показано число просмотров и посетителей за 24 часа