There is so much I could say about lots of interesting Silverlight and WPF projects but I’m not allowed to (you know, non-disclosure agreements, hyper-secret projects and whatnot), so let me write a few words about something which I’ve had in the back on my noodle now for months.
In the early days of .Net a lot of developers (yours included) moved from Visual Basic to VB.Net to discover that it was quite easy since the syntax was so similar. It would take you a while then to discover that though the syntax is similar the stuff under the cover was quite different, more powerful and lots of things were possible you could only dream of before. Eventually later on everyone would move from VB.Net to C# because C# was the development language for the ‘real’ ones and VB.Net more a Playmobil language. The fact that Microsoft clearly always has pushed C# first and the documentation was mostly giving examples in C# also helped of course. For the record, I remember fun forum comments like ‘…I’ll never move to .Net, ever. I have invested years in Visual Basic and will stick…‘. Recently I also came across comments similar to this with regards to F#:’…what is this let-keyword in F#, it’s going backwards to Visual Basic syntax. Will never use F#, ever…’. Some people say the same about ASP.Net MVC in fact, it’s a mixture of HTML and .Net code in one file and, hence, very much like the ASP code before ASP.Net came along (you have to be 30+ however to remember the days of ASP before .Net).
Anyway, so now we have F# on stage and everybody (that is 95% of the professional devs) is wondering: is this what we were waiting for? The comments regarding the F# syntax remind me of the VB-guys ten years ago cursing .Net because it’s typical when paradigm shifts occur in the industry. A characteristic of being human is that we adapt to everything but it doesn’t mean we do it with ease. The point is, however, that language syntax is just the top of the iceberg and the real revolution is going on underneath, the conceptual shift is what matters rather than just the way it’s written. In the margin of these remarks I have to admit I sometimes have difficulties to understand why certain things are so difficult to adopt by developers. For example, something close to my heart is diagramming and workflow and there is a clear explosion of visual programming these days (beside but in support of declarative programming). Workflow Foundation has been around for six years or so but for some reason devs don’t really like it. I wonder if the new diagramming gadgets (UML, flowcharts etc.) inside Visual Studio 2010 will incite devs to think more visually now? A lot of people find diagrams more confusing than enlightening. I fear the same can be said about F#, I fear a lot of devs don’t/won’t like it. For the following reasons:
C# has grown so much in ten years time that most developers will admit that the need for some feature or syntax construct never occurred to him/her. This then, re-affirms what I said above; the real shift is not the language but what’s underneath. F# is just a way to give you access to certain things which are either not possible of more difficult in C#:
Now, the question is obviously; how many programmers need this? Concerning the mathematical advantages I suppose it will always be a niche in the community. Parallel algorithms and DSL’s on the other hand, I think we’ll see a growth in the next ten years and it’s in this area that F# will stand out. Note, I’d be happy to see fancy Silverlight stuff written in F# but think about the developer profile you’d need for this: someone with a bit of design skills, fluent in math-concepts and F# abstractions, knowledgeable in Silverlight….hmmm, unlikely to find someone like this (I’ll consider myself as the exception that proves the rule).
To conclude, let me give you some material or a path which could be helpful if you want to pierce through the unfathomable F# world:
In case somehow you didn’t get the point; start learning F#. It’s an intellectual challenge but refreshing and a good investment, it’s just the beginning of new era.
I didn’t take this langauge seriously for years. Then one day I started taking LINQ seriously in C#. Then I realized the value of using Lambdas (in C#) to abstract away all my “what” rather than “how”. Then I picked up Programming F# and merely glanced at two chapters. Then read 4. Got excited, then read the whole book typing in the code. This was last week.
I’ve always been a Prolog fan, but not decent .NET implementation kept me from taking it seriously (I like to leverage my 10 years of expertise in the platform).
That said, I do a lot of heavy server based work that actually will greatly benefit from F#. Perhaps not in the Silverlight world, but in the back end, and searching, and computational arena I am taking a bias towards the simplicity and expressivity of F# (though my brain is in overload to absorb all the concepts and variations of expressing them).
For creating mini-DSL’s, F# seems to be king (of the .NET langauges I’ve used). Whether it’s the future or not, I don’t know. I can’t convince anyone I work with to even read about what F# is let alone take it seriously, but it has certainly changed the way I do things. Just wait until they start working with my code that is implemented in F#
By Shawn B. May 4, 2010 - 6:41 pmPersonally, I don’t think F# will ever become a mainstream language but that’s not a problem. Certain things in life have a big value but remain in a small circle, think of advanced math and composing symphonies.
By Francois May 4, 2010 - 7:59 pmIt’s rewarding to learn F# on its own whether it’s the future or not, much like it’s a life changing experience to visit certain countries or understand certain ideas.
Anyway, good to meet someone who enjoys F# too. I would love to work on F# projects but it’s unlikely I’ll convince any customer of mine to move in that direction. Well who knows what the future brings…
[...] full post on Orbifold Link to this post! Share and Enjoy: Tags: cents Category: RSS – Orbifold [...]
By My two cents on F# | OOP - Object Oriented Programing May 6, 2010 - 4:37 pm