Как будет использоваться F # (резкое)? - PullRequest
26 голосов
/ 30 мая 2009

У меня проблемы с размещением концепций и возможностей представляемого языка F # от Microsoft.

Будет ли F # использоваться только для объявления функций? Или приложения будут «полностью» написаны на F # путем смешивания F # с обычным кодом C # или VB?

Ответы [ 8 ]

35 голосов
/ 30 мая 2009

Я настоятельно рекомендую вам посмотреть выступление Луки Болоньезе на PDC 2008. Это не только очень интересно, но и демонстрирует довольно впечатляющие примеры использования F #:

Введение в Microsoft F # от Luca Bolognese

23 голосов
/ 30 мая 2009

Я ожидаю, что F # будет использоваться для штук некоторых специализированных систем - битов, которые включают сложные потоки / математика / финансы / моделирование / и т.д., где F # хорошо работает. Для большинства других областей (UI, DAL и т. Д.) Предпочтителен язык общего назначения, такой как C # (IMO).

Одним из преимуществ F # является то, что (теоретически) вы можете доказать, что код работает, а не просто протестировать его. Поддержка потоков (благодаря неизменности и использованию async!) Также хороша (хотя PLINQ может конкурировать с потоками).

Подключение к .NET для обеспечения правильной интеграции между F #, C #, VB, IronPython, IronRuby и т. Д. - действительно показывает сильные стороны каждого. Сегодня , если бы я делал много COM-взаимодействий, я бы рассмотрел VB (который изменится в 4.0 с dynamic); для большинства кода - C #. Для математики и т. Д. F #. Tidy.

8 голосов
/ 30 мая 2009

Я использовал его в течение полугода, и я думаю, что он станет языком общего пользования. Изучить его довольно сложно, поэтому сомневаюсь, что он будет слишком часто использоваться в смешанной среде. Менеджеры хотят сократить расходы до минимума.

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

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

Моя дневная работа связана с веб-прототипированием, поэтому я с нетерпением жду возможности увидеть, куда пойдет FSharp.WebTools , а также узнать больше о поддержке F # с Microsoft MVC .

6 голосов
/ 02 июня 2009

Я использую F # в следующих областях:

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

Multitherading . На работе я медленно внедряю F #. Я получил возможность продемонстрировать, на что он способен, переместив некрасивый однопоточный VB.NET в многопоточный F #, используя асинхронные рабочие процессы и процессоры почтовых ящиков.

DSL и разбор . В моей последней компании я использовал FsLex / FsYacc для анализа SQL в AST . Вариант кода прототипа превратил его в этот урок .

Scripting . Я полностью <3 сценариев с файлами .fsx. Это удобный способ написания небольших скриптов без необходимости написания полнофункционального исполняемого файла. Также приятно изменить исходный код и запустить его снова без простоев. Я изменил поведение файлов .fsx по умолчанию для запуска fsi вместо открытия в VS при двойном щелчке. </p>

3 голосов
/ 02 июня 2009

Ваш вопрос подразумевает, что весь код в конечном итоге становится приложением.

Это не обязательно так, и одна из сильных сторон F # (скажем, по сравнению с C #) состоит в том, что вы можете «пробить» свою любимую среду IDE и просто запустить кусочки кода без всего решения / проекта. / инфраструктура класса.

Для проверки результатов обработки чисел, преобразования данных, тестирования нового алгоритма (даже если я в конечном итоге закодирую его в C # в «приложении»), сортировки по файлам журналов, даже создания небольшой утилиты, которая сообщает мне, сколько мои ссылки на C # фактически используются в данной сборке, F # изящен, быстр, и все же быстро «масштабируется» до DLL, если я решу использовать его дальше.

3 голосов
/ 30 мая 2009

Конечно, можно писать целые программы на F #. Тем не менее, я думаю, что большинство программ не пойдет по этому пути. Скорее всего, F # будет использоваться для сложных алгоритмов и логики приложения (сердце программы), в то время как C #, вероятно, будет использоваться "снаружи" (GUI и т. Д.). .NET настоятельно структурирован, поэтому в тех местах, где вы интенсивно используете библиотеки, C #, вероятно, будет более «естественным», чем F #.

2 голосов
/ 30 мая 2009

В зависимости от контекста, вы можете рассмотреть оба варианта.

Вы можете использовать F # для создания законченных приложений .NET или подключить его к другим языкам .NET. Он может использовать и предоставлять библиотеки с / на другие языки .NET.

1 голос
/ 04 августа 2010

Будет ли F # использоваться только для объявления функций? Или приложения будут «полностью» написаны на F # путем смешивания F # с обычным кодом C # или VB?

Мы пишем целые приложения на F # более 3 лет. Многие компании дополняют свои существующие кодовые базы с помощью F #.

Самыми простыми точками входа для F # являются такие вещи, как отправка образцов F #, демонстрирующих, как API библиотеки, которую вы продаете, можно использовать из F #. Это не сложно для любой компании, потому что образцы не являются критически важными, поэтому техническая экспертиза и текущее обслуживание не являются проблемой. F # также является отличным инструментом для написания тестовых наборов для существующего кода на любом языке .NET. Опять же, клиент никогда не получает этот код, поэтому его надежность за пределами вашей компании не является проблемой. На практике у нас не было никаких проблем с тем, чтобы пойти куда-нибудь и использовать F # везде и доставлять его клиентам, даже не подозревая об этом. Это особенно хорошо работает для небольших компаний, потому что значительное повышение производительности дает нам огромное конкурентное преимущество.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...