AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2010, 10:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,584 / 848 (80) +++++++
Регистрация: 28.10.2006
X++: More help needed from community: Do you rely on string truncation?
Источник: http://blogs.msdn.com/x/archive/2010...runcation.aspx
==============

Previously the X++ language allowed the LEFT and RIGHT keywords on definitions of string variables. That is no longer valid X++. However, we still allow specifying an explicit string length. The X++ language runtime implicitly does string truncation on assignment, both directly and when passing parameters. Consider the following example:

{
str 5 s;
s = ‘124567890";
}

The resulting string will only contain the first 5 characters, i.e. ‘12345'. Normally the user would not explicitly provide the length of the string in this way, but the behavior is exactly the same when using an extended type that has a particular length. One example is the SysGroup type, that is defined as having length 10 in the properties for the extended data type. If you run

{
SysGroup g = ‘1234567890ABCDEFGHIJ";
print g;
}

You will only get the first 10 characters printed. The remaining ones are lost to truncation.

The compiler is currently very weak in its support for these extended datatypes (EDTs). There is no validation that you are not assigning apples to oranges (so to speak). It would be natural for the compiler to respect the hierarchy that is expressed in the extended data types as is the case for class hierarchies, but that semantic check is not currently done: The compiler will base its checking on the base types of the EDTs. Introducing extra checks for the EDT hierarchies would be pleasing from a correctness perspective, but it would be an unreasonably daunting task for the eco-system to clean up the errors that would be the result of adding this check. On the other hand, using the EDTs does allow for a degree of documentation and customization.

It is quite easy for the X++ interpreter to provide these truncation semantics; it is not as easy to do in managed code. If we did, it would both compromise performance, and introduce considerable complexity into both the generation of the IL code and its execution.

Consider the following example, in which the interpreter and IL will provide different results:

{ str 5 s = ‘1234’; // Interpreter: ‘1234’; IL: ‘1234’
s += ‘ABCDE’; // Interpreter: ‘1234A’; IL: ‘12345ABCDE’
s = strrem(s, ‘1’); // Interpreter: ‘234A’; IL: ‘2345ABCDE’

}
No truncation would take place when assignments are made to bound strings, neither for direct assignments or by passing parameters. Only when the string is persisted into the database will the truncation take effect.

The question for you to answer is: Do you rely on these semantics in your code? Would your code run well if all string types were equal and unbound? Do we need to muddy the waters for IL by introducing the same behavior in IL?









Источник: http://blogs.msdn.com/x/archive/2010...runcation.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 18.03.2010, 13:14   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Blog bot Посмотреть сообщение
The X++ language runtime implicitly does string truncation on assignment, both directly and when passing parameters. It is quite easy for the X++ interpreter to provide these truncation semantics; it is not as easy to do in managed code. If we did, it would both compromise performance, and introduce considerable complexity into both the generation of the IL code and its execution.
The question for you to answer is: Do you rely on these semantics in your code? Do we need to muddy the waters for IL by introducing the same behavior in IL?
Кажется, публикация прошла незамеченной, хотя она говорит о том, что идея о переходе от интерпретатора в ядре к CLR и к трансляции p-кода в IL живет и здравствует - люди уже вычищают "мелкие несоответствия", замалчивая, правда, более интересные вопросы относительно того, как они перейдут от нынешнего способа взаимодействия клиента и сервера к модели взаимодействия наподобие веб-сервисов.
Старый 18.03.2010, 14:05   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Кажется, публикация прошла незамеченной, хотя она говорит о том, что идея о переходе от интерпретатора в ядре к CLR и к трансляции p-кода в IL живет и здравствует - люди уже вычищают "мелкие несоответствия", замалчивая, правда, более интересные вопросы относительно того, как они перейдут от нынешнего способа взаимодействия клиента и сервера к модели взаимодействия наподобие веб-сервисов.
Нууу - результат - ничто, процесс - все Кроме того они, как я понял, разговоры о веб-сервисах и более stateless подходу к архитектуре отнесли к более отдаленному будущему. Счас-то они похоже что пытаются вместе с аксаптовским p-кодом хранить где-то в определении объекта AOD еще и IL p-code. И соответственно в момент загрузки объекта в память (выполняемого, разумеется, аксаптовским загрузчиком, никаких там assemblies), в зависимости от какого-то параметра грузить объект либо в аксаптовскую виртуальную машину, либо в .netовскую. Учитывая что в Аксапте статических переменных, в чистом виде, нету, а синглетоны можно оставить в Аксаптовской виртуальной машине - подход в целом выглядит реализуемым.
Я, правда, знаю только одно место в Аксапте, где производительность определяется производительностью исполнения p-кода, а не обменом с БД - производственное планирование. И я по прежнему считаю что полноценной миграции системы в .net они не смогут сделать без переписывания всего приложения, а прозрачная для прикладного программиста миграция (при которой просто виртуальная машина подспудно меняется) не очень выгодна по соотношению прирост производительности/затраты на реализацию.
Старый 18.03.2010, 23:00   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
а я вот по процедурному вопросу, товарищи, если можно (стучит по графину).

вот мы тут разговариваем с телевизором по сути: человек там в блоге написал, нам сюда упало, мы обсуждаем, а он там и знать не знает о комментариях.

надо либо обратную трансляцию комментариев делать, либо как-то по-другому автора сюда приглашать.

(садится, утирая пот со лба)
__________________
Felix nihil admirari
Старый 19.03.2010, 10:50   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,435 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от wojzeh Посмотреть сообщение
вот мы тут разговариваем с телевизором по сути: человек там в блоге написал, нам сюда упало, мы обсуждаем, а он там и знать не знает о комментариях.
Относитесь к этому, как к новостной рассылке, которую можно обсудить с колегами. А для того чтобы лично пообщаться с автором, есть прямые ссылки на источник.
Ну а если какая-либо животрепещущая тема всполошит общественность на столько, что молчать не будет сил, то тут уже и коллективный ответ, можно написать.

"А если вы на него бочку катите, то это уже контейнерная перевозка. Этим Трансагентство занимается в сельской местности." Печкин И.И.

P.S.: Хотя идея с приглашением авторов сюда мне нравится. Этакие виртуальные вечера встреч с интересными людьми.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
palleagermark: Create a 64-bit encoded string from an image in AX Blog bot DAX Blogs 0 22.01.2010 15:05
Intercompany and direct delivery question (from Microsoft Axapta Discussion Community) Blog bot DAX Blogs 0 31.03.2008 11:05
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:46.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.