F#

Dec. 18th, 2011 04:32 am
mstone: (Default)
[personal profile] mstone
Третьего дня у нас в Бинге проездом был Дон Сайм, рассказывал про F#. Я, естественно, не мог не сходить вживую послушать евангелие от производителя.

Дон пополнил ряд "человеков из телевизора". До него ряд пополнялся, в основном, в заводской столовке. Работаю я, правда, не в Редмонде, а в Белвью, в плане селебритей у нас тут и труба пониже, и дым пожиже. Навскидку можно вспомнить ченнел-найновского... хм... ну, скажем, популяризатора Брайана Бекмана, и красиво возвышающуюся над стайкой китайцев Алёну_цпп.

На презентацию пришло на удивление мало народу, человек сорок. За пять минут до начала, когда я впопыхах прибежал, думая, что уже, небось, все стулья заняты и придётся сидеть на фонарном столбе, на весь конференц-рум было человек десять, не считая докладчика. С явным перекосом в сторону русскоязычного населения. Два сидящих рядом паренька оказались свежеприехавшими из московского Дойче. Дисциплинированные люди, уже на права сдают. Мы с Аней тут, наверное, единственные из понаехавших, кто полгода забивал болт и ездил по российским правам.

Выяснилось, что почти все присутствующие уже имеют опыт общения с F#, поэтому прелюдия и sales pitch были опущены и перешли сразу к делу. Как и следовало ожидать, презентация была про главное нововведение в F# 3.0: type providers. Нововведение представляет собой интересную попытку сбычи давнишней мечты толп практикующих программистов: обеспечить типо-безопасный доступ к наборам данных с заранее неизвестной структурой. Реляционные базы, XML, OData и т.п.

Идея состоит в том, что на каждый вид представления данных пишется type provider, который на ходу выковыривает информацию о структуре данных и генерит информацию о типах. Причём делает это не только в компайл-тайм, но и в дизайн-тайм -- для автокомплишена. И это, вроде бы, не в чистом виде кодогеренация: сгенерённая информация о типах вовсе не обязательно должна превратиться в дотнетовские типы.

Сильно про подробности врать не буду, потому что сам пока толком не разобрался. Кому интересно, можно посмотреть практически ту же самую презентацию, что была у нас.

Меня смутило то, что IDE, получается, должна иметь возможность лазать в интернеты мало того что при компиляции, но и прямо в процессе набивания мной кода. Докладчик, однако, мои опасения развеял, сказав что партия об этом позаботилась и всё, что нужно, конфигурируется и кэшируется.

Вообще, у меня по поводу F# смешанные чувства. С одной стороны, вроде бы, праздник-праздник: полноценный функциональный язык, который при этом first-class citizen на любимой мейнстримовой платформе. А присмотришься повнимательней, так непонятно где радость от этой ёлочной игрушки. First-class-ность, мягко говоря, преувеличена: компиляторы C# и VB.NET живут прямо в .NET-е, а F# нужно ставить отдельно и в дальнюю жопу. То есть попользовать, например, для скрптования -- хрен там. Да и сам язык какой-то ни рыба, ни мясо. По части пролетарских функциональных фич (лямбды-замыкания, map-grep-fold) его уже догнал, а местами и перегнал, C#, а по части непролетарских фич и возможностей для расширения сознания простого быдлокодера (монады, классы типов, GADT) F# смотрится бледненько на фоне Хаскеля.

Конкретно вопрос про классы типов меня волнует давно. Без них несладко живётся даже в объектно-ориентированных языках, богатых наследованием и виртуальными функциями. Как без классов типов можно что-то ненаколенное написать на функциональном языке, я плохо представляю. Грех было, имея перед собой живого создателя языка, не взять его ласково за пуговицу и не спросить, входит ли в творческие планы автора добавление классов типов в F#. Не входит: это отдалит и обособит F# от платформы .NET и более традиционных языков. У меня, конечно, своё мнение на этот счёт, но что я буду -- учить дедушку кашлять? Отпустил пуговицу и поблагодарил.

В целом впечатление от общения осталось положительное. Товарищ имеет относительно происходящего вокруг своё мнение, вовсе не обязательно совпадающее с мнением партии и правительства, и исходя из этого выбирает приоритетные направления развития языка.

Желания бежать и глубже изучать F# вот прям щас не повяилось, но очень интересно посмотреть, взлетят или не взлетят type providers. Если взлетят, это вполне тянет на deal breaker.
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

mstone: (Default)
mstone

October 2013

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 11:32 am
Powered by Dreamwidth Studios