Следите за новостями

Цифра дня

41% казахстанцев столкнулись с инцидентами кибербезопасности

Попробуй F#

Разработанный в Microsoft язык функционального програм­мирования помогает решать задачи, ориентированные на интенсивную обработку данных

26 февраля 2013 09:41, Computerworld.kz
Рубрики: Мир

F# (произносится как «эф шарп») — объектно-ориентированный язык программи­рования, созданный в Microsoft Research в 2004 году. Его автор — Дон Сайм, главный исследователь компании. Основное назначение языка — программиро­вание, ориентированное на данные, и параллельное программирование вкупе с разработкой алгоритмов. Версия F# 3.0, главными особенностями которой стали поддержка крупномасштабных описанных схемами наборов данных и наличие API, увидела свет в прошлом году (тогда же в среде Visual Studio 2012 был обнов­лен компонент Visual F# Tools). В Microsoft обновили сайт Try F#, на нем теперь можно найти много полезного для работы с F#.

Дон Сайм: «Ключевой аспект функционального программирования — снижение обще­го количества ошибок в процессе манипулирования структурами данных»

Старший редактор Infoworld Пол Крил пообщался с Саймом, чтобы узнать о пер­спективах этого языка и поставленных перед ним целях.

- Что такого разработчики смогут делать с помощью F#, на что не спо­собны C#, C++, Visual Basic и прочие языки программирования?

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

- Что именно вы подразумеваете, говоря «функциональный язык»?

Одна из главных характеристик — представление данных, что называется, в неиз­менном виде. Это означает, что у вас имеется некоторое описание данных (на­пример, проект), и это дает вам возможность представить себе общую картину, и задача программирования ориентирована на трансформацию данных, которая в результате дает вам новую картину. Те же Instagram и Excel вполне можно счи­тать функциональными системами — вы просто берете данные и указываете, как эти данные будут меняться.

- В чем главные плюсы F#?

В значительном сокращении времени, необходимого для развертывания анали­тических компонентов. Это можно наблюдать в сфере страхования и финансов, а также в различных областях науки и широком спектре проектов, предполагаю­щих интенсивную обработку данных.

Microsoft продвигает F#, поскольку мы хотим получить опыт высококлассного функционального программирования на наших платформах. Поддержка осу­ществляется тремя путями: развитие инструментария Visual F# Tools, который интегрирован в Visual Studio; доработка языка в рамках Microsoft Research; созда­ние сетевого ресурса Try F#.

- Подойдет ли F# для параллельного программирования?

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

- А что насчет свободной и коммерческой версий продукта?

Если вы работаете на Mac или Linux, то обычно используете версию F# с откры­тым кодом. В Windows же всех устраивают реализация F# от Microsoft и инстру­менты Visual F# для Visual Studio. Само собой, можно использовать и версию с открытым кодом, но так обычно не делают.

- Существуют ли другие инструменты для работы с F#, если не считать Visual Studio?

F# Software Foundation сейчас предлагает инструменты для кроссплатформен­ной интегрированной среды разработки MonoDevelop, еще у них имеется то же самое для Emacs. В принципе у них есть много инструментов, способных более или менее успешно интегрироваться с другими средами разработки.

- Можете привести пример того, что уже создано с использованием F#? Какие-то известные сайты или иные проекты с громкими именами? Вооб­ще, много разработчиков используют этот язык?

Если говорить о количестве пользователей языка — думаю, около 4 тыс. вопро­сов на StackOverflow, посвященных F#, — это весьма убедительный показатель.

Насчет проектов — можно упомянуть одну из рекламных платформ Microsoft, ко­торая фактически является самообучающейся системой и использует F# как язык реализации. То есть пользователь вводит в Bing свой поисковый запрос, а алгоритм определяет, какое именно рекламное объявление показать ему вме­сте с выдачей. Есть и действительно критичные алгоритмы и программы, создан­ные с помощью F#, в основном базовые механизмы анализа данных.

В целом этот язык можно использовать при развертывании больших систем, так как одним из главных плюсов F# является отличная совместимость с системами типа. Net и C#. Вы можете просто интегрировать F# в очень крупную систему, и все получится. На сайте Microsoft есть ряд примеров от Grande Insurance и от од­ного из крупнейших европейских банков, где более 100 человек создают модели финансирования, используя F#.

- Вы воспользовались бы F# для веб-программирования?

Конечно. Можно использовать F# для серверной части проекта. Для клиентской же стороны инструменты Visual F# приспособлены не так хорошо, но всегда есть сторонние средства для работы с F#. Тут я бы советовал обратить внимание на IntelliFactory и их инструмент WebShapper для веб-программирования в расчете на HTML 5.

- Каким образом Microsoft зарабатывает на F#?

Ну тут все прозрачно и довольно очевидно. Смотрите, мы инвестируем в язык, потому что у нас есть платформы, на которых можно на этом языке программи­ровать. Инвестиции в F# делают саму платформу лучше, а доход как раз и полу­чается от продаж платформы.

- Есть что-то еще важное, что бы вы хотели сообщить нам о будущем F#?

Есть очень захватывающий момент, связанный с Try F#. Люди не просто получа­ют возможность научиться работать с F#, но еще и предлагают разные неожи­данные идеи касающиеся интеграции данных в язык F# 3.0. Людям сейчас нужно что-то удобное и гибкое, что поможет им воплотить свои идеи и увидеть, как можно изменить свой процесс программирования. И эти возможности могут рас­кинуться очень широко.

К примеру, мы реализовали в F# 2.0 асинхронное программирование, и этот ме­ханизм перекочевал в C# 5.0. По-моему, это здорово — видеть, как идеи из обла­сти перспективных функциональных языков перекочевывают прямо в самое серд­це индустрии программирования.

Я, как исследователь, искренне считаю, что это огромная удача.