Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 16:28   #1
Kasper1
Форумчанин
 
Аватар для Kasper1
 
Регистрация: 13.12.2010
Сообщений: 220
По умолчанию Чем отличается интерпретатор от компилятора?

Задача компилятора чтоб преобразовать исходный код программы в двоичный, тоест ьв файл езке? А задача интепретатора лишь построчно выполнять код программы, но не не преобразовывать этот код в выполняемый файл езке?
Kasper1 вне форума Ответить с цитированием
Старый 20.12.2010, 16:30   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну в общем то да.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2010, 16:56   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Еще интерпретаторы умеют делать компиляцию на лету (JIT компиляция).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 20.12.2010, 17:19   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2mutabor
а я всегда думал, что jit компиляция это компиляция байт кода в нативный. хотя если считать виртуальную машину интерпретатором байт кода.... тогда любой код можно считать интерпретируемый процессором
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 20.12.2010, 23:15   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2mutabor
а я всегда думал, что jit компиляция это компиляция байт кода в нативный. хотя если считать виртуальную машину интерпретатором байт кода.... тогда любой код можно считать интерпретируемый процессором
Под виртуальной машиной я так понимаю имелась ввиду Java? Но ведь не только она умеет это, наверняка есть интерпретаторы, к-рые непосредственно скрипты компилируют, а не байт-код, может PHP? Да и в той же Яве, думаю не проблема было бы объединить две утилиты в одну, и компилить сразу исходники, все равно байт код уже не используется по назначению, только разве что для обфускации. Кстати любая VM и есть интерпретатор по сути, код не машинный, значит интерпретатор. Для процессора что байт код, что исходный, один хрен, он ни тот, ни другой не понимает.

Цитата:
Задача компилятора чтоб преобразовать исходный код программы в двоичный, тоест ьв файл езке?
Слово файл тут лишнее. Машинный код можно и в оперативную память складировать, что и делает JIT компилятор.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 20.12.2010, 23:38   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,573
По умолчанию

Вообще, если копнуть глубже, то сам процессор есть аппаратный интерпретатор.
Arigato вне форума Ответить с цитированием
Старый 21.12.2010, 17:01   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Arigato, +1.
Цитата:
Еще интерпретаторы умеют делать компиляцию на лету (JIT компиляция).
это метод оптимизации, ибо не надо по тысячу раз обрабатывать те же места.
Цитата:
хотя если считать виртуальную машину интерпретатором байт кода
интерпритатор это обычно часть вирт машины.
Цитата:
что jit компиляция это компиляция байт кода в нативный
не совсем, это компиляция не родного кода в родной процу.(зачем это придумано см выше)
Цитата:
наверняка есть интерпретаторы, к-рые непосредственно скрипты компилируют, а не байт-код, может PHP?
вроде есть там такое, но не пользовался.
Цитата:
Кстати любая VM и есть интерпретатор по сути, код не машинный, значит интерпретатор.
VM - это эмулятор всей архитектуры(память, проц, и тп)
один из её компонентов и есть интерпритатор.
так вот, VM, может эмулировать как вымышленную архитектуру(dotNET(не помню как машина называется верно), JVM)
так и существующую(эмуляторы приставок, и тп)

НО, никто не мешает собрать устройство которое реализует эту архитектуру в себе!(надо про ПЛИС мне почитать, а то не знаю что это)
Цитата:
то сам процессор есть аппаратный интерпретатор.
да, потому что процессор переводит байты в действия.
а цель интерпритатора и есть перевести байты(хоть в виде текста хоть опкоды) в действие
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 22.12.2010 в 00:30.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.12.2010, 07:18   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
делать компиляцию на лету
Раньше это называлась - псевдокомпиляция )
FoxPro был одним из лучших "налетутчиков"
Цитата:
тоест ьв файл езке?
Компилятор формирует последовалельность управляющих кодов. Не важно exe это или dll. Главное что в результате появляется массив опкодов (как правило процессора)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2010, 08:35   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,573
По умолчанию

На сколько я понимаю, все современные интерпретаторы умеют компилировать в байт-код и обладают встроенной виртуальной машиной. Времена, когда интерпретировался код на ЯВУ ушли в прошлое (к примеру, Бейсики раньше так делали, сейчас не знаю, как они делают).
Arigato вне форума Ответить с цитированием
Старый 22.12.2010, 12:26   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
На сколько я понимаю, все современные интерпретаторы умеют компилировать в байт-код и обладают встроенной виртуальной машиной.
сейчас обычно делят
1)компилятор(компилирует в байт-код)
2)ВМ и как её часть интерпритатор(исполняет)

а все потому, что выполнять байт-код(да и вообще скомпилированный) быстрее, чем исходные тексты.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается журналист от корреспонедента? Golovastik Свободное общение 3 24.06.2010 19:08
Чем отличается IA-64 от IA-32 Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.06.2009 16:13
Чем отличается Tasm от Masm veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 21.07.2008 16:55
Чем отличается AX от BX? veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.05.2008 16:50
Чем отличается Free от FreeInstance? andrey4623 Общие вопросы Delphi 5 27.01.2008 10:18