· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› Термины компилятор, транслятор, интерпретатор…

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Янв 6, 2004 14:23:39
Правка

Я запутался совсем! Как определиться с этими терминами?
Когда только начал читать книжки по программированию, там говорилось, что:
компилятор — это программа для перевода исходного кода в текстовом виде в машинный;
транслятор — это Васик, т.к. он транслирует исходный код построчно;
интерпретатор — это C,Pascal,etc., они работают со всем кодом сразу, оптимизируют и т.д.

Сейчас слышу высказывания, типа транслятор MASM'а, интерпретатор Perl'a, интерпретатор VBScript(!).

Помогите установить «объективную истину» и разобраться с этими терминами раз и навсегда!
Заранее благодарен…


Дата: Янв 6, 2004 14:38:50

IceStudent
Цитата из Основные понятия программирования
"...
Транслятор - это комплекс программ, обеспечивающий перевод программы, написанной на символическом языке, в совокупность машинных команд.

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

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

ps google рулит


Дата: Янв 6, 2004 14:55:53
Правка

Насчёт поисковой системы намёк понятен, но если в книгах по-разному пишут, то что говорить о всей Сети!

Хм…
Итак, Васик и остальные скриптовые языки работают под интерпретатором. ОК.

Не понятна теперь, что же такое транслятор? Что за символический язык?

Компилятор — я правильно понял, cl.exe,ml.exe — компиляторы?


Дата: Янв 6, 2004 15:17:16

IceStudent
Про интерпретаторы.
afaik есть (или были) Basic'и, которые делают/делали автономные приложения, т.е. обычные exe'шники.

Про трансляторы.
Процитирую другое определение рефераты по программированию и компьютерам. лекция №20:
Транслятор - это программа, которая переводит программу в нотации одного языка, в нотацию другого языка.

Про компиляторы.
Компиляторы - частный случай транслятора.
cl.exe и ml.exe - компиляторы, только со временем они научились вызывать link.exe.


Дата: Янв 6, 2004 15:33:52
Правка

q_q
только со временем они научились вызывать link.exe
это ни причём, т.к. результат их работы — .obj, который уже содержит машинный код… или я сильно ошибаюсь.

Но теперь понятно. Вот только что я думаю об авторах, "труды" которых я читал 2 года назад! dcc и cl - интерпретаторы… damn

Всё, считаю тему закрытой, хотя мож кто ещё выскажется…


Дата: Янв 6, 2004 15:40:47 · Поправил: q_q

IceStudent
результат их работы — .obj, который уже содержит машинный код
Правильно.

dcc - это что?


Дата: Янв 6, 2004 15:49:43
Правка

q_q
dcc - это что?
dcc32 — Borland® Delphi™ compiler
[только тсс, а то админы увидят — забанят весь Крым из-за ентого компилятора :)]


Дата: Янв 6, 2004 15:54:57 · Поправил: q_q

IceStudent
dcc32 - это я знаю.
Он, как и предыдущие компиляторы Borland Pascal не делает промежуточных файлов, если не считать dcu/tpu/tpp.
Поэтому я и упомянул об умении компилятора вызывать редактор связей (link) или как в случае с BP, выполнять его функции самостоятельно.


Дата: Янв 6, 2004 17:27:28

О! Полноценная демагогия. Не могу не вмешаться. ;)

Первое и главное: ml.exe, равно как и любой другой ассемблер, не компилятор ни разу. Он - ассемблер. Отдельная, самостоятельная и исторически первая категория. А то, на чём мы здесь пишем - это язык ассемблера. ;)

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


Дата: Янв 6, 2004 21:37:27 · Поправил: SeDoY

Уважаемые, зачем устраиваете игру словами? Издревле существовалои два подхода:
компиляция и интерпретация. Компилятор переводит программу на языке программирования в машинный код, исполнение которого осуществляется под управлением ОСи.Интерпретатор же является собствеено той системой,
которая исполняет написанную нами программу.
bsl_zcs, Ассемблер - это компилятор.
Кстати чего вас так васик интересует? Оставим это "божественное убожество" на совести мелкософта.


Дата: Янв 6, 2004 21:44:36 · Поправил: volodya

Под трансляторами понимается все - компиляторы, ассемблеры и интерпретаторы. Они что-то во что-то ТРАНСЛИРУЮТ.
SeDoY, ты путаешь грешное с праведным!
Читай:


2.2 Classes of translator
It is common to distinguish between several well-established classes of translator:
The term assembler is usually associated with those translators that map low-level language
instructions into machine code which can then be executed directly. Individual source
language statements usually map one-for-one to machine-level instructions.
The term macro-assembler is also associated with those translators that map low-level
language instructions into machine code, and is a variation on the above. Most source
language statements map one- for-one into their target language equivalents, but some macro
statements map into a sequence of machine- level instructions - effectively providing a text
replacement facility, and thereby extending the assembly language to suit the user. (This is
not to be confused with the use of procedures or other subprograms to "extend" high-level
languages, because the method of implementation is usually very different.)
The term compiler is usually associated with those translators that map high-level language
instructions into machine code which can then be executed directly. Individual source
language statements usually map into many machine-level instructions.
The term pre-processor is usually associated with those translators that map a superset of a
high-level language into the original high-level language, or that perform simple text
substitutions before translation takes place. The best-known pre-processor is probably that
which forms an integral part of implementations of the language C, and which provides many
of the features that contribute to the widely- held perception that C is the only really portable
language.
The term high-level translator is often associated with those translators that map one
high-level language into another high-level language - usually one for which sophisticated
compilers already exist on a range of machines. Such translators are particularly useful as
components of a two-stage compiling system, or in assisting with the bootstrapping
techniques to be discussed shortly.
The terms decompiler and disassembler refer to translators which attempt to take object
code at a low level and regenerate source code at a higher level. While this can be done quite
successfully for the production of assembler level code, it is much more difficult when one
tries to recreate source code originally written in, say, Pascal.



Дата: Янв 7, 2004 00:47:46

volodya, я ничего не путаю. Видимо ты несовсем понял мою мысль.
Действительно, трансляторы это всеобъемлющее понятие.
Я говорил про то, что принципов преобразования исходников
в функционирующую программу изначально существовало два, а остальное "приросло" потом.
Конечно, можно выделять ассемблер в отдельную категорию
трансляторов, но это было бы подменой понятий.
Мы привыкли называть процесс преобразования исходников, написанных на асме, в объектные модули –ассемблированием (хотя правильней этот процесс называть трансляцией), но по своей сути это КОМПИЛЯЦИЯ (и если эта мысль не верна, значит пора учебники переписывать).
PS: даже в литературе нет единства. Кто пишет, что ассемблер сам по себе. Кто называет ассемблер - "ассемблером", но тут же называет "компилятором"
(Зубков). Либо, особенно не мучаясь, обзывает его "транслятором", что есть наиболее правильный вариант (Юров).
PPS: достоверно известно одно, что ничего не известно =).


Дата: Янв 7, 2004 00:51:04

Транслятор - это правильнее. Компилятор может задействовать ассемблер, лично я разделяю эти два термина, поэтому, на всякий пожарный, хай будет транслятором. Железно :)


Дата: Янв 7, 2004 11:07:10

Ну, вот и договорились ;).
Наверно, IceStudent'а совсем запутали.


Дата: Янв 11, 2004 16:47:59
Правка

SeDoY
Не, не совсем :)
Основной проблемой было отличие интерпретатора от транслятора. Компилятор я считал родовым понятием для их обоих: Мы привыкли называть процесс преобразования исходников, написанных на асме, в объектные модули –ассемблированием... но по своей сути это КОМПИЛЯЦИЯ

Васик интересовал потому, что в тех книжках, что я читал, отмечали только 3 универсальных языка: C++,VisualBasic,ObjectPascal.
И VB называли транслятором, а C++/ObjectPascal - интерпретаторами.

Теперь разобрался!

volodya
Что за информация? Нельзя ли почитать полностью тот материал, отрывок из которого ты привёл? Если можно, то вот мой адрес: icestudent¤ukr.net…

. 1 . 2 . >>