Как трудный это должно изучить F# для опытных разработчиков C# 3.0?

Android Studio обновлена ​​версия 3.3. Пожалуйста, удалите ограничение предыдущей версииLayout

, мой случай использовал это

implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'

Спасибо

15
задан Marcel Lamothe 28 May 2009 в 03:55
поделиться

9 ответов

Starting out in F# (learning the syntax, scraping the surface of how to program in a functional manner) is not too hard. A good C# 3 developer familiar with LINQ and with a solid understanding of Lambda expressions should be able to pick up the basics quickly.

It is hard to say how hard it would be for them to break out the habit of object oriented problem solving, but problems that call for functional solutions should force them to make that leap. It is difficult to change your thinking unless you are presented with a new problem in my opinion.

All in all I would say it took me a week to learn the syntax and basics of the language in my spare time (2-3 hours a night). You'll need more time than that to get a real feel for functional programming though.

Issues

I am still struggling with types. I have been doing Project Euler problems to teach myself the syntax, so I haven't needed to any kind of complex user defined types so far.

The type inference the compiler does takes a little getting used to as well, as it is not always clear when it needs types to be specified, and when it can just work them out.

Learning

I would definitely suggest trying Project Euler problems for starters. Mathematical problems are always a good candidate for functional programming.

On a more general note, data processing problems are good too. List processing is very easy in functional languages, and is one of the first things you should learn IMO.

Books

Real-world Functional Programming: Я закончил эту книгу недавно и нашел ее действительно полезной для работы над тем, как применять принципы функционального программирования к задачам, использующим как C #, так и F #. Большинство примеров в книге написаны на обоих языках с использованием идиом функционального программирования, специфичных для каждого языка, и объяснения различий между ними.

Ресурсы

17
ответ дан 1 December 2019 в 00:45
поделиться

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

Что касается ускорения, вот мой любимый онлайн-контент для изучения F # . Поскольку вы работаете с C #, вы можете найти « как выглядит этот код C # в F # ».

14
ответ дан 1 December 2019 в 00:45
поделиться

Вы можете изучить F # быстро, но вопрос в том, как вы будете программировать на нем.

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

Рисунок из моих На собственном опыте вам придется отказаться от своих верных циклов в обмен на понимание списка. Вам также придется научиться использовать вложенные функции и рекурсию.

Есть также некоторые подводные камни, которых следует опасаться при сопоставлении с образцом.

3
ответ дан 1 December 2019 в 00:45
поделиться

Я бы сказал, прежде чем углубляться в F #, сначала окунитесь в Lisp или Haskell, или даже и то, и другое. Имея некоторый предшествующий опыт работы с Lisp и Haskell и долгое время религиозно используя C #, я почувствовал себя как дома с F #. С другой стороны, у меня также есть некоторый опыт работы с OCaml (одно из главных влияний на F #), так что это изрядно помогает. Функциональные языки - это совершенно другой взгляд на вещи с точки зрения математики и науки. Добавьте к этому возможности .NET-библиотек, доступных на C #, с которыми у вас уже есть опыт работы, и вы станете золотыми.

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

Вы можете выучить язык F # довольно быстро, но определенно потребуется некоторое время, чтобы использовать F # так, как он должен использоваться. Это может быть похоже на ваш переход с C на C ++ с добавлением чуждого глазу синтаксиса и чуждого мозгу мышления.

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

Самым большим скачком будет следующий факт:

C # - это объектно-ориентированный язык программирования

F # - это язык программирования функций

Разработчики, которые не знакомы с Функциональному программированию нужно будет наверстать упущенное, в чем заключаются различия и как переходить между ними. Приятно то, что F # является частью .NET framework ... так много знакомых библиотек будет там.

-1
ответ дан 1 December 2019 в 00:45
поделиться

As stated in other answers, the question isn't so much C# vs F#, as Object-Oriented/Procedural vs Functional.

Having said that, if you've dabbled in Linq, lambdas, anonymous delegates, you've already been doing some functional and/or functional-inspired stuff, so the first hurdle of 'functions as variables' is behind you.

There is a book in the pipes (Functional Programming in the Real World)* which I'm very much looking forward to, as it explains functional programming with C# and F# examples. I thoroughly recommend this webcast, by the author, which I think is an excellent taster. He walks you through an example in procedural C#, then transforms it into functional C#, then hops over to do the same in procedural F#, then functional F#. Very nice.

The hardest thing for me is deciphering the cryptic type inference error messages, though apparently they're working on improving that.

Side note, there are quite a lot of F# questions on Stack overflow, but you can't find them by searching for "searchword f#", you have to search for "searchword [f#]"

*Of which the co-author/editor is rather well-known to the community ;)

4
ответ дан 1 December 2019 в 00:45
поделиться

Если вы хотите изучить F #, вы должны быть знакомы с Reflector или хотя бы читать код IL.

F # делает много странных вещей, которые на первый взгляд просто не выполняются. смысл. Примеры:

  • У вас есть три типа null. CLR NULL, Nullable и Option.
  • Их можно комбинировать. Если вы видите Option, перед использованием строки необходимо проверить оба параметра: None и Some (null).
  • Вы можете перегрузить большинство операторов, таких как сложение (+), конкатенация (^) и больше (>).
  • Другие языки распознают эти перегрузки в ваших библиотеках.
  • Вы не можете использовать перегруженный оператор конкатенации из F #.
  • Если вы используете оператор>, он не учитывает вашу перегрузку. Вместо этого он ищет интерфейс IComparable.
  • Компилятор не сообщит вам, что использование> без реализации IComparable приведет к ошибке выполнения.
1
ответ дан 1 December 2019 в 00:45
поделиться

Насколько сложно изучить F # для опытных разработчиков C # 3.0,

Действительно легко. Вы должны быть в состоянии заниматься серьезной работой после 1 месяца изучения F #.

и / или что, по вашему мнению, является самой сложной частью изучения F #?

Во-первых, научиться использовать типы записей и объединения и сопоставление с образцом вместо классов. Во-вторых, научиться более агрессивно анализировать код, используя первоклассные функции.

Это незначительные проблемы. Возьмите любую приличную книгу по F #, и вы быстро ее разыщете. Затем вы можете перейти к действительно интересному параллелизму и асинхронным рабочим процессам и ...

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

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