Подтвердить что ты не робот

Как будет использоваться F # (sharp)?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

Scripting. Я полностью пишу скрипты с файлами .fsx. Их удобный способ писать небольшие скрипты без необходимости писать полномасштабный исполняемый файл. Его также приятно модифицировать исходный код и запускать его снова без простоя. Я изменил поведение файлов .fsx по умолчанию для запуска fsi, а не открытия в VS, когда их дважды щелкнули.

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

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

Ответ 8

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

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

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