AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Результаты опроса: К какому типу Вы относите язык X++ ?
К компилируемому 15 45.45%
К интерпретируемому 11 33.33%
Затрудняюсь ответить 7 21.21%
Голосовавшие: 33. Вы ещё не голосовали в этом опросе

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2009, 11:18   #21  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Да, тема потихоньку сползла в терминологический спор.
Хочется освежить. Почему встал вопрос о том, к какому типу языков отнести Х++?
Потому что было проведено некорректное сравнение Х++ с С++:

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
... . Я просто провожу параллель со сборкой exe-шника. При сборке из командной строки - в exe-шник копируются куча библиотек, причем можно задать - копировать их, либо использовать только ссылки (в последнем случае exe-шник не запустится без наличия библиотек).
Если взглянуть - сколько всего "пихается" в простой exe-шник на С++ Builder в простой программе Hello world... - то невольно подумаешь - что тут тоже самое. Ведь братья дамгарды не писали с нуля свой компилятор - они (насколько мне рассказывали) - взяли некие заготовки - ведь почему X++ так удивительно похож на Java и С++, а не на бейсик, паскаль, фортран и т.д.

Для отладчика добавляется специальная отладочная информация (и это тоже одна из опций компилятора) - поэтому на нее нельзя ориентироваться. Кстати - перед финальной сборкой exe-шника эту отладочную информацию обязательно удаляют (выполняют сборку без указания спецключика) для того, чтобы не давать легкую возможность дизассемблировать + уменьшить размер файла.
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Как я уже описал выше - я пришел к выводу на основе работы C++-ного компилятора еще в досе. Плюс пообщался на эту тему еще со своими приятелями (разработчиками в аксапте, которые видели исходные сишные коды ax32.exe) - которые независимо от меня пришли к такому же мнению. А т.к. 2 абсолютно независимых человека пришли к одинаковым выводам - я обрел некоторую уверенность в своей гипотезе.

Тем более, что внешние симптомы не позволяют в ней сомневаться.
Т.е. под компиляцией хочется понимать построение кода, способного на самостоятельное исполнение.

Цитата:
Сообщение от belugin Посмотреть сообщение
Считайте, что в аксапте каждый класс - DLL отдельная
Это ж как нужно извратиться, чтобы так сделать... А главное - зачем применительно к X++. DLL - это кусок самостоятельно исполняемого кода. Ну да ладно.

Цитата:
Сообщение от fed Посмотреть сообщение
2. Аналогичным образом - можно в случае возникновения runtime-ошибки просто подправить ручками значения переменных. То есть - поделили на ноль случайно - можно пока не разбираться, а просто впендюрить не-ноль в нужную переменную.
Это можно сделать и в компилируемых языках. Например, если установлена VS, она всегда предлагается как отладчик при возникновении run-time ошибки. В общем случае вываливается ASM, в частном - исходный код, напр. C++ (если я ничего не путаю)

Цитата:
Сообщение от fed Посмотреть сообщение
3. Заметную часть операторов можно исполнять в режиме командной строки. Написал чего-то типа print 45*SIN(29) и тут же получил результат.
ф-я runBuf как раз подходит под это описание. Можно из обычной формы сделать что-то наподобие командной строки на основе этой ф-ции.

Цитата:
Сообщение от belugin Посмотреть сообщение
Не как раз нельзя на лету изхменить - надо сначала перекомпилировать и чтобы он перезакгрузился. Попробуйте в форме или в созданном классе что-нибудь порменять на ходу и не пересоздавать класс.
Цитата:
Сообщение от fed Посмотреть сообщение
1. Можно остановить программу, поменять кусочек кода (скажем - вставить строку внутрь исполняющегося в данный момент цикла), а потом продолжить выполение этой программы.
Попробую доказать обратное.
  1. Объявляем на уровне класса строковую переменную, инитим её в new()
  2. Создаем класс с 2мя методами. 1й метод содержит инфолог с одним текстом. 2й метод - с другим. Оба текста пусть строятся на основе строковой переменной, объявленной в классе. - так, на всякий случай.
  3. Делаем пустую форму, в которой создаём объект нашего класса и периодически (setTimeOut) вызываем его методы, один за другим.

    Что видим - чередующиеся строки из 1-го и 2-го методов класса.
  4. Не закрывая форму (т.е. объект класса не разрушается), меняем текст в одном из методов, сохраняем.

    Что видим - текст в инфологе для измененного метода поменялся. При этом объект класса не пересоздавался.

(прикрепил готовый проект, если кто-то хочет поэксперементировать)

Если это не является доказательством того, что X++ правильнее относить с интерпретируемому типу языка, нежели к компилируемому, то IMHO дальнейший спор лишен всякого смысла...

P.S. 2Admins: Можно ли подредактировать опцию опроса, включив возможность проголосовать снова, на случай, если кто-нибудь изменит (ещё раз ) своё мнение
Вложения
Тип файла: xpo PrivateProject_RunTimeTest.xpo (3.3 Кб, 236 просмотров)

Последний раз редактировалось DSPIC; 21.04.2009 в 11:22.
Старый 21.04.2009, 11:24   #22  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Вообще говоря, никто не мешает находу перекомпилировать меод и подпатчить работающий код даже компилируемый в нейтив код
Старый 21.04.2009, 11:42   #23  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от belugin Посмотреть сообщение
Вообще говоря, никто не мешает находу перекомпилировать меод и подпатчить работающий код даже компилируемый в нейтив код
Это runtime теория. Несколько постов назад вы утверждали обратное.
Это слишком круто для X++. А так, да - теоретически можно.
Старый 21.04.2009, 11:46   #24  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Это runtime теория. Несколько постов назад вы утверждали обратное.
Это слишком круто для X++. А так, да - теоретически можно.
Ну -
1. X++ компилирует не в нейтив.
2. Возможно просто DLL это метод а не класс в целом. Интересно, что получится, елси на ходу убрать поле класса в class decl.
Старый 21.04.2009, 12:41   #25  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fed Посмотреть сообщение
Я вот начинал учится программировать еще на MSX-Basic
...
можно в случае возникновения runtime-ошибки просто подправить ручками значения переменных.
Эх... msx... Я начинал не на Ямахе, но MSX до сих пор помню и люблю.

А народ похоже уже такими трюками не пользуется. Может и правильно.
Там можно было не только подправить, но и руками выполнить команду resume после исправления переменных... Basic продолжал выполнение программы с места возникновения ошибки. Сейчас такое возможно только если заранее предусмотрена команда retry в catch-блоке.
__________________
полезное на axForum, github, vk, coub.
Старый 21.04.2009, 12:42   #26  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fed Посмотреть сообщение
P.S. 2Admins: Можно ли подредактировать опцию опроса, включив возможность проголосовать снова, на случай, если кто-нибудь изменит (ещё раз ) своё мнение
Нет. Только создавать новый опрос.
__________________
полезное на axForum, github, vk, coub.
Старый 21.04.2009, 19:10   #27  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Во, блин, написали. Оказывается я породил вторую серию войнушки
Ну что же, пусть будет третья ....

в традиционных понятиях линковка это сборка готовых кусков кода (уже на языке целевой машины) с подменой абсолютных адресов в соответсвии в местом
на котором будет этот кусок располагаться в адресном пространстве всей программы. никакого p-кода.

То что в акспте юзается p-код и он независим от исходников, говорит что в аксапте ЕСТЬ компилятор в p-код. Плюс виртуальная машина, которая его выполняет. Называйте ее (не аксапту, а виртуальную машину) интерпретатором
p-кода если хотите. Так ще как любой железный процессор можно назвать интерпретатором машинного кода. Вы же, надеюсь не думаете, что процессор в чистом виде исполняет MOV A,C какой нито. У него внутрях самый что ни на есть железный интерпретатор и микропрограммы, которые раскладывают все до простейших логических операций и операций сдвига.

Так что я считаю что внутри аксапты компилятор в p-код и виртуальный софтовый процессор, который радостно жужжа его хавает, о чем и говорил Ruff

Дальше. Что является основным "первичным половым признаком" компилятора? Линковки? Необходимость программиста что то нажимать или наоборот
не нажимать? Увы, нет.
Компилятор, чтобы таковым назыаваться, должен всего лишь считать текст программы на одном языке - исходном (x++), и транслировать (да, именно транслировать, т.е перевести) его в эквивалентный текст на другом языке (нечто даамгарное). Заметьте, всего навсего в другой (а не конкретно машинный, рыбий или албанский).

После этапа трансляции компиятором исходники не нужны. Заметьте - всего навсего не нужен исходный текст, а не то что результат должен уметь исполняться
или какие нито еще умения. На выходе может быть текст на ассемблере или с (он тоже не умеет исполняться), пресловутый экзешник, набор древнеегипетских иероглифов или микросхема, например, с 8 ножками
Главное чтобы исходное и целевое значили одно и то же, на исходном языке и в виде иероглифов

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

Все остальные навороты
- возможность замены кода на лету
- динамическая компоновка исполняемого кода из охрененного куска мелких кусочков (IMHO мин кусочек то что хранится отдельной строкой в UtilElements)
- возможность выполнения сгенеренного в рантайме кода
- интерфейс в рантайме к самому себе
и т.д.это уже навороты и особенности виртуального аксаптовского процессора и среды разработки

эффективно это, или нет? что курили разработчики? слишком ли это круто для Х++? и прочие подобные вопросы к теме отношения не имеют.

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

есть среды разработки в которых вообще нету отдельной кнопки "компилировать", но тем не менее они это прекрасно умеют (Eclipse, например)

в википедию и прочие "интернеты" не посылать - не авторитет - можно одновременно доказать и опровергнуть что хочешь ,
"если на одном канале скажут "тыква это овощ", то другой канал ответит "врете, тыква это фрукт" (с) Т.Шаов

а вот книжка с дракончиком от Ахо, Сети и Ульман - авторитет, так что всех за определением компилятора посылаю туда
За это сообщение автора поблагодарили: Ruff (2), sukhanchik (10), Lucky13 (2).
Старый 21.04.2009, 20:42   #28  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Ruff Посмотреть сообщение
...на языке вертится Грин, но не уверен...
Вспомнил!
Грис Д., Конструирование компиляторов для цифровых вычислительных машин.

Но книжка с драконом, пожалуй, получше.
Старый 21.04.2009, 21:16   #29  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Ruff Посмотреть сообщение
Но книжка с драконом, пожалуй, получше.
ОФФ топ. Да, "Книга дракона" (неофициальное название труда Ахо) это классика. Правда теории многовато. Когда в 92 году сдавали компиляторы, этих книг в Москве вообще было всего несколько штук - пришлось под удостоверением знакомого аспиранта в Политехническую библиотеку пробираться.
Старый 22.04.2009, 00:00   #30  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,309 / 3545 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Нашел книжку с дракончиком.
Название: pic1.jpg
Просмотров: 865

Размер: 73.7 Кб

Нажмите на изображение для увеличения
Название: pic2.jpg
Просмотров: 238
Размер:	52.2 Кб
ID:	4569
__________________
Возможно сделать все. Вопрос времени
Старый 22.04.2009, 00:08   #31  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,309 / 3545 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
Вообще говоря, никто не мешает находу перекомпилировать меод и подпатчить работающий код даже компилируемый в нейтив код
Если уж никто не спорит с утверждением о том, что компиляция идет из X++ в p-код, а после этого идет интерпретация в чистом виде - то совершенно логично, что перекомпилированный (но запущенный ранее) класс "видит" все изменения.
__________________
Возможно сделать все. Вопрос времени
Старый 22.04.2009, 12:52   #32  
Megacrusher is offline
Megacrusher
NavAx
Аватар для Megacrusher
NavAx Club
 
175 / 19 (1) ++
Регистрация: 18.08.2003
Адрес: Москва
Ух, сколько понаписали... Мдя, "компиляторы" с небольшим отрывом рулят ! А если опрос покажет что форумчане склоняются к версии о компиляторной версии Axы, то высказывания об интерпретаторной версии станут запретными? Может не много глупый вопрос, но я бы назвал его уточняющим... Другими словами будет ли опрос влиять на дальнейшее распространение этого мнения? И будет ли форум бороться с инакомыслием?
Старый 22.04.2009, 13:09   #33  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Если уж никто не спорит с утверждением о том, что компиляция идет из X++ в p-код, а после этого идет интерпретация в чистом виде - то совершенно логично, что перекомпилированный (но запущенный ранее) класс "видит" все изменения.
Мне кажется, что это не зависит от того, исполняется ли код виртуальной машиной или железной.

Машинный же код тоже интепретируется процессором. Тут скорее зависит от того, что является единицей загрузки и в каком режиме происходить выгрузка и загрузка.
Старый 22.04.2009, 13:10   #34  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Megacrusher Посмотреть сообщение
И будет ли форум бороться с инакомыслием?
Конечно, а если победит партия итепретаторщиков, то под страхом бана заставим всех изменить термины на "инкрементная интерпретация" и "рекомендуем переинтерпретацию всего приложения"
За это сообщение автора поблагодарили: db (1), oip (1).
Старый 22.04.2009, 13:27   #35  
Megacrusher is offline
Megacrusher
NavAx
Аватар для Megacrusher
NavAx Club
 
175 / 19 (1) ++
Регистрация: 18.08.2003
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
Конечно, а если победит партия итепретаторщиков, то под страхом бана заставим всех изменить термины на "инкрементная интерпретация" и "рекомендуем переинтерпретацию всего приложения"
Я не это имел ввиду. И спросил неспроста. Вероятнее всего, что будут отсылать к результатам опроса и говорить, мол было обсуждение и решили таким то образом. Типа пользуйся поиском и читай внимательней... У будут указывать на это даже если ты с этим не согласен
Старый 22.04.2009, 14:28   #36  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,309 / 3545 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Форум есть форум. Курилка есть курилка. Никто не обязывает изменять свое представление в зависимости от трепа в курилке. Можно создать опрос - типа - хотите ли вы чтобы в аксапте появилась к примеру разноска от склада. И всем проголосовать за. Но пока МС не посчитает нужным это сделать - ничего не будет.
Так и тут. Пока у нас есть официальный термин от МС-- "компиляция". Поэтому пока от него никто не отказывается.
Но если возникнет еще раз спор на эту тему - то можно будет отослать к опросу и сказать что холивар уже был и закончился со счетом Х:Y в пользу того-то
__________________
Возможно сделать все. Вопрос времени
Старый 22.04.2009, 15:09   #37  
Megacrusher is offline
Megacrusher
NavAx
Аватар для Megacrusher
NavAx Club
 
175 / 19 (1) ++
Регистрация: 18.08.2003
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Форум есть форум. Курилка есть курилка. Никто не обязывает изменять свое представление в зависимости от трепа в курилке. Можно создать опрос - типа - хотите ли вы чтобы в аксапте появилась к примеру разноска от склада. И всем проголосовать за. Но пока МС не посчитает нужным это сделать - ничего не будет.
Так и тут. Пока у нас есть официальный термин от МС-- "компиляция". Поэтому пока от него никто не отказывается.
Но если возникнет еще раз спор на эту тему - то можно будет отослать к опросу и сказать что холивар уже был и закончился со счетом Х:Y в пользу того-то
Ясна.
Старый 23.04.2009, 10:40   #38  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Uppp !!!
Не стесняемся голосовать, высказывать и обосновывать свои мнения!
Теги
p-код, x++, интерпретатор, компилятор, ядро, трансляция

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
А по какому принципу отбираются блоги axbegin Обсуждение форума 54 14.04.2023 16:23
На главной странице для русского языка объединены блоки... Стало ли лучше? mazzy Информация для участников 4 23.03.2007 19:14
Бьерн Страустрап, один из разработчиков языка С++: KMV Курилка 3 17.03.2006 13:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:20.