
The second annual F# survey - smoothdeveloper
http://fsharpworks.com/survey.html
======
leovonl
I find it curious how you treat F# a separate language, but in the "primary
programming languages" question OCaml and SML are considered the same language
(listed as "OCaml/SML").

IMHO, if you don't make a distinction between OCaml and SML languages, you
should definitely not make a distiction between OCaml and F#.

I have a good experience with OCaml, and judging by most F# code I saw it
seems F# and OCaml are much more similar than OCaml and SML.

Here you can see some examples comparing ML variants, which also illustrates
my point a little further:
[http://hyperpolyglot.org/ml](http://hyperpolyglot.org/ml)

~~~
ak0s
Surprisingly (actually not) lack of functors makes the language completely
different.

~~~
leovonl
Indeed, I agree with you.

Object-orientation support on OCaml also sets it far apart from SML, for
instance. Which can lead to a lengthy discussion, but that's beside the point.

This reasoning, however, is exactly my point: depending on where emphasis is
placed, they can be argued to be similar or completely different languages.

------
ofir_geller
Every time I start getting into f# the Roslyn team comes out with new features
taken from FP (tuples, local functions, pattern matching) and narrows the gap.
So I postpone the move from c# to f# to a later date .

The things I know are never coming to c# (like data providers) are not
important to me.

So for me c# is the greatest block against f# adoption.

~~~
smoothdeveloper
It is still a long way before:

* pattern matching / active patterns

* Discriminated Unions and many other crucial type system enhancements over POCO in C#

* real functional orientation (function composition, immutability by default, partial application)

* type providers (it is not necessarily about data provider)

* more compile time safety harness

* plenty of other things that become apparent when you get comfortable with the language

C# 7 is still doing catch-up with F# 1.

My hypothesis is that it is easier for many people to not try too hard to
grasp at functional programming or just learn a new language.

~~~
koder2016
The truth is that F#'s features are not _that_ compelling to justify the move,
ML syntax is too different and R# tooling is not there and never going to be.

~~~
smoothdeveloper
You might be right about a small subset of people, but most developers using
languages like ruby, python, basic, pascal, etc. would prove this wrong.

Also most of F# are fairly well experienced C# programmer, and I think they do
find the language compelling.

------
nnq
Out of curiosity: can a developer totally foreign to .NET, C#, and Windows
programming in general become productive with F#?

(I mean, without having to learn the rest of the Microsoft ecosystem)

~~~
MichaelGG
Yes. I've had several people come onto an F# project with no prior experience
in F# or ML or anything like it. They were all able to get up to speed. To
start, F# makes it easy to write imperative, C#-style code anyways.

Over half of these people have since said they LOVE F#, and it makes them
happy to use it. That it makes them better programmers, and that C# is just
verbose and annoying in comparison.

As far as the Windows ecosystem, you don't need to learn much about it, though
Visual Studio is a great IDE for F#. But there's IDEs on Linux and Mono
specifically says they support F#.

~~~
cannam
What do the other half say?

(Honest question. I'm very interested in the question of the approachability
of functional languages)

~~~
smoothdeveloper
My hypothesis is that other half says:

* Code is less clear than C style (type inference, not used to some pervasive operators like function composition or piping)

* Code is terse and short names are more prevalent (Lost the way to kingdom of nouns)

* There is no Resharper support, and Visual Studio (the main IDE with F# support) tooling is not as advanced as for C#, which is impairing to some extent if you look use the language like a glorified C# and not too used to F# way (tooling is great compared to many other languages IMHO)

* There is no do/while or goto or break

~~~
jackfoxy
FSharp Power Tools is about all the IDE tooling I care about. I think coming
from the OO world developers just expect a whole bunch of add-on tooling. Once
you are comfortable with the functional-first way of doing things you find
almost all of this unnecessary, except perhaps for some rather basic
refactoring support, which FSPT provides.

~~~
smoothdeveloper
[https://fsprojects.github.io/VisualFSharpPowerTools/](https://fsprojects.github.io/VisualFSharpPowerTools/)

------
smoothdeveloper
2015 survey results
[https://docs.google.com/forms/d/1Ly_W1ZUH3x_ph4H6I_64uvEib2b...](https://docs.google.com/forms/d/1Ly_W1ZUH3x_ph4H6I_64uvEib2brDx34j-FoaZkeYLI/viewanalytics)

I hope there will be more submissions this year!

