|
|
| Посл.отвђт | Сообщен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… |