F# resources

3/31/2009 10:50:29 PM

This past week I presented at the Corvallis .NET User Group and Boise Code Camp about a new language Microsoft has been developing called F#. It’s a functional, object-oriented, hybrid sort of language that I think will make a big impact in .NET development of the future.

Microsoft has been working towards an overall goal of raising the bar for software development through declarative code – expressing what you want done and letting the machine worry about how it gets done. We humans get to express ourselves more clearly, and the machines get to do what they’re good at – analyze, optimize, and execute. You can see this push towards declarative code with technologies like Windows Workflow Foundation, LINQ, and XAML. F# is a piece of that pie as well.

Our networked world forces us to deal with asynchronous code more every day. Combine that with the steam running out of the gigahertz train (we get more processing performance through additional cores, not cranking up the clock speed) and the resulting need to parallelize code, and languages that focus on behavior instead of intent start showing the errors of their approach. It shows through code wrestling trying to wrangle with concurrency, multiple threads, coordinating asynchronous callbacks… it ends up making a mess of what you were actually trying to do in the first place. This is an arena where F# really shines, and is why I believe every .NET developer should make some time to take a look at the language and start “unlearning what you have learned” from the backwards world of imperative code.

Some blogs worth checking out about F# include Don Syme (creator of the language), Andrew Kennedy, and Luca Bolognese. Luca also has a great F# overview presentation from PDC2008 online that I highly recommend you checking out if you’re interested in the language. There’s also the F# Developer Center on MSDN, which you can reach with the handy short URL of http://msdn.com/fsharp . (If you have an online F# resource you enjoy that I didn’t mention, please let us know in the comments!)

Also don’t forget to check back here as I will be focusing on F# (and related issues like asynchronous code and parallelism) with some code samples and apps. Hope you check out F#, I think you’ll enjoy it!

F#