We've already had some emails sent to us with a gentle reproach that we are not giving enough coverage to the F# language (F for Functional). F#, if you're not familiar with it, is likely one of the great pleasures of Visual Studio 2010. It started as an open research project that adapts the classic functional programming language ML, via OCAML and Haskell, to enable it to use NET assemblies.
It is now out as a fully-supported language in
Visual Studio 2010 Beta1, and as a plug-in for as a fully-supported language in
CTP Update for Visual Studio 2008 in the form of the
F# May 2009 CTP (
MSI, ZIP).
Anyone who has used ML, Haskell or Caml will recognize F#. Even Phil Factor was young when
ML appeared at the University of Edinburgh in 1973. Functional programming is quite unlike the more common imperative model. It is oriented around expressions, as it consists of functions operating on simple data structures and avoids the use of variables (as generally understood) or operations with side effects. This ensures that the same function with the same input will always produce the same output (deterministic). Functional programming has evolved in parallel with imperative programming (e.g. Pascal, C#) and declarative programming (e.g. SQL). It is the ideal language for slow typists. Algorithms are cleanly expressed without having to wrap stuff up in fluff such as class definitions, and without having to type everything, since the system does that automatically for you.
It has survived the lean years by being the ideal advanced teaching language but has been used commercially for a variety of purposes that rely on advanced analysis techniques, particularly in financial systems. It has also been adopted by many as the ideal language for writing compilers. By adapting OCAML, a dialect of ML with Objects, to support .NET types and objects, Don Syme and his team at Microsoft has necessarily compromised the purity of ML by giving support for NET types and objects, using an imperative object-oriented style of programming.
Please don't get the impression that F# is an academic language. It is a well-proven, general-purpose language with a power that is equal to C#, but which is fundamentally designed for parallel processing. It is economical too. A script to manipulate an Excel spreadsheet or copy a database via SMO is even shorter than the C# equivalent. What is more, it is interactive, and adopts a programming paradigm that is surprisingly intuitive for any SQL Developer, with its built-in support for tuples, record and lists. It is in other senses quite unlike the more common languages as it is both functional and imperative. You can build F# applications for .NET 2.0/3.0 and 3.5 and 4.0
The classic textbook on ML is Lawrence Paulson's
ML for the working programmer. The title was, one suspects, originally an ironic comment on its practicality for commercial use, rather than the theoretician in logic. The title no longer seems ironic, since, with its descendent F#, we have a tool that is of immediate use for any .NET programmer. We'd love to publish some articles on F# by experienced 'working programmers'.
Cheers,
Laila