Зарегистрироваться | Поиск |
Результаты опроса: К какому типу Вы относите язык X++ ? | |||
К компилируемому |
![]() ![]() ![]() ![]() |
15 | 45.45% |
К интерпретируемому |
![]() ![]() ![]() ![]() |
11 | 33.33% |
Затрудняюсь ответить |
![]() ![]() ![]() ![]() |
7 | 21.21% |
Голосовавшие: 33. Вы ещё не голосовали в этом опросе |
|
Опции темы |
![]() |
#31 |
Роман Долгополов (RDOL)
|
Во, блин, написали. Оказывается я породил вторую серию войнушки
Ну что же, пусть будет третья .... в традиционных понятиях линковка это сборка готовых кусков кода (уже на языке целевой машины) с подменой абсолютных адресов в соответсвии в местом на котором будет этот кусок располагаться в адресном пространстве всей программы. никакого p-кода. То что в акспте юзается p-код и он независим от исходников, говорит что в аксапте ЕСТЬ компилятор в p-код. Плюс виртуальная машина, которая его выполняет. Называйте ее (не аксапту, а виртуальную машину) интерпретатором p-кода если хотите. Так ще как любой железный процессор можно назвать интерпретатором машинного кода. Вы же, надеюсь не думаете, что процессор в чистом виде исполняет MOV A,C какой нито. У него внутрях самый что ни на есть железный интерпретатор и микропрограммы, которые раскладывают все до простейших логических операций и операций сдвига. Так что я считаю что внутри аксапты компилятор в p-код и виртуальный софтовый процессор, который радостно жужжа его хавает, о чем и говорил Ruff Дальше. Что является основным "первичным половым признаком" ![]() не нажимать? Увы, нет. Компилятор, чтобы таковым назыаваться, должен всего лишь считать текст программы на одном языке - исходном (x++), и транслировать (да, именно транслировать, т.е перевести) его в эквивалентный текст на другом языке (нечто даамгарное). Заметьте, всего навсего в другой (а не конкретно машинный, рыбий или албанский). После этапа трансляции компиятором исходники не нужны. Заметьте - всего навсего не нужен исходный текст, а не то что результат должен уметь исполняться или какие нито еще умения. На выходе может быть текст на ассемблере или с (он тоже не умеет исполняться), пресловутый экзешник, набор древнеегипетских иероглифов или микросхема, например, с 8 ножками ![]() Главное чтобы исходное и целевое значили одно и то же, на исходном языке и в виде иероглифов Интерптетатор то же транслирует, но на ходу и подглядывает в исходники, без которых он никак не может. И компилятор и интерпретатор это все равно по своей сути переводчики - трансляторы. Все остальные навороты - возможность замены кода на лету - динамическая компоновка исполняемого кода из охрененного куска мелких кусочков (IMHO мин кусочек то что хранится отдельной строкой в UtilElements) - возможность выполнения сгенеренного в рантайме кода - интерфейс в рантайме к самому себе и т.д.это уже навороты и особенности виртуального аксаптовского процессора и среды разработки эффективно это, или нет? что курили разработчики? слишком ли это круто для Х++? и прочие подобные вопросы к теме отношения не имеют. про пример со строковой переменной в двух методах класса- это как раз тот случай когда среда разработки вызывает компиляцию при сохранении (надеюсь не для кого не секрет) и тут же делает этот код доступным виртуальному процессору или ставит метку что код кривой. Опять же правильно это, неправильно и кто что курил к теме отношения не имеют. есть среды разработки в которых вообще нету отдельной кнопки "компилировать", но тем не менее они это прекрасно умеют (Eclipse, например) в википедию и прочие "интернеты" не посылать - не авторитет - можно одновременно доказать и опровергнуть что хочешь ![]() "если на одном канале скажут "тыква это овощ", то другой канал ответит "врете, тыква это фрукт" (с) Т.Шаов а вот книжка с дракончиком от Ахо, Сети и Ульман - авторитет, так что всех за определением компилятора посылаю туда |
|
|
За это сообщение автора поблагодарили: Ruff (2), sukhanchik (10), Lucky13 (2). |