Forgot your password?
typodupeerror
Microsoft Open Source Programming

Microsoft To Allow Code Contributions To F# 100

Posted by Soulskill
from the also-debating-renaming-it-to-hashtag-F dept.
An anonymous reader writes "The F# programming language team has been providing source code releases for years, but all contributions to the core implementation were internal. Microsoft is now changing that. They've announced that they'll be accepting code contributions from the community for the core F# language, the compiler, library, and Visual F# tools. They praised the quality of work currently being done by the F# community: 'The F# community is already doing high-quality, cross-platform open engineering using modern tools, testing methodology and build processes. Some particularly active projects include the Visual F# Power Tools, FSharp.Data, F# Editing Support for Open Editors, the Deedle DataFrame library and a host of testing tools, web tools, templates, type providers and other tools.' Microsoft is actively solicited bug fixes, optimizations, and library improvements."
This discussion has been archived. No new comments can be posted.

Microsoft To Allow Code Contributions To F#

Comments Filter:
  • by Tablizer (95088) on Friday April 04, 2014 @12:05PM (#46662265) Journal

    I got in trouble with Personnel for suggesting we "F# our stack".

  • by Anonymous Coward on Friday April 04, 2014 @12:07PM (#46662281)

    When they discontinue F# in five years, you can link back to this with an "I told you so."

    • Re: (Score:1, Insightful)

      by Anonymous Coward

      People like you are all the same.. Piss and moan when MS keeps their code locked, piss and moan when they open-source it..

      WAHHHH

    • Re: (Score:2, Interesting)

      by bondsbw (888959)

      Microsoft is closed source. Slashdot hates.
      Microsoft goes open source. Slashdot hates.

    • Not much chance of that. F# just hit #12 on the Tiobe Index, up from #69 this time last year:

      http://www.tiobe.com/index.php... [tiobe.com]

      • by Javaman59 (524434) on Friday April 04, 2014 @09:44PM (#46667071)

        I got into F# seven years ago, when it was just a research project and looked more like OCaml than a .Net language.

        By 2010 it had become fully integrated into .Net, and was part of the Visual Studio standard install.

        By 2014 it had evolved into a complete language with its own killer-features and it had spawned a large community, with blogs, tutorials, books and sample code. There are several significant third party add-ons, and numerous high profile adopters.

        In five years time, rather than F# disappearing, it is more likely that it will be the preferred language of many developers and shops, and the early adopters will be thankful for our extra years of experience.

        As for me, I'm thankful not just to have it on my CV, but because it helps me build better apps for WinRT, the web (with ASP.Net MVC) and Android. The root advantage of it being a functional language in the .Net world will always be its main attraction to developers, but its aggressive development by the F# team and widespread support increase its value. This latest strategic move (of opening it to open-source contribution) will accelerate its progress.

        I expect that in five years time, or, hopefully, just two, I won't have to mix F# (for the model) with C# (for the UI) for WinRT and ASP.NET MVC.

        I'll link back to this in five years with "I told you so". I'll still be Javaman59 then.

        >> Not much chance of that. F# just hit #12 on the Tiobe Index, up from #69 this time last year:

        Yep. The sooner you get into it, the better off you'll be in five years time.

      • by Raenex (947668)

        Tiobe is notoriously inaccurate. If it just that high, it was probably due to a change in their dodgy methodology.

  • Wow ... just why? (Score:4, Interesting)

    by buchner.johannes (1139593) on Friday April 04, 2014 @12:15PM (#46662399) Homepage Journal

    "let" statements -- really?
    And the selling feature is list comprehension? Looks like they are trying to go into Haskells direction.
    Testimonials say it's better than C# for data analysis?
    Well, that train has left the station, with R, Python (and Julia) being available. This can not be won by languages, but with high-quality statistics / visualisation / machine learning libraries.

    License is Apache v2 by the way.

    • "let" statements -- really?

      Why not? It makes sense to do something different so as not to confuse binding with assignment or comparison. Wait, you did realise it wasn't assignment, didn't you?

    • by TheRealMindChild (743925) on Friday April 04, 2014 @12:45PM (#46662715) Homepage Journal
      Evaluating the merits of a language within 5 minutes, a brief article, and personal bias... seems legit
      • by Xest (935314)

        I especially liked the bit about Python, because I mean why would you want an extremely fast JIT compiled language with the best in class IDE that is Visual Studio when you can have Python's relative sluggishness and notepad? (yes I'm being facetious before someone tells me you don't have to use notepad for Python).

        Seriously, people need to stop thinking Python is the solution to everything ever. Python is great, and is perfect for replacing crap like PHP because Python is so much better, but F# does many t

    • by bondsbw (888959)

      It's essentially a port of OCaml. It is intended to be somewhat compatible with OCaml, hence the "let".

      F# adds features like .NET compatibility, units of measure, computation expressions, and... well, GIYF.

      • by tangent (3677)

        F# is a "port" of Ocaml in about the same sort of way as C# is a port of Java.

        Familial resemblance, yes. Compatibility, definitely not. And as with C# and Java, the gap widens year by year.

        IMHO, F# is a vast improvement on Ocaml.

        • by bondsbw (888959)

          Tomayto, tomahto.

          F# was originally designed to be somewhat compatible. That goal has obviously faded but the point remains: it has its roots in OCaml and its current syntax draws from it.

          But I agree that F# is better in many ways

    • Re:Wow ... just why? (Score:5, Informative)

      by PylonHead (61401) on Friday April 04, 2014 @12:47PM (#46662735) Homepage Journal

      I haven't looked at it for a while, but it's basically Microsoft's version of OCaml which is an objected oriented ML variant, (and a very slick language with a long development history).

      I'm not really seeing it catch on either, but OCaml's sweet spot was writing fast code that dealt with very complex data structures. It enforced static typing, but used type inference to figure out what the types of variables were. It has powerful operators for assembling and splitting up data structures that let you write very concise code that was checked at compile time for correctness.

      It is somewhat similar in flavor to Haskell (although it's probably wrong to say they're going in Haskells direction.. more that they have common ancestors).

      • by Rinikusu (28164)

        Interest is apparently at an all-time high, especially with a lot of 'alpha geeks' trying to revive functional programming (clojure, for example). However, I'm not seeing that translate into actual jobs although I imagine it'll be a grassroots "we're a microsoft .net shop, we want to explore functional style programming in our particular domain, let's give it a shot" or a shop that's just starting up with little legacy codebase or PHBs to get nervous about new technologies. I know the financial industry i

      • I'm not really seeing it catch on either, but OCaml's sweet spot was writing fast code that dealt with very complex data structures. It enforced static typing, but used type inference to figure out what the types of variables were. It has powerful operators for assembling and splitting up data structures that let you write very concise code that was checked at compile time for correctness.

        I use F# daily for the Model (and ViewModel) in WinRT and ASP.NET MVC. Your list of advantages (from OCaml) are exactly

    • by bondsbw (888959)

      Also, I don't know that list comprehension is the "selling feature". It's a feature, no doubt, but F# has quite a few tricks up its sleeves that are much more impressive than that.

    • I was kind of under the impression that C# was best used for simple applications with a short lead time, especially in an all windows enterprise environment.

      • by BitZtream (692029)

        All .NET languages are more or less equal as they ALL go through the same back end and share the same runtime.

        Unless your in an embedded world where garbage collection isn't acceptable or something like that, they .NET world is capable of just about any task, gaming being one of them. Runtime speed is not an issue unless you need real time hard limits.

        There's the .net compact framework for embedded devices and interacting with real time components as needed. .NET is really what Java wishes it was.

        • .NET is really what Java wishes it was.

          Uh... difficult to read regardless of your milk tongue?

    • Re: (Score:1, Informative)

      by Anonymous Coward

      "let" statements -- really?
      And the selling feature is list comprehension? Looks like they are trying to go into Haskells direction.
      Testimonials say it's better than C# for data analysis?
      Well, that train has left the station, with R, Python (and Julia) being available. This can not be won by languages, but with high-quality statistics / visualisation / machine learning libraries.

      License is Apache v2 by the way.

      I'm not sure why let statements would surprise you so much in a functional language, it's pretty standard construct for value binding. You also make it sound like this is something Microsoft just came out with. F# has been around since 2005.

    • In my experience 90% of the code is defined by ADT (Discriminated Unions), Records and Pattern Matching in a static type system. The rest is nice but not essential.
    • Sounds like they're trying to copy Python, but mash some Bash in there.
  • by Princeofcups (150855) <john@princeofcups.com> on Friday April 04, 2014 @12:21PM (#46662471) Homepage

    I always thought that # was pronounced "rap." Now I see that it should be pronounced "uck."

  • Please pardon my ignorance. Is it what I think it is? I mean "F*** Sharp" or something like that.
    • by Anonymous Coward
      It is something Microsoft is pissing away money on when they should be giving it to me in dividends.
  • Don't F'ing cut yourself.

  • Is C# so broken that they need to replace it? What advantages does F# offer over C#? Will F# replace C#? Or is F# just an open source iteration of C#?

    • Let me elevate the question: why do we need yet another programming language? (insert oblig XKCD here)

      Outside of not being on anyone's resume but necessary for that next job (with 10 years experience, of course), what is the benefit of F# ?

      • Let me elevate the question: why do we need yet another programming language?

        Because we're nowhere near figuring out how to best express ourselves to computers for the wide variety of problems we wish to solve and the large diversity of skill-sets and backgrounds we wish to solve them with.

        In this example, F# solves the problem of "how do we do statically-typed functional programming (a la OCaml and Haskell) in a way that integrates with the .NET ecosystem?". C# doesn't solve that problem because you can't do nearly enough type theory [wikipedia.org]. OCaml doesn't solve that problem because it

    • F# is a functional programming language. C# is an imperative programming language.

      It's like the difference between a spreadsheet and a programmable calculator.

      • F# and C# are both multi-paradigm languages, and are both built on top of the CLR type system. Functional style is more natural in F#, but C# has first class functions (and lambda), too. F# has loops and assignment, but nothing as powerful/abuse-inviting as the C-style for loop. Neither approach is the one true style.

        If you believe the proverb, "library design is language design" [from Bell Labs? Was it Stroustrup?], then F# is a much different language from other ML variants as it has native access to

    • by lgw (121541) on Friday April 04, 2014 @12:50PM (#46662783) Journal

      There are many CLR languages. C#, Visual Basic, "managed C++", and F#, to name a few. They all use the same "bytecode" (well, managed C++ is a weird hybrid), and can use the full .NET libraries.

      F# is a functional language, so it's quite appealing to those who fap to the lambda calculus. C# is great these days for the rest of us. It finally caught up to the basic lisp functionality a few years back with LINQ (Java still hasn't), and it's nice to work in. Sure, it's odd to use "Select" and "Aggregate" instead of "map" and "reduce", but it works nicely.

      • managed C++ is more like something that is in constant pain and begging you to kill it quickly whenever you look at it. I feel its pain. I had to use it. I often felt the urge to put it out of its misery.

        • by lgw (121541) on Friday April 04, 2014 @01:56PM (#46663481) Journal

          Managed C++ is absolutely wonderful for one narrow purpose: to marshal between the managed and unmanaged worlds. The .NET marshaller blows goats, but writing your own shim to transfer between .NET and STL classes is easy, runs quite fast, and (unlike the marshaller), can actually be debugged.

          I can't imagine using managed C++ for anything else though. Eesh.

    • Umm... you can sell a ton of new books teaching it. And you can force people to upgrade their Visual Studio because they thought they got everything they need in VS2010.

      Maybe some other advantages are there, but you'd have to ask MS themselves what else is in for them.

    • F# is an implementation of the OCaml programming language developed to work with .Net. Other then .Net F# has no relation to C#.

      OCaml is a variant of the ML programming language, one of the core core functional programming languages.Functional languages are languages that have no mutable state. However they do have work arounds. The idea is that many of the bugs that happen in many program come from interactions with the state. So eliminate the state and you eliminate the bugs. The problem is though, that

      • by tangent (3677)

        F# and Ocaml are pretty different, actually. They share about as much familial resemblance as C# and Java, or C++ and Objective C:

        - The default "light" syntax in F# does away with most of the semicolons and other noise required in Ocaml

        - The OO facilities are entirely incompatible

        - The standard libraries are almost entirely different; there's only a tiny bit of overlap

        - The mere fact of F# being a .NET language has many practical effects on the language, down to strange implementation details like what it m

    • by tangent (3677)

      It typically takes about 60% of the number of code lines to accomplish something in F# as with C#.

      Don't take it from me. Go to the MSDN library page for any given .NET API, scroll down to the Examples, and compare the F# and C# versions. (Not all pages have F# equivalents for the C# examples, but an impressive number do.)

      It's no mystery why that is so. F# is highly expressive and doesn't require much boilerplate.

      You can mix an F# library into a C# "solution" (urp), so the next time you need a new class or m

  • by ndykman (659315) on Friday April 04, 2014 @12:46PM (#46662719)

    If you had told me back more than a decade ago that Microsoft would be supporting a commercial version of a language based on ML, OCAML and Haskell, I'd shook my head in complete disbelief. But, here we are, and this is great news as it allows for more engagement from the Haskell and other functional programming communities.

    F#, like it's other ML-based dialects, is amazing for solving certain problems in a expressive and concise manner. Of course, it's a powerful language that can leads to abuses. And, don't get me wrong, the additional constructs for full .Net interoperability complicate the language a bit compared to Haskell. But, it is still a joy to use when you can.

    Frankly, if there was local F# work, I'd jump on it in a heartbeat. I've even considered trying to convince a couple of local shops to give it a try for some advanced projects.

    • Frankly, if there was local F# work, I'd jump on it in a heartbeat. I've even considered trying to convince a couple of local shops to give it a try for some advanced projects.

      1. 1. Get a job at any old .NET shop
      2. 2. Slip some F# into the codebase when nobody's looking
      3. ...
      4. N. Profit! (Or "get fired" -- I'm not sure which)
      • by Rinikusu (28164)

        ... i'm actually planning on doing this soon, just as a comparison between development methodologies.

    • Re: (Score:3, Insightful)

      by Princeofcups (150855)

      If you had told me back more than a decade ago that Microsoft would be supporting a commercial version of a language based on ML, OCAML and Haskell, I'd shook my head in complete disbelief. But, here we are, and this is great news as it allows for more engagement from the Haskell and other functional programming communities.

      F#, like it's other ML-based dialects, is amazing for solving certain problems in a expressive and concise manner. Of course, it's a powerful language that can leads to abuses. And, don't get me wrong, the additional constructs for full .Net interoperability complicate the language a bit compared to Haskell. But, it is still a joy to use when you can.

      Frankly, if there was local F# work, I'd jump on it in a heartbeat. I've even considered trying to convince a couple of local shops to give it a try for some advanced projects.

      You haven't been in the business long have you. Ever heard of embrace and extend?

      • by ndykman (659315)

        But what would F# really displace? Haskell's not going away just because F# exists. If anything, it'd probably just add more potential users and contributors to the project. I think Microsoft is just trying grow the community around these kinds of languages, and there are real signs that F# is a healthy community at this point.

        The nice thing about F# is that it is at the point that you can get past "well, that's just an academic thing you learned in school" conversation and try to talk about why it makes se

    • F#, like it's other ML-based dialects, is amazing for solving certain problems in a expressive and concise manner ... it is still a joy to use when you can.

      Can you give some examples? Many C-based languages have benefited by gaining strong functional aspects. With that, I haven't really found a reason to use a functional-focused language.

      A while ago I decided to dedicate a month to coding in nothing but F# (my usual choices are C++ or C#) in attempt to find the areas they really kick-ass in, and just couldn't land on anything. There are some rare circumstances that I found it to be useful, but I just didn't find it compelling enough to warrant applying elsewh

      • by Bryan Ischo (893) *

        There is a crowd of people who think that being able to write a Fibonacci function is fewer characters is the ultimate goal of computer languages. ML and its derivatives are basically this.

        That's a pretty insulting statement, I know, but I've suffered through having to read through enough ML code in my day to know that it and its derivatives are not languages that encourage accessible code. They encourage a certain economy of expression that's actually antithetical to maintainable code.

        That's my opinion an

        • by thoth (7907)

          This whole comment doesn't even make sense.

          The Fibonacci examples at Rosetta Code are all longer for Ocaml than C, iterative and recursive.

          And are you implying ML "encourages economy of expression that's actually antithetical to maintainable code"... but C doesn't? Seriously?

          • by Bryan Ischo (893) *

            Yes, that's what I'm saying, and it does make sense.

            The whole point of alot of the features of these languages is that they allow eliding the structure and type information that makes code readable.

            C doesn't allow you to elide type information or structure.

            Yeah, it has shortcuts for some frequently used operations that can be abused, for sure. And it's certainly possible to write unmaintainable code in any language.

            All I'm saying is that there is a crowed of language developers who seem to think that elidi

      • by thoth (7907)

        If you replace "functional" with "object oriented" and went back in time 20 years ago, your dismissive, skeptical attitude would have fit right in that era as well.

        As in: many languages have benefited by gaining object-oriented aspects, haven't found a reason to use an object-oriented language, nothing compelling enough to apply elsewhere, fully aware that a month isn't long enough to master anything but it were cool and earth-shattering then it would obviously manifest.

        Sure, maybe the functional hype machi

        • If you replace "functional" with "object oriented" and went back in time 20 years ago, your dismissive, skeptical attitude would have fit right in that era as well.

          I think you've misread my comment, or perhaps I've not expressed my position well enough. You're speaking like I've dismissed functional programming. I haven't. In fact, I really love it! The parts of it that have bled through into the more imperative/OO-focused languages, like C#'s LINQ and your Python example, are phenomenal and a joy to use.

          So, here it is again: not saying functional is bad. Certainly not being dismissive or skeptical of it. I'd just like to see what compelling features haven't yet bled

      • Try writing a compiler in it, and you'll quickly see what it is good for.

        The main thing of interest there is actually ADTs and pattern matching on them. For some tasks (often ones involving trees), this leads to very concise yet natural code.

    • by Anonymous Coward

      F# has been around for a decade.

  • Good to hear that Microsoft is moving toward open-source. It seems high-level management's perspective has changed. I have played with F# and loved it especially because of its type-inference feature and the fact that you don't need to put curly braces (it's like python in that regard).

Work without a vision is slavery, Vision without work is a pipe dream, But vision with work is the hope of the world.

Working...