11.12.2009, 19:12 | #41 |
Moderator
|
Цитата:
Сообщение от gl00mie
Еще раз:
Если эти замечательные глубокомысленные люди знают КАК все это сделать с разумным уровнем гемора для внедренцев, причем в ближайшие лет 5, а не к моменту смерти осла из притчи - хотелось бы чтобы они все это ОЗВУЧИЛИ. Если же все это - их фантазии, то наверное не стоит будоражить публику сказками о не существующей в данный момент технологии. А если она существует, но рассказать они о ней не могут, то нефиг было воду мутить раньше времени... |
|
11.12.2009, 21:41 | #42 |
Участник
|
Цитата:
Сообщение от _scorp_
У меня присутствует следующее опасение от грядущего перехода с X++ на C# :
В C# существуют более сложные конструкции языка чем в X++ и продвинутые C# - еры начнут ими пользоваться. В итоге, читая код, нужно будет сначала разбираться в конструкциях языка, а потом уже в бизнес-логике. Цитата:
p.s. Как красноглазик в данном вопросе , я за систему на едином и современном языке: С#, но только в случае если это действительно грозит снижением скорости разработки исключительно на период погружения в тонкости новой платформы и при сохранении существующего функционала. Последний раз редактировалось Lemming; 11.12.2009 в 21:44. |
|
11.12.2009, 22:27 | #43 |
Участник
|
Он не сложный, но возможностей "загнуть" там гораздо больше чем на 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). |
11.12.2009, 22:43 | #44 |
Moderator
|
Цитата:
belugin: Или например, вас не устраивает быстродействие X++ и надо задействовать всю мощь ngen (а может, какие-то куски написать на C++\IL)
Цитата:
gl00mie: А отличный менеджер памяти с недетерминированной сборкой мусора уже есть в CLR.
Цитата:
belugin: Но я знаю, например, что алгоритмы поиска оптимального расписания используются в ERP, я также читал, что они часто итеративны и вычислительно сложны.
Цитата:
Lemming: Как я понял, с поверхностного ознакомления, C# не настолько сложный язык что бы читая код, каждый раз приходилось в нем разбираться
Цитата:
Lemming: Завидую...читаешь код, например: ЗиК, Налоговых регистров, разноску по ГК, расчет спецификаций, закрытие склада, Обороток в любых модулях(RLedgerSheet*), даже в отладчике, все не так очевидно, что уж там просто исходники.
Последний раз редактировалось Андре; 11.12.2009 в 23:12. |
|
11.12.2009, 23:35 | #45 |
Участник
|
2 _scorp_
Можно было бы конечно попробовать открыть "студию" + google + пару книжек, а после попробовать ответить Вам что будет в результате работы приведенного кода(что выводится я смотрю на практике, ), но честно говоря, лень...В первом случае вы "намудрили" с обобщениями, во втором пытаетесь "напугать" делегатами, возвращаемыми параметрами и вообще страшным кодом. В обоих случаях давайте посмотрим на приведенные листинги с практической точки зрения: перепишите написанное на Х++, а там станет ясно, как часто нам придется сталкиваться с подобным. upd: "Любопытство взяло свое", очень жду аналоги методов на Х++, но спасибо за ребус с refParam 2 Андре Думаю что проблема не в возможностях языка при реализации конкретных задач, проблема в выборе способа и механизмов реализации + документированность...Иными словами, можно было бы еще сильнее намудрить в приведенных мной примерах на том же х++. p.s. Дискуссия рискует свернуть в сторону: "на С# не стоит писать бизнес-логику учетных систем", ибо язык создали слишком мудрый Последний раз редактировалось Lemming; 12.12.2009 в 00:42. |
|
12.12.2009, 00:21 | #46 |
Moderator
|
Цитата:
p.s. Дискуссия рискует свернуть в сторону: "на С# не стоит писать бизнес-логику учетных систем", ибо язык создали слишком мудрый
Без обид, я сам разработчик Axapta, но специфика бизнеса способствует тому, что программировать ERP системы идут далеко не самые способные программисты (почему это происходит - отдельный разговор), а значит язык программирования должен быть максимально простым с минимум подвохов и синтаксических конструкций. Собственно, как я понимаю, по этому принципу и создавались X++, ABAP и язык программирования 1C. |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (1), _scorp_ (1). |
12.12.2009, 21:13 | #47 |
Участник
|
Цитата:
Цитата:
Я давно не слежу за развитием C#, но кажется в него включили lambda-функции, механизмы вывода типов (aka type inference), list comprehention (даже не возьмусь перевести) и еще какие-то элементы функционального программирования.
Цитата:
А код написанный с использованием этих фич гарантированно выносит мозг у разработчиков, ранее не сталкивающихся с функциональными языками программирования.
- как выносит мозг вывод типов? - как выносит мозг LINQ? - как выносят мозг лямбды? ('то те же функции только без имени) Цитата:
Боюсь даже представить реализацию этих алгоритмов на C#. Большие возможности языка при все тех же способностях разработчиков приводят только к более нечитаемому коду. Наверное именно по этому мне очень нравятся Scheme и Erlang с их ограниченным количеством конструкций.
- макросы в схеме - лямбды в схеме - отсутствие вывода типов в схеме да и вообще статического контроля типов Последний раз редактировалось belugin; 12.12.2009 в 21:15. |
|
12.12.2009, 22:10 | #48 |
Участник
|
Цитата:
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 вроде так и должно быть. |
|
12.12.2009, 22:14 | #49 |
Участник
|
А чо за ребус то - он два раза инкрементится и из 5 получается 7 - чего там не правильно то? Если вообще передача по ссылке, то это было и дельфи (или даже в паскале, который все учили в институте)...
|
|
|
За это сообщение автора поблагодарили: Lemming (5). |
12.12.2009, 22:31 | #50 |
Moderator
|
Цитата:
там не List comprehension, a есть linq - можно его условно считать monad comprehension.
X++: IEnumerable<int> numbers = Enumerable.Range(0, 10); var evens = from num in numbers where num % 2 == 0 select num; Цитата:
То, что у нас есть в аксапте втроенный relational table comprehension ведь не сильно затрудняет разработку? Я бы сказал даже, что облегчает.
Цитата:
как выносит мозг LINQ?
Цитата:
особенно просты
- макросы в схеме Цитата:
- лямбды в схеме
Сравни - Haskell: X++: map (\(number)-> 1 + number) [1, 2, 3, 4] X++: (map (lambda (number)
(+ 1 number))
'(1 2 3 4)) |
|
12.12.2009, 22:59 | #51 |
Участник
|
Цитата:
Цитата:
Э... а что это ?
Цитата:
Так и выносит, стоит чуть отойти от стандартных демо-примеров. Тут даже достаточно примеров от _scorp_. И именно поэтому MS развивает F# как экспериментальный язык программирования, а Гвидо грозится выкинуть lambda-функции из Python.
на X++ нельзя написать то же самое с использованием классов? Уверяю можно и получится непонятнее, потому, что будут классы с их именами и весь код будет больше. Он грозился, но не выкинул, как я помню. И list comprehension оставил. Экспериментальный язык программирования в составе VS2010 Цитата:
А ими, в общем то, особо и не рекомендуют пользоваться до тех пор пока можно обойтись без них. Зато разобравшись с ними один раз, можно создавать удобный для себя DSL.
Цитата:
А чем они неудобнее люмбд в haskell?
|
|
14.12.2009, 08:55 | #52 |
Участник
|
Здесь на самом деле нет ни какой проблемы. Для generic-ов FullName выводиться по другому и в MSDN об этом говорится. В этих примерах нет никаких ребусов, я просто хотел сказать, что в X++ нет таких синтаксических конструкций и читать его следовательно легче (по крайней мере для меня).
Даже не знаю как это написать на X++. Тут нет ни generic-ов, ни делегатов, ни out параметров, ни значимых типов, которые можно передать по ссылке, да много чего нет... Но я с Вами согласен, что и на X++ можно намудрить, просто здесь для "мудрецов" больше возможностей |
|
14.12.2009, 18:32 | #53 |
Участник
|
Цитата:
Сообщение от _scorp_
Здесь на самом деле нет ни какой проблемы. Для generic-ов FullName выводиться по другому и в MSDN об этом говорится. В этих примерах нет никаких ребусов, я просто хотел сказать, что в X++ нет таких синтаксических конструкций и читать его следовательно легче (по крайней мере для меня).
X++: List<String> myFunction() X++: List myFunction()
// (а теперь надо посмотреть где этот List создается и что в него можно запихать) Цитата:
Даже не знаю как это написать на X++. Тут нет ни generic-ов,
Цитата:
ни делегатов,
Цитата:
ни out параметров,
Цитата:
ни значимых типов, которые можно передать по ссылке,
Цитата:
да много чего нет... Но я с Вами согласен, что и на X++ можно намудрить, просто здесь для "мудрецов" больше возможностей
Последний раз редактировалось belugin; 14.12.2009 в 18:46. |
|
14.10.2010, 17:36 | #54 |
Участник
|
В 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). |
14.10.2010, 18:41 | #55 |
Участник
|
Появился он относительно давно, см. Dynamics AX 2009 - X++, C# Comparison - тема датирована февралем 2009-го. Правда, с тех пор, надо заметить, раздел был существенно расширен.
|
|
07.12.2010, 14:39 | #56 |
MCT
|
__________________
Axapta book for developer |
|
|
За это сообщение автора поблагодарили: ibc (1), Poleax (1). |
07.12.2010, 18:50 | #57 |
Участник
|
Если бы Apple стала делать ERP, как бы эта система она выглядела?
|
|
08.12.2010, 11:45 | #58 |
MCT
|
Мое имхо:
1 Не стоит трогать X++. Да редактор напоминает богомерзкий блокнот, да нет solution explorer, да все уныло, да это было сделано, когда подавляющее число разработчиков ходило в детский сад и так далее. Но он работает! Его с лихвой хватит на те бизнес задачи, которые уже реализованы. 2 Бюджет, на мой взгляд, повторюсь еще раз, я бы пустил на расширение функционала, на красивый дизайн и удобство пользователя. Не видят пользователи окно редактора X++ и все тут. 3 Опустил бы цены на лицензии, как это было сделано с навиком.
__________________
Axapta book for developer |
|
08.12.2010, 13:08 | #59 |
Участник
|
|
|
08.12.2010, 14:01 | #60 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: MikeR (3). |
Теги |
.net, c#, x++, что нового, перспективы |
|
Похожие темы | ||||
Тема | Ответов | |||
DeniZone: Copy - paste utility | 0 | |||
DeniZone: x++ and C# compared | 0 | |||
DeniZone: Opening a form on start up of AX | 1 | |||
Dynamics AX: The Future of Dynamics AX and Web 2.0 | 0 |
|