Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the case against F#? [closed]

Straightforward C#/Java code is extremely difficult to parallelize, multi-thread, etc. As a result, straightforward C#/Java code will use less and less of the total processing power on a box (because everything is now going to be multi-core).

Solving this problem in C# and Java is not simple. Mutability and side effects are key to getting stuff done in C# and Java, but this is exactly what makes multi-core, multi-threading programming so difficult.

Hence, functional programming is going to become increasingly important.

Given that the J2EE/Ruby world will splinter amongst many functional/multi-core approaches (just like it does for just about everything else) while the .NET folks will all use F#, this line of thinking suggests that F# will be huge in two years.

What is wrong with this line of thinking? Why isn't it obvious that F# is going to be huge?

(Edit) Larry O'Brien nails it in this blog post: "Language-wise, in my opinion, this is a set of exercises where C and C++ shine — at least until the multithreading stuff. Languages with list-processing idioms will also do well initially, but may have memory-consumption issues (especially functional languages). Ultimately, I think that the managed C-derived language (Java and C#) have the easiest route to Exercise 9 and then face serious shortcomings with Exercise 10, where concurrency issues play the major role. In my opinion, concurrency is going to become the central issue in professional development in the next half-decade, so these shortcomings are very significant."

like image 578
user128807 Avatar asked Jul 09 '09 17:07

user128807


People also ask

What is defensible in the case against Trump?

What is defensible in the case against Trump? Former president Donald Trump is reportedly peeved that he has no defenders on the House committee investigating the Jan. 6, 2021, attack on the Capitol. Based on testimony last week, any possible defenders should count themselves lucky they aren’t on the select committee.

Is F form conclusive in Assam?

In Assam Company (India) Ltd. v. CT, Assam (1997) 107 STC 154 (Gau HC DB), it was held that F form is not conclusive. Sales Tax Officer can make enquiry whether the declaration is true and can reject the F form, if the transaction is found not to be genuine. In D Dhandapani v.

What is the purpose of f form?

F Form is issued by the branch office/consignment agent receiving goods as branch/stock transfer to its head office/principal who is sending the goods by way of stock/ branch transfer. The H.O./Principal produces such F forms to its assessing authority to prove such stock/branch transfer.

What happens if space in F form is not adequate?

If space in F form is not adequate, a separate list may be attached as annexure to form F giving details, provided that the annexure is firmly attached to the form. The blank form has to be obtained from sales tax authority in which the transferee is situated, i.e. State where goods were received.


2 Answers

Functional programming is harder to get your head around than imperative programming. F# is a more difficult language in many ways than C#. Most 'developers' don't understand functional programming concepts, and can't even write very good imperative code in C#. So what hope have they got of writing good functional code in F#?

And when you consider that everybody on the team needs to be able to understand, write, debug, fix, etc. the code in the language you choose, it means you need a very strong team -- not just a very strong person -- to be able to use F# as it's meant to be used. And there aren't many of those around.

Add into the mix the fact that there's 8 years of C#/VB code lying around which is unlikely to be migrated, and that it's easier to create libraries that look and feel like the BCL in C#/VB as it's less easy to leak stuff like tuples etc. through public interfaces, and I reckon that F# will struggle to gain anything more than usage by strong teams on new, internal projects.

like image 53
Greg Beech Avatar answered Sep 28 '22 20:09

Greg Beech


  1. Ask a programming question on SO and specify you are using F#.
  2. Ask the same question and specify you are using C#.
  3. Compare the answers.

Using a novel programming language is a calculated risk--you may get more built-in functionality and syntactic sugar, but you will lose in community support, ability to hire programmers, and working around blind spots in the language.

I'm not picking on F#--every decision of programming language is a risk equation you need to work out. If people didn't take that risk on C#, we'd all still be using VB6 and C++ now. Same with those languages versus their predecessors. You have to decide for your project whether the advantages outweigh the risks.

like image 29
richardtallent Avatar answered Sep 28 '22 19:09

richardtallent