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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.11.2010, 11:56   #1  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от Андре Посмотреть сообщение
Да, это scheme, но после изучения основ будет проще перейти на любой другой язык программирования, если вас пугает большое количество скобочек

По поводу практического применения в Аксапте...
Скобочки не пугают, я тут Clojure(диалект Lisp'a) ковыряю, по поводу ссылки на книгу, увы теорию на английском языке читать не готов, тут на русском то некоторые вещи с первого раза не понять Суть вопроса про функциональные языки была в том, действительно они столь хороши и универсальны? Суровые Lisp программисты говорят что на нем можно написать абсолютно что угодно, но вот глядя на тот же Clojure мне кажется что он менее выразителен для тех задач, которые привыкли решать участники этого форума. Во всяком случае как по мне, для описания бизнес логики ООП парадигма более подходит, нежели функциональная.


Цитата:
Сообщение от kashperuk Посмотреть сообщение
Ну, чтобы Маззи хотя бы чуть-чуть успокоить (кстати, он правила нарушил, маты запрещены, насколько я помню - кто-нить из модераторов выпишите-ка ему предупреждение и read-only на 3 дня), ссылочка:
http://itc.ua/news/microsoft_budet_i...verlight_49615
Зато от этой ссылочки сильно заерзали на стульях те, кто вложился в SilverLight как в платформу для десктоп А вообще да, Микрософт в интернете напоминает Крыловскую "Мартышка и очки".
Старый 03.11.2010, 12:38   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
по поводу ссылки на книгу, увы теорию на английском языке читать не готов, тут на русском то некоторые вещи с первого раза не понять
Есть перевод на русский, могу выслать. Теории, кстати там не так много - гораздо больше разобранных упражнений, задача которых, в общем то, сводится к двум вещам - научить студента мыслить рекурсивно и донести идею, что функция это такой же тип данных как и все остальное.

Исходя из поставленных целей подобраны упражнения. Как правило это код, который, как правило, уже решен в стандартных библиотеках - поиск максимума в списке, объединение списков, поиск по дереву и так далее, но реализовав только реализовав все эти алгоритмы самостоятельно и рекурсивно я почувствовал себя достаточно уверенно, чтобы двигаться дальше.

Цитата:
Скобочки не пугают, я тут Clojure(диалект Lisp'a) ковыряю
А в Clojure, кстати, разработчик очень сильно уменьшил количество скобочек (по сравнению с классическим лиспом), а часть оставшихся заменил на квадратные скобки.

Цитата:
действительно они столь хороши и универсальны?
Нет, конечно - серебрянной пули нет и у каждого инструмента есть своя ниша. Другое дело, что чисто функциональных языков не так уж и много и тот же Lisp (и тем более Closure) им не является.

Гораздо важнее, на мой взгляд, что элементы декларативного программирования активно проникают в mainstream и это основной положительный выхлоп волны популярности декларативного программирования, которую мы наблюдаем последнее время.
Старый 03.11.2010, 12:42   #3  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от Андре Посмотреть сообщение
донести идею, что функция это такой же тип данных как и все остальное.
Ты порвал мое представление о мире
Старый 03.11.2010, 13:03   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Не очень понял, чем вызвана улыбка. Вообще я говорил вот про это (на примере Haskell). Или ты имел в виду, что это очевидная вещь?
Старый 03.11.2010, 17:44   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
:)
Цитата:
Сообщение от Lemming Посмотреть сообщение
Во всяком случае как по мне, для описания бизнес логики ООП парадигма более подходит, нежели функциональная.
С моей точки зрения, SQL, например, это довольно ограниченный функциональный язык - запросы собраются из чистых функций над отношениями.

F#, насколько я знаю, используется в финансовой сфере для всяких финансовых вычислений.

Вот тут обсуждение на stackoverflow что там есть полезного. Например, возможность типизировать переменные единицами измерений - при попытке сложить квадратные метры и секунды будет ошибка компиляции.

Для мена он интересен в качестве скриптового языка - там убрано много ненужных элементов (вплоть до фигурных скобок) - так что код получается коротким, но при этом там строгая статическая типизация - так что студия подсказывает, где ошибка.

Так же F# - это такой же дотнет язык как и все - на нем можно написать сборку, использовать чужой код, он идет в комплекте с VS2010, так что если надо сделать сложный быстрый расчет, то можно его подключить к AX.

Цитата:
Зато от этой ссылочки сильно заерзали на стульях те, кто вложился в SilverLight как в платформу для десктоп А вообще да, Микрософт в интернете напоминает Крыловскую "Мартышка и очки".
Стратегия Microsoft - Silverlight и HTML5

PS. Вообще, посты, которые не относятся к аксапте, я помечаю спецтегом Non-Axaptic. И вообще я ожидал, что предыдущий пост вызовет реакцию здесь а не этот.

PPS. А PageRank я просто даже не озаботился
Старый 03.11.2010, 18:27   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
PS. Вообще, посты, которые не относятся к аксапте, я помечаю спецтегом Non-Axaptic. И вообще я ожидал, что предыдущий пост вызовет реакцию здесь а не этот.
Лучше не вводить ключевое слово, содержащее Axapt
В том числе и по нему, мы отбираем
__________________
полезное на axForum, github, vk, coub.
Старый 06.11.2010, 03:14   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Спасибо за ссылки, по-моему, очень занимательная презентация, заставляет о многом задуматься... К слову, качать вариант high, как оказалось, смысла не имеет: отличается от low он не качеством картинки, а тем, что слева рядом с записью презентации и примеров кода есть небольшое окошко, где показывают докладчика, как он ходит по сцене, жестикулирует, переключает кадры презентации, однако, из-за существенно рассинхронизации звука и видео (!) смотреть на него становится совсем не интересно.
Цитата:
Сообщение от belugin Посмотреть сообщение
F# для мена он интересен в качестве скриптового языка - там убрано много ненужных элементов, но при этом там строгая статическая типизация - так что студия подсказывает, где ошибка.
К слову, для тех, кто не осилил видео, презентация как раз и посвящена, можно сказать, строгой типизации. Вот вкратце ее пересказ.

Итак, тема доклада: Будущее F#: данные и сервисы у вас под рукой в строго типизированном виде (The Future of F#: Data and Services at your Finger Tips, Strongly Typed).
Докладчик: Дон Сайм (Don Syme), некий высокопоставленный исследователь из Microsoft Research
В самом начале докладчик делает многообещающее заявление, что, мол, то, чему посвящен доклад, представляется для него в определенном смысле более важным, чем дженерики в .NET, поддержка на уровне языка программирования асинхронных вычилений (asynchronous programming support), над которыми он работает, и даже в чем-то вжнее, чем F# в целом.
Затем он выдвигает следующие утверждения:
  • окружающий мир богат разнообразной информацией, и чем дальше, тем больше мы нуждаемся в компьютерах и информационных технологиях, чтобы справляться с этим разнообразием;
  • современные приложения работают с самой разнообразной информацией;
  • наши языки программирования, однако, не предоставляют простых возможностей для работы со всей этой разнообразной информацией: вы не найдете в спецификации языка никаких конкретных описаний типов, кроме, может, примитивных типов и строк. Конечно, есть .NET Framework, но и она по-своему скудна: там есть замечательные средства для работы с данными, такими как текст, бинарные данные, XML, но все это - очень общие типы данных.
  • мы можем это исправить. К примеру, отчасти можно решить эту проблему за счет использования языков с динамической типизацией, правда, во многом оставаясь без поддержки инструментальных средств. Но как быть с языками со статической типизацией? Тут один из путей - использование ключевого слова dynamic в том же C#, другой весьма распространенный путь - использование автоматически генерируемого кода.
Далее, делается заявление, что будущее F# как раз и состоит в исправлении этого несоответствия или в предоставлении некоторых интерфейсов, к которым разработчики смогут подключить свои компоненты, чтобы исправить это несоответствие. Для этого будет использовать волшебный (sic!) инструмент под названием Type Providers.
Для примера приводится задача построения объектной модели для строго типизированной работы с химическими элементами. Оставив в стороне этап проектирования, внимание концентрируется на том, что помимо самой объектной модели понадобится также ее информационное наполнение: данные об элементах, их названиях, обозначении, атомной массе, валентности, etc. Затем заказчику может понадобиться информация об изотопах: их наличии и характеристиках; потом он может захотеть иметь информацию о том, кто открыл тот или иной химический элемент - и вам понадобиться спроектировать и реализовать классы для представления информации о соответствующих людях. И вот пока вы всем этим занимаетесь, приходит кто-то и говорит: в моем языке программирования уже есть готовые интегрированные источники данных для работы с химическими элементами, потому что я работаю с языком, где кроме строгой типизации также реализован легкий доступ к разнообразной информации - в отличие от ваших языков, где все приходится программировать "с нуля" в виде классов, их свойств, методов и т.д. А у меня, мол, все под рукой - большая часть накопленных человечеством знаний - в виде источников данных и готовых строго типизированных моделей для работы с ними (и в примере на самом деле подключается некий волшебный источник дынных, предоставляющий разнообразную строго типизированную информацию о химических элементах).
За счет строгой типизации поддерживаются все возможности среды разработки: IntelliSence, строгая проверка на этапе компиляции, etc. До того, как вы запустите код на выполнение, компилятор может подсказать вам, что вы, к примеру, некорректно использовали обращение к тому или иному свойству объекта в LINQ-запросе, и вы поймете, что вам нужно скорректировать запрос, скажем, добавив дополнительную фильтрацию данных.
Какие обобщения можно сделать на основе примера с химическими элементами? При работе в информационно насыщенной среде мы имеем дело с:
  • организованными данными;
  • огромным числом различных "типов";
  • взаимосвязанными (interlinked) данными: от химических элементов мы можем перейти к информации о том, кто их открыл, оттуда - к географиеской информации о месте их проживания и т.д.;
  • в качестве источников информации зачастую используется Wikipedia и тому подобные ресурсы (DBpedia, WolframAlpha, FreeBase, etc)
Извините, но на все это генераторов кода не напасешься.
Волшебство предлагаемого решения в фундаментальном изменении подхода к языку, к архитектуре компилятора и к тому, как мы думаем о языках программирования. Вместо импортирования лишь .NET-сборок, в которых определено конечное относительно небольшое множество типов, мы можем подключить к компилятору механизм предоставления типов (включая проверку типов на этапе компиляции), который за счет т.н. type providers откроет для нас огромное множество типов из окружающего мира: данные веб-сервисов и веб-сайтов, из корпоративных информационных систем, с локальной машины и т.п. Эти type providers могут специализироваться как на работе с каким-то определенным источником данных, так и на работе с определенным типом данных. Таким образом, различные источники данных оказываются интегрированными в контекст разработки программ за счет использования архитектуры адаптеров (провайдеров), отображающих данные на типы языка программирования со строгой статической типизацией.
Что вкратце обеспечивают Type Prividers:
  • данные и сервисы - у вас под рукой;
  • масштабируемость (буквально миллионы типов) - за счет "ленивой" подгрузки типов
  • удобство навигации, поддержку IntelliSence;
  • интеграцию с LINQ-запросами;
  • отсутствие необходимости в явном использовании генераторов кода
Использование того или иного провайдера не отличается от использования обычной .NET-сборки: вам нужно лишь добавить его в список ссылок (references). При этом провайдеры весьма компактны, к примеру, тестовый Microsoft.Management.TypeProvider.dll занимает всего 93kb (около 130 строк кода, правда, в тестовом провайдере поддерживается работа лишь на локальной машине) - и открывает вам полный доступ к миру WMI с его сотнями и тысячами классов, событий и т.д. От провайдера требуется реализация простого и лаконичного интерфейса:
PHP код:
public interface ITypeProvider
{
    
Type GetType(string nameBindingFlags bindingAttr);
    
Expression GetInvokerExpression(MethodBase syntheticMethodBase,
                                    
ParameterExpression[] parameters);
    
event System.EventHandler Invalidate;
    
Type[] GetTypes();

Код провайдера может быть очень простым и занимать около сотни или больше строк; основная его задача - сопоставление информации с системой типов .NET. Архитектура провайдеров открыта, все необходимые руководства и примеры кода будут предоставлены, так что самостоятельное их написание не должно составить труда.
В заключении в качестве примера приводится Windows Azure Marketplace: Data Market, где с одной стороны, могут быть представлены те, кто собирает и систематизирует данные, а с другой - те, кому нужные те или иные данные в структурированном виде, подходящем для автоматизированного использования. Часть данных здесь доступна бесплатно, а для определенных источников может потребоваться подписание соответствующего соглашения и использования определенных учетных данных (credentials) при доступе к источнику информации. В примере набросан код, получающий доступ к одному из источников данных, разбитых в первом приближении на следующие категории:
  • здоровье и здоровый образ жизни;
  • недвижимость;
  • перевозки и навигация;
  • погода;
  • розничная торговля;
  • сервисы, привязанные к местоположению (location based services);
  • статистика;
  • фильмы и развлечения;
  • и др.
Подход с использованием провайдеров типов в перспективе обеспечивает возможность строго типизированной, подразумевающей расширяемость и открытость, не требующей явной генерации кода работы с данными:
  • веб-ресурсов
  • WMI, Active Directory
  • веб-сервисов
  • CRM-систем
  • data markets
  • электронных таблиц (если вы предполагаете, что они будут иметь строго определенную структуру)
  • социальных сетей
  • баз данных SQL
  • XML
  • и др.
Вопрос доступа к данным во многом стал стеной, отделяющей разработчиков, использующих строго типизированные языки программирования, и данные, к которым должны получать доступ приложения, и будущее F# в том, чтобы разрушить эту стену.
За это сообщение автора поблагодарили: mazzy (10), Андре (9), belugin (5), Lemming (5), S.Kuskov (5).
Старый 06.11.2010, 13:45   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В заключении в качестве примера приводится Windows Azure Marketplace: Data Market, где с одной стороны, могут быть представлены те, кто собирает и систематизирует данные, а с другой - те, кому нужные те или иные данные в структурированном
Кстати, там уже есть бесплатные данные правительства США - докладчик брал данные о преступлениях в разных городах и тут же их визуализировал
Теги
f#, type providers, функциональное программирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axcoder: Book review: “Microsoft Dynamics AX 2009 Programming: Getting Started” Blog bot DAX Blogs 1 13.08.2010 16:32
AXDevCenter Headlines: See the Future of X++ and .NET Blog bot DAX Blogs 3 05.04.2010 10:37
axcoder: Search for C# Blog bot DAX Blogs 0 22.05.2009 14:05
axcoder: Book review: “Quality Assurance for Dynamics AX-Based ERP Solutions” Blog bot DAX Blogs 0 27.04.2008 18:07
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, время: 12:35.