Зарегистрироваться | Поиск |
Результаты опроса: К какому типу Вы относите язык X++ ? | |||
К компилируемому |
![]() ![]() ![]() ![]() |
15 | 45.45% |
К интерпретируемому |
![]() ![]() ![]() ![]() |
11 | 33.33% |
Затрудняюсь ответить |
![]() ![]() ![]() ![]() |
7 | 21.21% |
Голосовавшие: 33. Вы ещё не голосовали в этом опросе |
|
Опции темы |
![]() |
#21 |
Боец
|
Да, тема потихоньку сползла в терминологический спор.
Хочется освежить. Почему встал вопрос о том, к какому типу языков отнести Х++? Потому что было проведено некорректное сравнение Х++ с С++: Цитата:
Сообщение от sukhanchik
![]() ... . Я просто провожу параллель со сборкой exe-шника. При сборке из командной строки - в exe-шник копируются куча библиотек, причем можно задать - копировать их, либо использовать только ссылки (в последнем случае exe-шник не запустится без наличия библиотек).
Если взглянуть - сколько всего "пихается" в простой exe-шник на С++ Builder в простой программе Hello world... - то невольно подумаешь - что тут тоже самое. Ведь братья дамгарды не писали с нуля свой компилятор - они (насколько мне рассказывали) - взяли некие заготовки - ведь почему X++ так удивительно похож на Java и С++, а не на бейсик, паскаль, фортран и т.д. Для отладчика добавляется специальная отладочная информация (и это тоже одна из опций компилятора) - поэтому на нее нельзя ориентироваться. Кстати - перед финальной сборкой exe-шника эту отладочную информацию обязательно удаляют (выполняют сборку без указания спецключика) для того, чтобы не давать легкую возможность дизассемблировать + уменьшить размер файла. Цитата:
Сообщение от sukhanchik
![]() Как я уже описал выше - я пришел к выводу на основе работы C++-ного компилятора еще в досе. Плюс пообщался на эту тему еще со своими приятелями (разработчиками в аксапте, которые видели исходные сишные коды ax32.exe) - которые независимо от меня пришли к такому же мнению. А т.к. 2 абсолютно независимых человека пришли к одинаковым выводам - я обрел некоторую уверенность в своей гипотезе.
Тем более, что внешние симптомы не позволяют в ней сомневаться. Это ж как нужно извратиться, чтобы так сделать... А главное - зачем применительно к X++. DLL - это кусок самостоятельно исполняемого кода. Ну да ладно. Цитата:
Цитата:
Цитата:
Цитата:
(прикрепил готовый проект, если кто-то хочет поэксперементировать) Если это не является доказательством того, что X++ правильнее относить с интерпретируемому типу языка, нежели к компилируемому, то IMHO дальнейший спор лишен всякого смысла... P.S. 2Admins: Можно ли подредактировать опцию опроса, включив возможность проголосовать снова, на случай, если кто-нибудь изменит (ещё раз ![]() Последний раз редактировалось DSPIC; 21.04.2009 в 11:22. |
|
![]() |
#22 |
Участник
|
Вообще говоря, никто не мешает находу перекомпилировать меод и подпатчить работающий код даже компилируемый в нейтив код
|
|
![]() |
#23 |
Боец
|
|
|
![]() |
#24 |
Участник
|
Цитата:
1. X++ компилирует не в нейтив. 2. Возможно просто DLL это метод а не класс в целом. Интересно, что получится, елси на ходу убрать поле класса в class decl. |
|
![]() |
#25 |
Участник
|
Цитата:
А народ похоже уже такими трюками не пользуется. Может и правильно. Там можно было не только подправить, но и руками выполнить команду resume после исправления переменных... Basic продолжал выполнение программы с места возникновения ошибки. Сейчас такое возможно только если заранее предусмотрена команда retry в catch-блоке. |
|
![]() |
#26 |
Участник
|
Нет. Только создавать новый опрос.
|
|
![]() |
#27 |
Роман Долгополов (RDOL)
|
Во, блин, написали. Оказывается я породил вторую серию войнушки
Ну что же, пусть будет третья .... в традиционных понятиях линковка это сборка готовых кусков кода (уже на языке целевой машины) с подменой абсолютных адресов в соответсвии в местом на котором будет этот кусок располагаться в адресном пространстве всей программы. никакого p-кода. То что в акспте юзается p-код и он независим от исходников, говорит что в аксапте ЕСТЬ компилятор в p-код. Плюс виртуальная машина, которая его выполняет. Называйте ее (не аксапту, а виртуальную машину) интерпретатором p-кода если хотите. Так ще как любой железный процессор можно назвать интерпретатором машинного кода. Вы же, надеюсь не думаете, что процессор в чистом виде исполняет MOV A,C какой нито. У него внутрях самый что ни на есть железный интерпретатор и микропрограммы, которые раскладывают все до простейших логических операций и операций сдвига. Так что я считаю что внутри аксапты компилятор в p-код и виртуальный софтовый процессор, который радостно жужжа его хавает, о чем и говорил Ruff Дальше. Что является основным "первичным половым признаком" ![]() не нажимать? Увы, нет. Компилятор, чтобы таковым назыаваться, должен всего лишь считать текст программы на одном языке - исходном (x++), и транслировать (да, именно транслировать, т.е перевести) его в эквивалентный текст на другом языке (нечто даамгарное). Заметьте, всего навсего в другой (а не конкретно машинный, рыбий или албанский). После этапа трансляции компиятором исходники не нужны. Заметьте - всего навсего не нужен исходный текст, а не то что результат должен уметь исполняться или какие нито еще умения. На выходе может быть текст на ассемблере или с (он тоже не умеет исполняться), пресловутый экзешник, набор древнеегипетских иероглифов или микросхема, например, с 8 ножками ![]() Главное чтобы исходное и целевое значили одно и то же, на исходном языке и в виде иероглифов Интерптетатор то же транслирует, но на ходу и подглядывает в исходники, без которых он никак не может. И компилятор и интерпретатор это все равно по своей сути переводчики - трансляторы. Все остальные навороты - возможность замены кода на лету - динамическая компоновка исполняемого кода из охрененного куска мелких кусочков (IMHO мин кусочек то что хранится отдельной строкой в UtilElements) - возможность выполнения сгенеренного в рантайме кода - интерфейс в рантайме к самому себе и т.д.это уже навороты и особенности виртуального аксаптовского процессора и среды разработки эффективно это, или нет? что курили разработчики? слишком ли это круто для Х++? и прочие подобные вопросы к теме отношения не имеют. про пример со строковой переменной в двух методах класса- это как раз тот случай когда среда разработки вызывает компиляцию при сохранении (надеюсь не для кого не секрет) и тут же делает этот код доступным виртуальному процессору или ставит метку что код кривой. Опять же правильно это, неправильно и кто что курил к теме отношения не имеют. есть среды разработки в которых вообще нету отдельной кнопки "компилировать", но тем не менее они это прекрасно умеют (Eclipse, например) в википедию и прочие "интернеты" не посылать - не авторитет - можно одновременно доказать и опровергнуть что хочешь ![]() "если на одном канале скажут "тыква это овощ", то другой канал ответит "врете, тыква это фрукт" (с) Т.Шаов а вот книжка с дракончиком от Ахо, Сети и Ульман - авторитет, так что всех за определением компилятора посылаю туда |
|
|
За это сообщение автора поблагодарили: Ruff (2), sukhanchik (10), Lucky13 (2). |
![]() |
#28 |
Дмитрий Ерин
|
|
|
![]() |
#29 |
Участник
|
ОФФ топ. Да, "Книга дракона" (неофициальное название труда Ахо) это классика. Правда теории многовато. Когда в 92 году сдавали компиляторы, этих книг в Москве вообще было всего несколько штук - пришлось под удостоверением знакомого аспиранта в Политехническую библиотеку пробираться.
|
|
![]() |
#30 |
Administrator
|
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#31 |
Administrator
|
Если уж никто не спорит с утверждением о том, что компиляция идет из X++ в p-код, а после этого идет интерпретация в чистом виде - то совершенно логично, что перекомпилированный (но запущенный ранее) класс "видит" все изменения.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#32 |
NavAx
|
Ух, сколько понаписали... Мдя, "компиляторы" с небольшим отрывом рулят !
![]() |
|
![]() |
#33 |
Участник
|
Цитата:
Машинный же код тоже интепретируется процессором. Тут скорее зависит от того, что является единицей загрузки и в каком режиме происходить выгрузка и загрузка. |
|
![]() |
#34 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: db (1), oip (1). |
![]() |
#35 |
NavAx
|
Цитата:
![]() |
|
![]() |
#36 |
Administrator
|
Форум есть форум. Курилка есть курилка. Никто не обязывает изменять свое представление в зависимости от трепа в курилке. Можно создать опрос - типа - хотите ли вы чтобы в аксапте появилась к примеру разноска от склада. И всем проголосовать за. Но пока МС не посчитает нужным это сделать - ничего не будет.
Так и тут. Пока у нас есть официальный термин от МС-- "компиляция". Поэтому пока от него никто не отказывается. Но если возникнет еще раз спор на эту тему - то можно будет отослать к опросу и сказать что холивар уже был и закончился со счетом Х:Y в пользу того-то
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#37 |
NavAx
|
Цитата:
Сообщение от sukhanchik
![]() Форум есть форум. Курилка есть курилка. Никто не обязывает изменять свое представление в зависимости от трепа в курилке. Можно создать опрос - типа - хотите ли вы чтобы в аксапте появилась к примеру разноска от склада. И всем проголосовать за. Но пока МС не посчитает нужным это сделать - ничего не будет.
Так и тут. Пока у нас есть официальный термин от МС-- "компиляция". Поэтому пока от него никто не отказывается. Но если возникнет еще раз спор на эту тему - то можно будет отослать к опросу и сказать что холивар уже был и закончился со счетом Х:Y в пользу того-то ![]() |
|
![]() |
#38 |
Боец
|
Uppp !!!
Не стесняемся голосовать, высказывать и обосновывать ![]() |
|