Posts

Showing posts with the label asynchronous

Red Gate on concurrent programming

Amidst the excitement around the new support for asynchronous programming in C# 5, Alex Davies of Red Gate software writes: " Before C# 5, I think I was about the only person in the world who really cared about asynchronous programming " In fact, many of our 1,000 corporate clients have been developing concurrent programs on .NET over the past two years. The world's foremost supplier of electronic trading and order matching software for brokers, exchanges and traders in the energy industry recently rewrote their trading user interface using async. The UK's largest insurance company provide life insurance quotes on-line using async. They are all doing this using  F#  because it has supported async out-of-the-box since it was first released in Visual Studio 2010. Even if you intend to write your asynchronous programs in C# 5, we recommend taking a look at how people have been writing asynchronous programs on .NET using  F#  including the following F#.NET Journal...

"The F# Asynchronous Programming Model" by Don Syme et al.

The creator of the F# programming language at Microsoft Research in Cambridge, Don Syme, recently had a paper accepted for the Practical Aspects of Declarative Languages conference. This paper provides a great introduction to asynchronous workflows and the MailboxProcessor in F# . In fact, the use of monads to sequence asynchronous operations has a long history. For example, this approach has been used in the OCaml programming language, from which F# is descended, for at least 8 years. Specifically, Jérôme Vouillon's LWT library for OCaml made asynchronous programming easy. For example, the first F# sample given in this paper: async { let! html = getWebPage "http://www.google.com" return html.Length } Could have been written in OCaml as follows in 2002: getWebPage "http://www.google.com" >>= String.length In 2005, Jacques Carette et al.'s pa_monad syntax extension even added the same kind of syntactic sugar that F# provides for its...