Какой язык F # создан для выполнения? - PullRequest
52 голосов
/ 13 апреля 2011

Я все больше замечаю растущее число ресурсов для разработки приложений с использованием языка программирования F #, и возникает вопрос о том, для чего создан язык F #. Это сделано для конкретной платформы, например, для настольных компьютеров, мобильных устройств, веб-приложений? Также включены ли функции, недоступные на других языках программирования, которые в настоящее время доступны для разработки приложений .NET? Также возможно ли создавать приложения для настольных компьютеров, мобильных устройств и веб-сайтов, используя F #, как мы можем использовать VB или C #? Также есть ли другие языки, подобные F #, которые я могу использовать для перекрестной проверки, чтобы лучше понять, как работает функциональное программирование?

Ответы [ 5 ]

71 голосов
/ 13 апреля 2011

Какой язык F # создан для достичь? * * 1002

Исследовательский проект F # стремился создать вариант языка OCaml, работающий поверх платформы .Net. Соответствующий проект в MSR Cambridge, SML.NET, сделал то же самое для Standard ML. (OCaml и Standard ML являются вариантами языка ML.) Мотивация для этого могла включать

  1. Показано, что это можно сделать.
  2. Публикация научных работ, показывающих, что это возможно.
  3. Потому что ML невероятно крут.

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

Это сделано для конкретной платформы для Пример: рабочий стол, мобильные устройства, веб Приложения?

Номер * * тысяча двадцать-одна

Также включает в себя функции не доступно в других программах языки, которые в настоящее время доступны для разработки приложений .NET?

Да. Они включают в себя:

  • Алгебраические типы данных
  • Сопоставление с образцом
  • Тип вывода
  • Краткий синтаксис
  • Выражения последовательности
  • Асинхронные рабочие процессы
  • Единицы измерения

Также возможно ли создавать приложения для рабочего стола, мобильные, и веб, используя F #, как мы можем использовать VB или C #

Да, но набор инструментов в VS2010 неполон. В частности, что-либо, связанное с генерацией кода, не очень хорошо поддерживается, например, Кодовый код WPF и дизайнер Winforms. Это не может быть проблемой на практике. Например, WPF с MVVM работает довольно хорошо.

Также есть другие похожие языки на F #, который я могу использовать для перекрестной проверки против, чтобы получить лучшее понимание как работает функциональное программирование?

Да. Посмотрите на это:

  • Стандарт ML
  • OCaml
  • Haskell
  • Clojure

[Редактировать: Добавлен комментарий об инструментах в VS2010.]

13 голосов
/ 13 апреля 2011

F # был создан для переноса функционального языка программирования в .NET.

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

C # был создан для того, чтобы Microsoft имела современный C-подобный язык, поскольку им было запрещено расширять Java для использования преимуществ Windows.Он был разработан как компонентно-ориентированный язык и никоим образом не специализируется для Интернета.

F # - это в основном функциональный язык, тогда как C # и VB в основном объектно-ориентированные.

См. Также:

4 голосов
/ 13 апреля 2011

Я нашел некоторые ресурсы, которые касались моего вопроса:

Что и почему выбирают F #?

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

Девять причин использовать F #

Почему я должен использовать F #?

Когда имеет смыслиспользуйте F # поверх C # или VB.NET

Из того, что выглядит, нет четкого ответа, как обычно при попытке определить, использовать ли конкретный язык.Хотя я никогда раньше не использовал функциональное программирование из некоторых примеров, которые я видел, оно может быть чрезвычайно полезным.Это похоже на еще один отличный вариант при разработке приложений .NET.

4 голосов
/ 13 апреля 2011

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

Но использование языка, такого как F #, упрощает языковое программирование (http://en.wikipedia.org/wiki/Language-oriented_programming), при создании языков, специфичных для предметной области, например,Вы можете написать небольшой язык для химика, где они используют знакомые им термины для написания уравнений или для моделирования молекул, и программа может анализировать их и реагировать на ожидаемое поведение.

Поскольку C # такобъектно-ориентированный, затрудняет простоту использования языка, так как в F # вы можете пропустить '.' в вызовах методов, поэтому Jacob buys 100 shares of IBM, потому что серия вызовов функций.

Параллелизм проще из-за некоторых конструкций, таких как ранее упомянутая неизменность, поэтому некоторые изсвойства, которые мы видим в F #, вероятно, помогут улучшить C #.

Итак, F # помогает MS проникнуть в такие области, как научное программирование и моделирование, поскольку для них это лучше, чем C #, благодаря этими другие преимущества языка.

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

ОБНОВЛЕНИЕ:

После прочтения некоторых новых комментариев, одна область, которая сталаПроблема в том, как написать хороший код, который использует преимущества многоядерных процессоров.Таким образом, функциональное программирование стало более популярным, как это видели F #, Scala, Clojure, назвав всего несколько, поэтому MS сделала это, чтобы помочь программистам лучше использовать новые архитектуры чипов.

2 голосов
/ 13 апреля 2011

Если вы посмотрите это видео Дона Сайма, возможно, вы получите ответы на некоторые вопросы, которые вы ищете.

обновление После просмотра видео кажется, что он создал его, потому что в то время (1998) он не любил Java или то, что он видел в C #, но любил функциональное программирование, такое как OCaml. Так как он работал на исследования MS, он написал F #.

Я полагаю, что гениальность нескольких языков, нацеленных на cli (A #, ronPython, IronRuby и т. Д.), Похожа.

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