Michael (mstone) wrote,
Michael
mstone

F#

Третьего дня у нас в Бинге проездом был Дон Сайм, рассказывал про 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.
Subscribe
  • Post a new comment

    Error

    default userpic
  • 2 comments