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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.12.2009, 16:50   #1  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
У меня присутствует следующее опасение от грядущего перехода с X++ на C# :
В C# существуют более сложные конструкции языка чем в X++ и продвинутые C# - еры начнут ими пользоваться. В итоге, читая код, нужно будет сначала разбираться в конструкциях языка, а потом уже в бизнес-логике. X++ прост и выразителен, читая код, ты сразу понимаешь, что в нем происходит. В общем, на мой взгляд, есть вероятность того, что разработка на С# будет занимать больше времени.
Старый 11.12.2009, 21:41   #2  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
У меня присутствует следующее опасение от грядущего перехода с X++ на C# :
В C# существуют более сложные конструкции языка чем в X++ и продвинутые C# - еры начнут ими пользоваться. В итоге, читая код, нужно будет сначала разбираться в конструкциях языка, а потом уже в бизнес-логике.
Как я понял, с поверхностного ознакомления, C# не настолько сложный язык что бы читая код, каждый раз приходилось в нем разбираться

Цитата:
Сообщение от _scorp_ Посмотреть сообщение
X++ прост и выразителен, читая код, ты сразу понимаешь, что в нем происходит.В общем, на мой взгляд, есть вероятность того, что разработка на С# будет занимать больше времени.
Завидую...читаешь код, например: ЗиК, Налоговых регистров, разноску по ГК, расчет спецификаций, закрытие склада, Обороток в любых модулях(RLedgerSheet*), даже в отладчике, все не так очевидно, что уж там просто исходники. Впрочем, возможно это только у меня Но в целом, это к тому, что в случае Х++ и C# вопрос очевидности языка - дело десятое. И там, и там, можно "намудрить".

p.s. Как красноглазик в данном вопросе , я за систему на едином и современном языке: С#, но только в случае если это действительно грозит снижением скорости разработки исключительно на период погружения в тонкости новой платформы и при сохранении существующего функционала.

Последний раз редактировалось Lemming; 11.12.2009 в 21:44.
Старый 11.12.2009, 22:27   #3  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Lemming Посмотреть сообщение
C# не настолько сложный язык что бы читая код
Он не сложный, но возможностей "загнуть" там гораздо больше чем на X++. Вот например что здесь выведется на экран
X++:
class X<T>
    {
        public static void PrintTypes()
        {
            Console.WriteLine(typeof(T).FullName);
            Console.WriteLine(typeof(X<X<T>>).FullName);
        }
    }
    class App
    {
        static void Main()
        {
            X<int>.PrintTypes();
        }
    }
Или здесь

X++:
class Program
    {
        delegate int DelegateType(int valTypeParam, string refTypeParam,
          ref int refParam, out int outParam);

        static DelegateType GetMethod()
        {
            return delegate(int valTypeParam, string refTypeParam,
              ref int refParam, out int outParam)
            {
                System.Console.WriteLine("Hello valParam:{0} refTypeParam:{1}",
                  valTypeParam, refTypeParam);

                refParam++;
                outParam = 9;
                return valTypeParam;
            }; 
        }

        static void Main()
        {
            DelegateType delegateInstance = GetMethod();
            int refVar = 5;
            int outVar;
            int i = delegateInstance(1, "one", ref refVar, out outVar);
            int j = delegateInstance(2, "two", ref refVar, out outVar);
            System.Console.WriteLine("i:{0} j:{1} refVar:{2} outVar:{3}",
              i, j, refVar, outVar);
        }
    }
За это сообщение автора поблагодарили: Lemming (5).
Старый 12.12.2009, 22:10   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Он не сложный, но возможностей "загнуть" там гораздо больше чем на X++. Вот например что здесь выведется на экран
X++:
            Console.WriteLine(typeof(X<X<T>>).FullName);
я как человек, который знаком с C# слабо, думал, что выведется X<X<int>>, вывелось
X`1[[X`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
], test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]

Я так понимаю, что тут
1. полные именя типов
2. int32 подвергся боксингу
3. `1 означает "от одного аргумента"

Я прав? То есть проблема в реализации преобразования типа тип к строке?

Цитата:

Или здесь

X++:
class Program
    {
        delegate int DelegateType(int valTypeParam, string refTypeParam,
          ref int refParam, out int outParam);
Вот тут я вообще не понял в чем проблема - вроде все работает как надо - как аргументы передаеются так и печатаются.

У меня вывело

Hello valParam:1 refTypeParamne
Hello valParam:2 refTypeParam:two
i:1 j:2 refVar:7 outVar:9

вроде так и должно быть.
Старый 14.12.2009, 08:55   #5  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
То есть проблема в реализации преобразования типа тип к строке?
Здесь на самом деле нет ни какой проблемы. Для generic-ов FullName выводиться по другому и в MSDN об этом говорится. В этих примерах нет никаких ребусов, я просто хотел сказать, что в X++ нет таких синтаксических конструкций и читать его следовательно легче (по крайней мере для меня).

Цитата:
Сообщение от Lemming Посмотреть сообщение
"Любопытство взяло свое", очень жду аналоги методов на Х++
Даже не знаю как это написать на X++. Тут нет ни generic-ов, ни делегатов, ни out параметров, ни значимых типов, которые можно передать по ссылке, да много чего нет... Но я с Вами согласен, что и на X++ можно намудрить, просто здесь для "мудрецов" больше возможностей
Старый 14.12.2009, 18:32   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Здесь на самом деле нет ни какой проблемы. Для generic-ов FullName выводиться по другому и в MSDN об этом говорится. В этих примерах нет никаких ребусов, я просто хотел сказать, что в X++ нет таких синтаксических конструкций и читать его следовательно легче (по крайней мере для меня).
Мне легче читать

X++:
List<String> myFunction()
чем

X++:
List myFunction()
// (а теперь надо посмотреть где этот List создается и что в него можно запихать)
К тому же писать легче, если компилятор контроллирует.
Цитата:
Даже не знаю как это написать на X++. Тут нет ни generic-ов,
без generi ков. Вместо FullName напишите код который будет обходить все вложенные коллекции и выдирать оттуда их ограничения

Цитата:
ни делегатов,
Observer pattern, в трешке был SysDelegate, си также http://blogs.msdn.com/x/archive/2007...-eventing.aspx


Цитата:
ни out параметров,
SysAnyType

Цитата:
ни значимых типов, которые можно передать по ссылке,
То же самое

Цитата:
да много чего нет... Но я с Вами согласен, что и на X++ можно намудрить, просто здесь для "мудрецов" больше возможностей
С моей точки зрения проще 1 раз выучить конструкции, чем потом 1000 раз сравнивать куски кода в которыхз все одинаково кроме одной строчки, чтобы понять чем они отличаются

Последний раз редактировалось belugin; 14.12.2009 в 18:46.
Старый 14.10.2010, 17:36   #7  
shogel is offline
shogel
Участник
MCBMSS
Соотечественники
 
132 / 169 (6) ++++++
Регистрация: 21.02.2007
Адрес: Finland
В MSDN появился раздел "Отличия X++ от C# для чайников".

http://msdn.microsoft.com/en-us/library/cc967357.aspx
__________________
The 50-50-90 rule: Any time you have a 50-50 chance of getting something right, there’s a 90% probability you’ll get it wrong.
За это сообщение автора поблагодарили: AlGol (1), PavelX (1).
Теги
.net, c#, x++, что нового, перспективы

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DeniZone: Copy - paste utility Blog bot DAX Blogs 0 25.06.2009 14:05
DeniZone: x++ and C# compared Blog bot DAX Blogs 0 14.06.2009 20:06
DeniZone: Opening a form on start up of AX Blog bot DAX Blogs 1 04.05.2009 12:36
Dynamics AX: The Future of Dynamics AX and Web 2.0 Blog bot DAX Blogs 0 30.10.2006 22:40

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

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

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