КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ.

Презентация:



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Advertisements

Эффективная разработка отчётов на платформе.NET Александр Федяшов Fast Reports Inc.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Язык программирования C# Дмитрий Сошников
Наследование и полиморфизм. «Быть» или «Иметь» а так же «Точно» или «Как получится»
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
Инкапсуляция полей и констант в языке C# (1) Поле: - инициализация факультативна, однако запрещен доступ к полям и методам того же типа; - поля структуры.
Инструменты Visual Studio для контроля качества и безопасности кода MSSD-3 Александр Яковлев, Microsoft.
Языки программирования Дмитрий Сошников
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
АтрибутыСериализация Лекция 10. Атрибуты Сериализация.
Артем Шабаршин Артем Шабаршин Что нового в среде Visual Studio 11 beta для программистов.
Расширение функциональности с использованием метаданных и аспектно-ориентированного программирования Александр Межов ОАО ЧЭМК
SharePoint Conference Украина, Киев 25 апреля 2012 На что способен InfoPath? Управление контентом SharePoint с помощью InfoPath Бельский Сергей.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.
ArtfulBits inc. aiMinesweeper. Первая в Украине игра для Android. Android custom components Anti-piracy движение Готовые решения для Android-разработчиков.
1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача.
EPAM Systemswww.epam.com EPAM Systemswww.epam.com Программирование на языке C# Основы ООП.
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Транксрипт:

КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ

F# 3.0 Information Rich Programming Артем Присяжнюк Технический директор

О чем мы будем говорить? Введение в F# Язык для решения повседневных проблем F# TypeProviders Будущее развитие

F# - функциональный язык, ориентированный на решение проблем реального мира, позволяет решать сложные задачи с помощью простого кода

Простой код

Простой код Функции как значения abstract class Command { public virtual void Execute(); } abstract class RoverCommand : Command { protected Rover Rover { get; private set; } public RoverCommand(MarsRover rover) { this.Rover = rover; } class BrakeCommand : RoverCommand { public BrakeCommand(Rover rover) : base(rover) { } public override void Execute() { Rover.Accelerate(-1.0); } class TurnLeftCommand : RoverCommand { public TurnLeftCommand(Rover rover) : base(rover) { } public override void Execute() { Rover.Rotate(-5.0); } C# F# type Command = Rover -> unit let BrakeCommand = fun rover -> rover.Accelerate(-1.0) let TurnLeftCommand = fun rover -> rover.Rotate(-5.0 )

Простой код Работа с данными Tuple Swap (Tuple t) { return new Tuple (t.Item2, t.Item1) } ReadOnlyCollection > Rotations (Tuple t) { new ReadOnlyCollection (new Tuple [] { new Tuple (t.Item1,t.Item2,t.Item3); new Tuple (t.Item3,t.Item1,t.Item2); new Tuple (t.Item2,t.Item3,t.Item1); }); } int Reduce (Func f,Tuple t) { return f(t.Item1) + f(t.Item2) + f (t.Item3); } C#

Простой код Работа с данными Tuple Swap (Tuple t) { return new Tuple (t.Item2, t.Item1) } ReadOnlyCollection > Rotations (Tuple t) { new ReadOnlyCollection (new Tuple [] { new Tuple (t.Item1,t.Item2,t.Item3); new Tuple (t.Item3,t.Item1,t.Item2); new Tuple (t.Item2,t.Item3,t.Item1); }); } int Reduce (Func f,Tuple t) { return f(t.Item1) + f(t.Item2) + f (t.Item3); } C# F# let swap (x, y) = (y, x) let rotations (x, y, z) = [ (x, y, z); (z, x, y); (y, z, x) ] let reduce f (x, y, z) = f x + f y + f z

DEMO Работа с последовательностями

F# и немного математики List.map2 (-) x y |> List.map square |> List.map2 (*) weights |> List.sum |> sqrt

F# 3.0 Information Rich Programming

Почему важно? Программирование в сети

Дилемма Мы живем в информационно богатой среде Но языки не имеют развитой инфраструктуры для работы с данными

Проблемы Статическая типизация и внешние источники данных Ручная интеграция генерации кода с процессом сборки, контроля версия и т.д. Нет элегантного пути отражать изменения в схеме данных

С другой стороны… Источники данных часто предоставляют хорошее описания схем данных Статическая типизация должна помогать, а не мешать в работе

Ответ – F# Type Providers

TypeProviders Встроенные SqlDataConnection SqlEntityConnection ODataService WsdlService Сторонние Regex FileSystem Csv Excel JSON XML Registry XAML AppSettings Дальше больше…

Демо 2 TypeProviders и работа с внешними источниками данных

Что получается? Можем работать с структурированными онлайн источниками данных –Нет кодогенерации! Имеем статическую проверку типов! –Можем определить изменения схемы Поддержка инструментов Visual Studio и IntelliSense!

Демо 3 F# + Type Providers + WPF Type Providers – не только данные!

Полное дерево XAML

Итого Можем безопасно работать с несколькими источниками данных используя Type Providers Доступ к разнородным источникам данных с помощью унифицированного интерфейса F# отлично работает для программной логики

Переносимые библиотеки Одна библиотека – любая платформа. Silverlight, Metro.

Что дальше? Облака, облака, облака Azure С помощью Computation expressions можно расширять язык: –async { … }, query { … }, seq { … } – это не фича языка. Это библиотеки которые расширяют язык с помощью Computation expressions –ждем cloud { … }

Спасибо Вопросы?