Изучение.NET от F# без C#

Я - разработчик Java/C++, который никогда не проводил время в изучении C# и относительной основы.NET.

Затем я изучил OCaml, потому что я должен был использовать его для своего основного тезиса, таким образом, я услышал о F# и задался вопросом: F# позволит мне легко использовать API.NET для создавания полнофункциональных приложений (который может включить графический интерфейсы пользователя, сокеты, безотносительно) без какой-либо проблемы?

Я спрашиваю это, потому что кажется, что синтаксис F# и понятия весьма схожи с OCaml и когда они отличаются, это просто, потому что больше подхода ООП используется так, знание Java помогло бы мне в заполнении той дыры.. если бы F# может использовать те же ресурсы в качестве C# без потребности изучить синтаксис C#, я действительно рассмотрел бы это.. действительно ли это стоит попробовать?

Кроме этого, действительно ли книги доступны на Amazon для F# (главным образом одна книга от O'Reilly и 3-4 книги от Apress) хороший для изучения усовершенствованных методов? Поскольку теперь я довольно люблю функциональное программирование, но никогда не работал над платформой.NET, таким образом, я действительно не знаю, где запустить с.

Заранее спасибо

13
задан Outman 24 October 2019 в 19:57
поделиться

6 ответов

Если вы уже знаете несколько языков, как вы говорите, Expert F # 2.0 от Дона Сайма является отличным детальным обзором F #.

В основном вам будет сложно изучать библиотеки, но ссылка MSDN довольно хороша.

Думаю, это определенно стоит попробовать. Знание C # не даст вам никаких больших преимуществ в изучении F #, кроме опыта работы с фреймворком.

10
ответ дан 1 December 2019 в 21:51
поделиться

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

Я ожидаю увидеть здесь несколько разных точек зрения; Я предлагаю свой.

Есть несколько аспектов «языка», которые влияют на то, насколько легко / плавно вы можете создавать с его помощью «полнофункциональные» приложения:

  • сам язык
  • библиотека / фреймворк, с которыми он связан
  • возможности инструментария (интеграция с IDE)
  • внешняя поддержка (образцы, сторонние библиотеки, сообщество)

F # - потрясающий язык, ядро ​​которого основано на OCaml. Он использует ту же библиотеку / фреймворк (.NET) как C #, и поэтому, что касается первых двух пунктов, F # так же способен, как C #, для создания таких приложений.

F # на несколько лет моложе C #, поэтому инструменты Visual Studio и сообщество / образцы не так зрелы, как C #. Сейчас меньше «шаблонов проектов» и «дизайнеров», которые работают с F # в поле VS, и труднее найти образцы / библиотеки. Сообщество F # велико и быстро начинает заполнять дыры в четвертом пункте (и даже в некоторых из третьего), но для создания приложений, которые в значительной степени полагались бы на третий и четвертый пункты, указанные выше, C # все еще имеет преимущество сегодня. (Июль 2010 г.). Да, сегодня вы можете создавать все, что захотите, с помощью F #, но все же есть случаи, когда сквозное взаимодействие с C # будет более плавным / легким.

6
ответ дан 1 December 2019 в 21:51
поделиться

В F # в Visual Studio до сих пор не хватает инструментов, которые помогают автоматизировать процесс разработки пользовательского интерфейса. В случае C # они довольно сложные, но в F # вам придется делать все работы вручную. Поэтому, если ваша цель - научиться создавать приложения WPF (и т. Д.), C # в настоящее время является лучшим выбором. Если ваша цель - изучить механические детали .NET, WPF (и т. Д.), Подойдет любой язык.

На мой взгляд, даже лучший подход - изучить два языка - F # и C # - в тандеме. Ваш опыт работы с Java и OCaml дает вам хорошее начало как для C #, так и для F #. Используйте C # для работы с пользовательским интерфейсом и F # для выполнения основной работы.

2
ответ дан 1 December 2019 в 21:51
поделиться

Простой ответ: "да", F# имеет полный доступ ко всем библиотекам .NET и может как потреблять, так и создавать код, написанный на любом другом языке .NET, а также напрямую взаимодействовать с COM и родными DLL.

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

Наиболее существенным является то, что конструктор GUI в настоящее время не может создавать код на F#, нельзя создавать сильно типизированные страницы ASP.NET codebehind (но можно создавать слабо типизированные), и нет прямой поддержки для создания тестов на F# (но существуют плагины, которые делают это).

Тем не менее, на F# можно легко писать GUI-код вручную, и часто это делать проще и немного лаконичнее, чем на эквивалентном C#. Например, свойства можно задать в конструкторе; например, let f = new Form(Text="Заголовок окна"), а лямбда-функции автоматически преобразуются в делегаты; например, event.Add( fun e -> doSomething() ).

Также можно, например, создать DSL для описания пользовательского интерфейса. Немного больше информации см. в F#: нет ли для него пользовательского интерфейса (как для WPF)?

Рекомендуемый стиль, как указывает TechNeilogy, заключается в написании логики на F# в виде библиотеки и вызове ее из GUI, созданного на C#.

1
ответ дан 1 December 2019 в 21:51
поделиться

Я отвечу "Нет". Сложность изучения F# заключается в том, чтобы изменить свое представление о программировании, рекурсии, функциях высокого порядка, сопоставлении шаблонов и т.д. Очень важно, что вам нужно думать, чтобы программировать "функционально", а не императивно, как C# или Java. Изучить API всегда легко, но научиться разрабатывать приложения - нет.

Это мои 2 цента.

1
ответ дан 1 December 2019 в 21:51
поделиться

По моему опыту, вам понадобится немного C # для изучения F #, особенно для части .Net.

Как и в вашей ситуации, я не знал никаких .Net и C # до изучения F #. Первая сложная часть для меня - это программирование асинхронного ввода-вывода. Я получаю полное представление об этом, пока не прочитаю главу об асинхронности CLR через C # . И вскоре я обнаружил, что меня укусило не выражение / монады вычислений, а .NET. Затем я продолжаю читать CLR через C #, например. Я знаю, что в .Net массив 1d эффективен, однако массив 2d не так эффективен. Я также знакомлюсь с делегатами и событиями в .Net.

.Net является обязательным условием. C # - это основной тон для .Net. IMHO, изучение C # (хотя бы чтение C #) требуется программисту на F #.

4
ответ дан 1 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: