Зарегистрироваться | Поиск |
Результаты опроса: К какому типу Вы относите язык X++ ? | |||
К компилируемому |
![]() ![]() ![]() ![]() |
15 | 45.45% |
К интерпретируемому |
![]() ![]() ![]() ![]() |
11 | 33.33% |
Затрудняюсь ответить |
![]() ![]() ![]() ![]() |
7 | 21.21% |
Голосовавшие: 33. Вы ещё не голосовали в этом опросе |
|
Опции темы |
|
![]() |
#1 |
Роман Долгополов (RDOL)
|
Цитата:
Не существует чисто "компилируемых" и "интерпретируемых" языков. Существуют компиляторы и интерпретаторы. Да, некоторые проще реализуются в виде интерпретаторов, но и только. Вот спрошу с чего вы взяли С++ компилируемый? С того что на него чаще обращали внимание разработчики компиляторов? Ну так никто не мешает написать интерпретатор для С++. А уж написание компиляторов с бейсика это любимая практическая задача при обучении теории компиляторов. Так что все зависит от конкретной реализации. И ничто не мешает в одной реализации использовать и компилятор и интерпретатор. В аксапте исходный код на Х++ заранее целиком преобразуется в нечто промежуточное, которое потом исполняется машиной внутри аксапты без обращения к исходному коду. Т.е компиляция есть. Просто компиляция не в машинный код, а промежуточный Вот простой пример, доказывающий что при исполнении исходники не юзаются никаким боком создаем baseEnum baseenumtest, в нем Element1, enumvalue = 0 пишем джоб X++: static void Job24(Args _args) { ; info(int2str(baseenumtest::Element1 +0)); } обязательно закрываем редактор кода идем и меняем enumvalue на 1 запускаем наш джоб из аот (ctrl-o). именно из аот, при запуске из редактора сначала случится компиляция и что мы види в инфологе? Правильно, 0 компилируем джоб, и снова запускаем. в инфологе отображатся 1 PS. Ответил компилятор, хотя все три варианта правильные ![]() |
|
|
За это сообщение автора поблагодарили: Megacrusher (1), belugin (3). |
![]() |
#2 |
Участник
|
Цитата:
![]() только не компиляция, а трансляция в p-код ![]() как раз то, что программист не управляет явным образом процессом компиляции и говорит о том, что Аксапта не компилятор. |
|
![]() |
#3 |
Administrator
|
Цитата:
Наверное более правильно было бы ответить "Затрудняюсь" - т.к. а) на мой взгляд - "компилируемый" - легче для понимания "а как это работает" б) "интерпретируемый" - более правильно было бы ответить (если подходить к вопросу терминологически). Но проработав с VBA - где код программы можно менять прям в рантайме - я психологически не могу отнести Аксапту к интерпретируемому языку. А компилируемый - мне ближе ![]() Программист также управляет процессом компиляции как и в каких-нибудь С++ или дельфи, где есть интегрированная среда разработки, которая весь процесс компиляции и линковки (и создания exe-шника) делает за программиста, который нажимает всего одну кнопку (как в аксапте). Просто в Аксапте вызов этой кнопки еще "зашит" на сохранении кода в редакторе. Это я к тому, что неделание в явном виде линковки еще не говорит о том, что язык некомпилируемый. runbuf вызывает код.. Но ведь нет никаких гарантий что исходный код не транслируется в p-код в этом случае (равно как и доказательств трансляции)! Более того - есть утверждение - что отладчик не работает из-под runBuf. Может это следствие того, что трансляция все-таки какая-никакая а есть? Классы же Dict* лишь позволяют в рантайме запустить тот или иной объект. Их наличие не говорит о том - запускают они исходный код или p-код. Поэтому - их наличие - тоже не доказательство интерпретируемости языка. Резюме: Голосую за "компилируемый"
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
Только в байт-код (p-код) всю жизнь не компилировалось, а транслировалось.
Компиляция - это все-таки в язык хост-машины. Скорее да. |
|