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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2009, 21:13   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Андре Посмотреть сообщение
Ну, не такой уж он и отличный. Я его, правда, еще во времена первого фреймворка тестировал, может что-то изменилось, но тогда он очень сильно уступал java-вскому.
Во-первых наверняка изменилось. Во-вторых, важнее насколько он быстрее X++


Цитата:
Я давно не слежу за развитием C#, но кажется в него включили lambda-функции, механизмы вывода типов (aka type inference), list comprehention (даже не возьмусь перевести) и еще какие-то элементы функционального программирования.
там не List comprehension, a есть linq - можно его условно считать monad comprehension. То, что у нас есть в аксапте втроенный relational table comprehension ведь не сильно затрудняет разработку? Я бы сказал даже, что облегчает.

Цитата:
А код написанный с использованием этих фич гарантированно выносит мозг у разработчиков, ранее не сталкивающихся с функциональными языками программирования.
... и с SQL запросами.

- как выносит мозг вывод типов?
- как выносит мозг LINQ?
- как выносят мозг лямбды? ('то те же функции только без имени)

Цитата:
Боюсь даже представить реализацию этих алгоритмов на C#. Большие возможности языка при все тех же способностях разработчиков приводят только к более нечитаемому коду. Наверное именно по этому мне очень нравятся Scheme и Erlang с их ограниченным количеством конструкций.
особенно просты
- макросы в схеме
- лямбды в схеме
- отсутствие вывода типов в схеме да и вообще статического контроля типов

Последний раз редактировалось belugin; 12.12.2009 в 21:15.
Старый 12.12.2009, 22:31   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
там не List comprehension, a есть linq - можно его условно считать monad comprehension.
А вот это linq ?

X++:
IEnumerable<int> numbers = Enumerable.Range(0, 10);
var evens = from num in numbers where num % 2 == 0 select num;
То есть, что такая возможность есть я знаю, а вот к чему она там относится - нет.

Цитата:
То, что у нас есть в аксапте втроенный relational table comprehension ведь не сильно затрудняет разработку? Я бы сказал даже, что облегчает.
Э... а что это ?

Цитата:
как выносит мозг LINQ?
Так и выносит, стоит чуть отойти от стандартных демо-примеров. Тут даже достаточно примеров от _scorp_. И именно поэтому MS развивает F# как экспериментальный язык программирования, а Гвидо грозится выкинуть lambda-функции из Python.

Цитата:
особенно просты
- макросы в схеме
А ими, в общем то, особо и не рекомендуют пользоваться до тех пор пока можно обойтись без них. Зато разобравшись с ними один раз, можно создавать удобный для себя DSL.

Цитата:
- лямбды в схеме
А чем они неудобнее люмбд в haskell?

Сравни - Haskell:

X++:
map (\(number)-> 1 + number) [1, 2, 3, 4]
и Scheme:

X++:
(map (lambda (number)
       (+ 1 number))
     '(1 2 3 4))
На мой взгляд одно и то же. По моему сложны лямбды, как логическая конструкция (а также ее производные - например, замыкания), а уж поняв эту конструкцию можно применять ее в любом языке программирования. И в Scheme они ничуть не сложнее чем в Haskell.
Старый 12.12.2009, 22:59   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Андре Посмотреть сообщение
А вот это linq ?

X++:
IEnumerable<int> numbers = Enumerable.Range(0, 10);
var evens = from num in numbers where num % 2 == 0 select num;
То есть, что такая возможность есть я знаю, а вот к чему она там относится - нет.
Ну оно не только к спискам относится, а вообще ко всему. Включая LINQ2SQL

Цитата:
Э... а что это ?
Я имел ввиду встроенный SQL

Цитата:
Так и выносит, стоит чуть отойти от стандартных демо-примеров. Тут даже достаточно примеров от _scorp_. И именно поэтому MS развивает F# как экспериментальный язык программирования, а Гвидо грозится выкинуть lambda-функции из Python.
что конкретно непонятно в первом и втором примере?

на X++ нельзя написать то же самое с использованием классов? Уверяю можно и получится непонятнее, потому, что будут классы с их именами и весь код будет больше.

Он грозился, но не выкинул, как я помню. И list comprehension оставил.

Экспериментальный язык программирования в составе VS2010

Цитата:
А ими, в общем то, особо и не рекомендуют пользоваться до тех пор пока можно обойтись без них. Зато разобравшись с ними один раз, можно создавать удобный для себя DSL.
Ну возможность отстрелить себе ногу больше...

Цитата:
А чем они неудобнее люмбд в haskell?
Мы ж вроде признали что лямбды в нашем контексте - зло?
Теги
.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, время: 08:20.