With the recent news about F# being included with Visual Studio 2010, I got to thinking ... how soon before I see functional programming take hold in the usual "line of business app" space?
It won't happen anytime soon. You have a million programmers brought up with the imperative programming style and it wil take them quite a while to adjust. If ever. It's a whole different way of thinking.
I would add the subjective tag to that one ;)
Personally, I don't think it will become the norm although it will be used in areas where it is well suited.
I don't think it will become the norm because it is best suited to certain layers of the application, but isn't well suited to other layers like UI.
Because of this, development of several layers will continue in C# or VB. From a company's perspective, even if F# is the better tool for one part of the application, they will tend to write it in C# or VB anyway to maintain consistency, because their programmers will be more adept in those languages and so that future hires will be easier to find.
Depends what your business is, I guess. It's already getting there in my line, which includes quantitative analysis in a financial context, much of which involves writing functions. In an order-processing context, to pick something commonplace, I don't see much use for a functional language. But I could be wrong.
I think already people are seeing value in certain principles of it. People had to start using an OOP paradigm in standard procedural languages for a long time before languages built with that concept in mind became popular. Even then, people wrote some less-than-optimal OOP code; hence the zillions of books, patterns, and best practices on the subject now. I could see a similar trend emerging with functional programming.
I suspect the ideas will take more importance than the actual F# usage... for example, I expect (especially as multi-core escalates) that immutable design will flourish in C#. But I don't see people switching from C# to F#. I've tried both, and C# definitely (for me) keeps things more maintainable and understandable.
Don't forget that with delegates, and with lambdas for closures, we have a lot of ability to write in the functional style from within C#.
About 10-15 years. That's roughly what it takes for any new language (not just a lick of paint on an older language) to gain traction. Take for example Python and Ruby - both started in the early 90's and really only gaining momentum now. There are exceptions - C# being one.
What i hope for is rather than pushing for F# to take over any other .net language, that they would add the ability to VS2010 for you to have multiple programming languages in the same project. As far as I know you can't do that today, but I could be wrong. This would easily allow people to have a F# file for one aspect of a thing they need, and then C# or VB for the rest (UI logic, state, etc).
And people keep treating F# as if it's a revolutionary new language... the only thing revolutionary about it is that it is a functional language built on .NET. so just because it's new, that doesn't mean it's going to become the norm. Look at Erlang and Haskell... they're both functional languages that have been around for about 2 decades each, and neither has reached mass acceptance outside of universities.