|
![]() |
#1 |
Участник
|
В этой ветке слились три фичи:
1. Генерация MSIL из X++ - о которой на channel 9 2. VS как IDE для Ax, о которой говорил Денис 3. Написание бизнес логики на .NET языках - про которую спрашивали у Татаринова. По поводу последней могу сказать, что знакомые часто спрашивают, как сделать ту или иную техническую штуку на аксапте - скачать файл из интернета или там последить за папкой, что туда валится или еще что-нибудь. Сейчас, наиболее удобно послать их в MSDN, чтобы они посмотрели на код на C# и переписали его на аксапту. Теперь представьте, что ненадо ничего переписывать - если вы пишете фрагмент бизнес логики на С#, потом просто вставляете пример из MSDN и подправляете. Во-вторых, представьте, что вы разработчик некоего глобального модуля на аксапте и вам надо некоторый его кусок не показывать пользователям, чтоб сохранить интеллектуальную собственность. Или например, вас не устраивает быстродействие X++ и надо задействовать всю мощь ngen (а может, какие-то куски написать на C++\IL) Или у вас есть уже готовая вычислительная библиотека на F# и вы хотите ее тесно интегрировать в приложение. Вобщем, хорошая интеграция с возможностями .NET может быть полезна. |
|
![]() |
#2 |
Moderator
|
Цитата:
Сообщение от belugin
![]() В этой ветке слились три фичи:
По поводу последней могу сказать, что знакомые часто спрашивают, как сделать ту или иную техническую штуку на аксапте - скачать файл из интернета или там последить за папкой, что туда валится или еще что-нибудь. Сейчас, наиболее удобно послать их в MSDN, чтобы они посмотрели на код на C# и переписали его на аксапту. Теперь представьте, что ненадо ничего переписывать - если вы пишете фрагмент бизнес логики на С#, потом просто вставляете пример из MSDN и подправляете. Цитата:
Цитата:
Цитата:
Сообщение от belugin
![]() Или у вас есть уже готовая вычислительная библиотека на F# и вы хотите ее тесно интегрировать в приложение.
Вобщем, хорошая интеграция с возможностями .NET может быть полезна. |
|
![]() |
#3 |
Участник
|
[QUOTE=fed;215508]Дык для этого вроде бы вызов внешних сборок есть. Его конечно можно бы и получше интегировать, с этим соглашусь, но не очень понятно, зачем для этого внутри аксапты C# держать ?
[QUOTE] Внешние сборки они конечно хороши, но вот только того, как их хорошо интегрируешь, то получатся внутренние сборки. Цитата:
Некий глобальный модуль на Аксапте, наверняка будет содержать кастомизации базовых классов, которые, если верить Татаринову, переписывать не будут. Так что придется всю логику на X++ писать. А если что-то совсем сбоку - дык может проще его отдельно на чем угодно написать и потом через AIF заинтегрировать ?
Цитата:
А чего такого в Аксапте можно написать чтобы ему вся мощь ngen понадобилась ? Дифуры решать ? Цитата:
Хорошо бы привести реальные жизненные примеры потребности ERP-проектов в тяжелых вычислениях. Да еще и настолько интегрированные с Аксаптой, что их надо внутри приложения держать, а сбоку написать было бы нельзя...
Но я знаю, например, что алгоритмы поиска оптимального расписания используются в ERP, я также читал, что они часто итеративны и вычислительно сложны. Кстати, а ты не мерял, что является узким местом, например, при закрытии скалада в 2009 - насколько грузится АОС, насколько SQL сервер? |
|
![]() |
#4 |
Moderator
|
Цитата:
belugin: Или например, вас не устраивает быстродействие X++ и надо задействовать всю мощь ngen (а может, какие-то куски написать на C++\IL)
Цитата:
gl00mie: А отличный менеджер памяти с недетерминированной сборкой мусора уже есть в CLR.
Цитата:
belugin: Но я знаю, например, что алгоритмы поиска оптимального расписания используются в ERP, я также читал, что они часто итеративны и вычислительно сложны.
Цитата:
Lemming: Как я понял, с поверхностного ознакомления, C# не настолько сложный язык что бы читая код, каждый раз приходилось в нем разбираться
Цитата:
Lemming: Завидую...читаешь код, например: ЗиК, Налоговых регистров, разноску по ГК, расчет спецификаций, закрытие склада, Обороток в любых модулях(RLedgerSheet*), даже в отладчике, все не так очевидно, что уж там просто исходники.
Последний раз редактировалось Андре; 11.12.2009 в 23:12. |
|
![]() |
#5 |
Участник
|
2 _scorp_
Можно было бы конечно попробовать открыть "студию" + google + пару книжек, а после попробовать ответить Вам что будет в результате работы приведенного кода(что выводится я смотрю на практике, ![]() upd: "Любопытство взяло свое", очень жду аналоги методов на Х++, но спасибо за ребус с refParam ![]() 2 Андре Думаю что проблема не в возможностях языка при реализации конкретных задач, проблема в выборе способа и механизмов реализации + документированность...Иными словами, можно было бы еще сильнее намудрить в приведенных мной примерах на том же х++. p.s. Дискуссия рискует свернуть в сторону: "на С# не стоит писать бизнес-логику учетных систем", ибо язык создали слишком мудрый ![]() Последний раз редактировалось Lemming; 12.12.2009 в 00:42. |
|
![]() |
#6 |
Moderator
|
Цитата:
p.s. Дискуссия рискует свернуть в сторону: "на С# не стоит писать бизнес-логику учетных систем", ибо язык создали слишком мудрый
Без обид, я сам разработчик Axapta, но специфика бизнеса способствует тому, что программировать ERP системы идут далеко не самые способные программисты (почему это происходит - отдельный разговор), а значит язык программирования должен быть максимально простым с минимум подвохов и синтаксических конструкций. Собственно, как я понимаю, по этому принципу и создавались X++, ABAP и язык программирования 1C. |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (1), _scorp_ (1). |
![]() |
#7 |
Участник
|
А чо за ребус то - он два раза инкрементится и из 5 получается 7 - чего там не правильно то? Если вообще передача по ссылке, то это было и дельфи (или даже в паскале, который все учили в институте)...
|
|
|
За это сообщение автора поблагодарили: Lemming (5). |
![]() |
#8 |
Участник
|
Цитата:
Цитата:
Я давно не слежу за развитием C#, но кажется в него включили lambda-функции, механизмы вывода типов (aka type inference), list comprehention (даже не возьмусь перевести) и еще какие-то элементы функционального программирования.
Цитата:
А код написанный с использованием этих фич гарантированно выносит мозг у разработчиков, ранее не сталкивающихся с функциональными языками программирования.
- как выносит мозг вывод типов? - как выносит мозг LINQ? - как выносят мозг лямбды? ('то те же функции только без имени) Цитата:
Боюсь даже представить реализацию этих алгоритмов на C#. Большие возможности языка при все тех же способностях разработчиков приводят только к более нечитаемому коду. Наверное именно по этому мне очень нравятся Scheme и Erlang с их ограниченным количеством конструкций.
- макросы в схеме ![]() - лямбды в схеме - отсутствие вывода типов в схеме да и вообще статического контроля типов Последний раз редактировалось belugin; 12.12.2009 в 21:15. |
|
![]() |
#9 |
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)) |
|
![]() |
#10 |
Участник
|
Цитата:
Цитата:
Э... а что это ?
Цитата:
Так и выносит, стоит чуть отойти от стандартных демо-примеров. Тут даже достаточно примеров от _scorp_. И именно поэтому MS развивает F# как экспериментальный язык программирования, а Гвидо грозится выкинуть lambda-функции из Python.
на X++ нельзя написать то же самое с использованием классов? Уверяю можно и получится непонятнее, потому, что будут классы с их именами и весь код будет больше. Он грозился, но не выкинул, как я помню. И list comprehension оставил. Экспериментальный язык программирования в составе VS2010 Цитата:
А ими, в общем то, особо и не рекомендуют пользоваться до тех пор пока можно обойтись без них. Зато разобравшись с ними один раз, можно создавать удобный для себя DSL.
Цитата:
А чем они неудобнее люмбд в haskell?
![]() |
|
![]() |
#11 |
Участник
|
Появился он относительно давно, см. Dynamics AX 2009 - X++, C# Comparison - тема датирована февралем 2009-го. Правда, с тех пор, надо заметить, раздел был существенно расширен.
|
|
![]() |
#12 |
MCT
|
__________________
Axapta book for developer |
|
|
За это сообщение автора поблагодарили: ibc (1), Poleax (1). |
![]() |
#13 |
Участник
|
Если бы Apple стала делать ERP, как бы эта система она выглядела?
|
|
![]() |
#14 |
MCT
|
Мое имхо:
1 Не стоит трогать X++. Да редактор напоминает богомерзкий блокнот, да нет solution explorer, да все уныло, да это было сделано, когда подавляющее число разработчиков ходило в детский сад и так далее. Но он работает! Его с лихвой хватит на те бизнес задачи, которые уже реализованы. 2 Бюджет, на мой взгляд, повторюсь еще раз, я бы пустил на расширение функционала, на красивый дизайн и удобство пользователя. Не видят пользователи окно редактора X++ и все тут. 3 Опустил бы цены на лицензии, как это было сделано с навиком.
__________________
Axapta book for developer |
|
![]() |
#15 |
Участник
|
Цитата:
Сообщение от MikeR
![]() Мое имхо:
1 Не стоит трогать X++. Да редактор напоминает богомерзкий блокнот, да нет solution explorer, да все уныло, да это было сделано, когда подавляющее число разработчиков ходило в детский сад и так далее. Но он работает! Его с лихвой хватит на те бизнес задачи, которые уже реализованы. Цитата:
2 я бы пустил на расширение функционала, на красивый дизайн и удобство пользователя. Не видят пользователи окно редактора X++ и все тут.
|
|
![]() |
#16 |
Участник
|
|
|
![]() |
#17 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: MikeR (3). |
![]() |
#18 |
Участник
|
![]()
Ну вот, то, о чем говорили менее полутора лет назад как о теории и экспериментальных изысканиях, стало реальностью
![]() Цитата:
Сообщение от Blog bot
![]() Источник: http://blogs.msdn.com/b/mfp/archive/...-language.aspx
In Dynamics AX 2012 we are compiling X++ code to the CLR. At compile time we generate an XML representation of the pcode, which we can convert into IL. At run-time we will be executing the IL for batch jobs, service calls and RunAs constructs. (RunAs is a new method allowing you to request the X++ logic to be executed as IL.). Peter demonstrated how the performance characteristics are vastly different particular in situations with extremely many objects or extremely many methods calls. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#19 |
Moderator
|
Цитата:
![]() Ооо - почитал твиттер Брендона: 1. Отладка на сервере возможна только через VS Debugger 2. Чтобы отлаживаться, придется включать App Domain с тормозами. 3. Если у тебя на сервере работает несколько разработчиков - опять таки только App Domain с hot-swapping. Ооо - как новую систему полюбят все внедренцы ! Ведь теперь нельзя будет отлаживаться на боевом сервере. Придется мучительно допрашивать пользователей о том, что же они такого отмочили и потом пытаться воспроизвести на тестовом приложении. Разумеется с подъемом бэкапа БД. Чуствую - после выхода 6ки, придется на полгодика разрешить мат на форуме... Последний раз редактировалось fed; 20.01.2011 в 07:00. |
|
|
За это сообщение автора поблагодарили: BOAL (1), blokva (1), db (1). |
![]() |
#20 |
Administrator
|
Обсуждение отладки на рабочей базе вынесено в отдельную тему Отладка на рабочей базе
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
.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 |
|