Попробуй F#
Разработанный в Microsoft язык функционального программирования помогает решать задачи, ориентированные на интенсивную обработку данных
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. По-моему, это здорово — видеть, как идеи из области перспективных функциональных языков перекочевывают прямо в самое сердце индустрии программирования.
Я, как исследователь, искренне считаю, что это огромная удача.