3 ms·
I actually like how meaningful white-space forces formatting. I want more inference in C#. What I don't like is that language "feels" too "big" for me to approa
by _random_ 13y ago
I actually like how meaningful white-space forces formatting. I want more inference in C#. What I don't like is that language "feels" too "big" for me to approach. Things like "The DefaultValue attribute is required on explicit fields in class types that have a primary constructor" make me think WTF, why use OCaml with "patches" instead of starting from scratch? Don't get me wrong, I will learn F# the day it will be paid properly by the market (London). But today it doesn't give me enough to abandon C#. PS: Microsoft says F# is not meant to replace C# and I don't do scientific calculations or big data.
- profquail 13y agoWhat's your definition of "paid properly" by the market? Average C# developer salary in the UK, £40,000: http://www.itjobswatch.co.uk/jobs/uk/csharp.do http://www.itjobswatch.co.uk/jobs/uk/csharp.do Average F# developer salary in the UK, £62,500: http://www.itjobswatch.co.uk/jobs/uk/fsharp.do http://www.itjobswatch.co.uk/jobs/uk/fsharp.do
- _random_ 13y ago@profquail: First of all those links are meaningless given the scarcity of F# positions. You just can't compare them statistically. Second of all if you look closely at actual positions then it turns out they are not F#-centric at all, more like "Scala, F#, Erlang, Haskell knowledge is a plus". I mean people who use F# were hired not because they knew F# well but for other skills - e.g. deep knowledge of finance, distributed computing etc. Why not focus on learning that instead? Nobody pays 100k for F# alone. I might be wrong but I just don't see it as a skill that sets you apart that much. People are more interested in HTML5 :(.
- profquail 13y agoWith languages like C#, Java, Python, C++, etc., job postings often ask for experience with that specific language. Sometimes you'll see postings which allow developers to jump back and forth between C# and Java, but that's about it. With functional languages, the specific language is much less important, because the languages share many features, and the real key is that you understand how to design and structure functional programs. Along with the fact that functional languages -- even the popular ones -- have much smaller developer bases than your mainstream imperative languages, many job postings for functional programmers list multiple languages just as you described. And you're right, no one's going to pay you 100k just for knowing F#. That's true for any language at any salary point though. What companies are looking for are those other skills; F# developers generally command higher salaries because they're often highly skilled senior developers, not because of their language preferences.
- tonyedgecombe 13y agoF# developers generally command higher salaries because they're often working in the financial sector.
- profquail 13y agoMany F# developers work in the financial sector (myself included). Working in the financial sector isn't some magic ticket to a higher salary though, i.e., given an engineer who makes $X in some other industry, they're not automatically going to make 2 * $X just because they switch to finance. The reason salaries are higher in finance is because it's really worth the investment for financial companies to spend extra money to hire the most highly-skilled engineers (and other staff) they can find. Some other industries (e.g., aerospace) have similar requirements, so salaries are higher than normal there as well.
- MichaelGG 13y agoI'd be surprised if F#, all-in-all, has more complexity than C#. For instance, C# has crazy duck-typing rules, but they only apply when using certain keywords (like new Whatever{} or foreach). Or all of C#'s type-coercion stuff, like C. Floats, integers, even strings - let's implicitly convert them galore! F# has a fairly coherent model, which makes most of the design principles deducible. For instance, that quote about DefaultValue. You're using a keyword to introduce a field without initialization. Since F# avoids uninitialized fields, so you don't end up with nulls, it forces you to be explicit here, noting that you're requesting the compiler to allow an uninitialized field, which is not something you often want. Microsoft's marketing is shit as far as F# goes. They've invested a lot in C#, and it's embarrassing for some people to admit that MSR came up with a far superior language. So instead they mumble about how F# is great... if you're like a rocket scientist or quant or like, really super-duper smart. The implication being that C#/VB are the only practical languages for normal get-stuff-done programmers. In truth, the only real advantage C# has is the tooling. There are drag-n-drop designers, and codegen tools that F# doesn't have. Some libraries make implicit assumptions about C# compiler implementation details. But that's hardly a language problem, and something MS could fix if they cared to put resources on it. As a side note, the F# team has some of the same people responsible for actually designing and getting proper generics into the CLR. Without that team, the CLR wouldn't have proper generics, but probably eventually would have gotten a lame model like Java's.
- balakk 13y agoThe biggest problem F# faces(or faced) is it looks very foreign to a journeyman c#/java/c++ developer. Significant whitespace and lack of curly braces does not look quite odd now, with the proliferation of Python, Ruby etc. Prior to 2005 or thereabouts, it was a huge challenge. Part of it is a community problem as well - the leading lights of the Alt .NET community pretty much cold-shouldered F#. Don Syme & team waged a lonely battle to bring mindshare. Till f# 2.0 shipped, I can't remember more than 2 or 3 significant developers who were actively developing F#. Things are looking up now though.