Launching a new language is easy - getting it used is hard. The combination of existing code and existing skills is a strong barrier to adoption, and even excellent languages like Ruby and Python have struggled to break out of their niches. What hope is there for F#, the new language that Microsoft has sneaked into Visual Studio …
Quantum Leaping into a Known Unknown, AI.
I have a very specific question of F# ...... Is it a Turbulent Tempest Tangent ...... Envisaged and Provided for Beta Intelligent Development in Intelligence Deployments, which would really sock it to Search Engine Pretenders to Microsoft's Crown?
The spooky thing with that question is, that now that it is asked, is it so.
Once again, Microsoft misses the mark(eting) etiquette. Don't they know how people will instantly mock this new "F#" name? <shaking head>
Maybe it is aimed at grown-ups...
... you know, the type of people who do serious things for a living, like work in finance and scientific HPC space. The type of people who actually evaluate on substance rather than a passing resemblance to an already boring (and hopefully receding) web meme.
LOL = FAIL;
Even though Microsoft are a a bunch of corporate evils, they do make me laugh when they try to do marketing. Should of called it G flat. Or maybe that's the name for some new google language?
Mocking? Evidence, please.
@ VS Dude
Why will people mock F# because of its name? I've been keeping my eye on this new language for quite some time now and not once have seen any sign of people doing this. Got any hard evidence?
Should HAVE, not should of.
Anyway, the "G flat" name is taken for the GNU clone of F#.
Another language doomed to be stuck in Windows?
So, with apologies to Gosling, F# is "sort of OCaml with reliability, productivity and security deleted"?
But seriously, it's undoubtedly the case that some of the stuff coming out of Microsoft research is pretty good. That's a pity, as the rest of the computing community isn't going to pay a lot of attention to it until Microsoft stops slapping patent protection all over everything.
Patents are a civil problem.
Microsoft—like any US-based corporation—are obliged to work within the US' legal framework. If that framework offers clear incentives for registering patents and defending them (which it does), then that's what's going to happen.
Or do you seriously believe that *any* corporation enjoys paying vast armies of lawyers? They're not cheap, and they're more commonly a business *expense*, not a source of profits.
YOU—the People—are entirely responsible for the laws your government creates. Including those built around patents, trademarks, copyrights and other forms of IP. Don't like it? Change the government to one which is more to your liking.
And no, you don't get to whine about The System: either get *involved*, start your own party, or shut the f*ck up. If you're not willing to fight for it, why the hell should others fight on your behalf?
As for F#: good on Microsoft. It's a good move on Microsoft's part. They're a dev-tools and dev-tech company first, and they're usually very good at it.
What concerns me a little is Hejlsberg's assertion that he wants to add Functional elements to C#. One of the key advantages of .NET is that you can use multiple .NET-compatible languages in your projects, so you can choose the best one for each module. The worst thing you could do to C# is turn it into a jack of all trades—you'll end up with yet another C++.
Keep it clean. Keep it simple. Keep it focused. Let F# do the functional stuff. As long as C# and F# code can co-exist in the same projects, there's no need to nail bits of the latter into the former. That way lies C++.
Re: Another language doomed to be stuck in Windows?
This is, indeed, a problem with .NET languages: They are all tied so strongly to the platform that they are of little or no interest outside this. In principle, this isn't much different from the JVM languages: Java, Scala, Clojure, JavaFX, etc., except that JVM is much more light-weight than .NET and, consequently, much more widespread.
I use functional languages (SML and Haskell mostly) almost daily and see them as being much easier to use than imperative or OO languages (which is why I find it a shame that so many are trying to retrofit OO into functional languages). I find it positive that functional languages are becoming more common (F#, Scala, Clojure, etc.), but I would have liked to see strong adoption of a functional language that is not tied to a specific platform, in particular not to a platform that is inherently OO, so you are forced to use OO libraries, which is kludgy when you work in a functional language.
RE: Another language doomed to be stuck in Windows?
I wouldn't say "doomed", I'd say "designed".
MS seem to think that if they make up their own languages then that will ensure developers stick with their platform. Where they're not making up their own languages, they're stealing other languages and adding MS cock-fuddery to ensure that learning the MS version will not prepare you for the real version.
"F#" is just the latest of these, previously we've had J++ and C#. (to name just two). Their C++ left a lot to be desired as well. Try writing a command line program (ie the classic "Hello World" example). Can't be done. Nice one MS.
I expect this new buffoonery will die on it's arse too.
"I would have liked to see strong adoption of a functional language that is not tied to a specific platform"
Hey, I'm just saying.
Re: Get involved
"And no, you don't get to whine about The System: either get *involved*, start your own party, or shut the f*ck up. If you're not willing to fight for it, why the hell should others fight on your behalf?"
Unfortunately, any "involvement" you participate in will be used by the people who *ACTUALLY MATTER* to either support their viewpoint or deride an opponent's.
I agree with you: Unless you have the *MONEY* to play the game *NO ONE* will fight on your behalf. So, "shut the f*ck up", bend over and let "The System" have its way with you.
Upshot: Its not a matter of being willing to fight for "it" - Its a matter of being able to *AFFORD* "it".
Maybe it's me, but conciseness does not mean readability, or even fast development. E.g. Perl can be very concise too
hours, not lines
Sigh, when do the language advocatists realize that programs are measured in time (to create them, better include debugging too) and not in number of lines or their density?
Harddisks are large nowadays.
How do you pronounce it?
Seriously. F sharp or F hash or something else
It'd only be F£ if you were using an ancient British 7-bit terminal.
Why *did* we use 35 for the £ sign anyway, and not the obvious 36 (the dollar sign)? (Except Acorn and Sinclair who used 96, and Commodore who used 92.)
Maybe I'm just getting cynical in my old age, but I smell another lock-in vector rather than anything 'New & Improved' (TM)
...is only in theory a good idea. In real programs, the functional approach performance of a single thread is much worse than the best possible imperative program (C/C++, Ada, Fortran, Pascal, ALGOL).
If a single F# thread yields 1/10th the performance of a single C++ thread, it is difficult to argue in favour of F#. You would need 10 CPUs with F# just to match a single CPU running a C++ program.
The reason for this inefficiency is tightly coupled with the advabtages of functional programming - the lack of memory modifications. Where you need a single variable in C you might need thousands of successive copies in F#. Your cache is being flushed by that and your memory might not fit the problem.
My guess is that ALGOL-style languages adapted to multiprocessing will deliver the best performance. Currently, effective use of multiprocessors means C++, which certainly is far from perfect.
The Sappeur language aims to provide a much more robust multithreading type system and general memory safety assurances without losing the efficiency of ALGOL-type languages:
Virtual Reality Solutions and Creation Department
"The question: how to get that message through to Microsoft's marketing department?" ..... A new Functional Parallel Core Terrain Team with Championing Drivers will Deliver the Message and Mission Messages for Microsoft making the Marketing a Doddle for Supported Platforms.
And that is a Head Honcho call and Foreign Innovative Business Model Purchase decision, defining a Head Honcho's Fitness for Future Greater Purpose?
For science!!! ?
I spent along time learning how to use Fortran 77 in the 90's for battling with data and modelling and the like for my undergraduate degree in physics. I've no idea why we used such an old version of the software (I suspected 2 reasons money, and the fact that Fortran 77 was pretty good) We were also taught C++, but never really shown how to use it.
May be this F# will break some ice in the world of science?
If its easier to write fast code, then its got to be a good thing? I'm no longer in the science world, but its always intresting to find out whats going on.
I like the slide demonstrating how code can be condensed in f# vs c# which is full of comments and other random formatting. Hell c# code is so 'code by numbers' nowadays it wouldn't take a lot of code to do the same, but thats not what they are trying to get across eh?
I'm not saying f# is bad, hell, I like functional languages, just think that slide is slightly dishonest!
Comments and line breaks
I thought the same thing, was going to post it but as you already did I'll jump on your band wagon.
Anyone thats actually going to use the language would spot that straight away, that slide would only appeal to project managers.
Anders Hejlsberg is a great man - Turbo Pascal and Delphi were ahead of the market at the time of their release.
However, he invented J++, so his enthusiasm for F# migh be seen as a kiss of death. Windows only = Fail
Sounds a highly jargon-compliant little niche
Not that it is not a good idea (or that good ideas don't tend to spawn their own jargon); it's just that jargon-compliant technologies, at Microsoft, tend to either languish in obscurity (because the rest of the company haven't a clue what to do with them, or what the problem they are designed to address even looks like, and therefore suspects them of being a conspiracy), or they aquire geek-trophy-bride status, and become smothered in layers of mediocrity, as the managers of failing projects rush to learn the new jargon, without ever understanding what any of it means.
'Failing Project' arises reborn as 'Failing Project#': fully jargon-enabled, within the new paradigm.
If the marketing department ever gets hold of it, all that will result, is that it will be further buried in endless guideline documents, spelling out exactly whether (and in which context) it is permissible to writhe the 'F' in lowercase, and what proximity, the '#' should be written, relative to '.NET'.
Any real merit will then have become obscured beneath rotting heaps of bogocity, and real technologists will disregard the new clothes without a second glance. The people already doing that sort of work, just carry on using the tools they have, and F# ends up joining 'COBOL .NET' in the back of the cupboard.
It will only run on Windows
It will presumably use the Windows common language runtime (or whatever its called) so its performance and parellizing ability will be closely linked to how well that handles these issues.
If this thing's core target market is finance its mathematical functions had better be rock solid or will they be more in line with Excel EG 1 divided by 3 =?
When you have developed your latest financial derivative instrument model how will it scale up? Is windows Server good enough to hack high performance computing?
Personally I foresee a nice little market developing for people with this language and financial modeling experience once some banks have dug themselves in deep to using it and realize they have been locked into MS yet again.
Windows Vs Unix
I used Unix for 6 years before jumping to Windows platform and never looked back. Except for now when I am forced to use Unix again. What a pain in the ar*e. Going back to vi was like some bad dream. Unix was developed in the 70's and whatever you say you can't change that. I can't talk scientifically about the performance of the Windows Server vs Unix but I never had problems with Windows servers, and the tools you get the monitor performance are amazing. In fact it was our rubbish solaris that got corrupted recently. If you are talking about Finance and real systems, check which system in the TPC.ORG
holds the record for the fastest Order management system (a typical Finance system). it's SQL Server running windows . Don't forget what the LSE is using, SQL Server and .NET. And if you tell me that it failed once so what. I'll take that any time, 1 failure in 5 years.
Really, really bad example, since the LSE are now switching away from Windows and TradElect, not only because of the serious stability issues, but also since it never came close to achieving the required performance.
It's amusing how you cherry pick your "facts".
Re: Windows Vs Unix
Not sure where that suddenly came from. The discussion was about lock-in with F# then you sudden launch into an attack on how rubbish Unix was and the corruption on Solaris. If you're going to condemn Solaris can you be specific. Sounds like a WUM ( or a M$ employee ) to me !
One failure in 5 years? Errrrmmmm, I can think of at least two that made the press.
Also the LSE is moving off their Windows implementation..........................
This is someone having a laugh surely...
I was thinking it was the usual Floundering Amateur conning his employers - but the bit about the LSE points to it being a troll. LSE didn't just fail once.
'For Microsoft, LSE was a good combination of a highly visible exchange and yet a relatively modest IT problem. After suffering extended downtime and unreliability the LSE announced in 2009 that it was planning to dump Microsoft and switch to Linux in 2010'
Unix is somewhat off topic
but I've no idea what pan2008 has been smoking. TPC-C top ten? All Unix or Linux running Oracle or DB2 databases. TPC-H top ten? When it comes to databases of decent sizes (>= 1000GB) Windows/SQL Server can't manage better than 9th place (and comes nowhere at >= 3000GB). The only reason that they top the TPC-E benchmarks is that no-one has bothered submitting results using the big iron (it's not a really heavyweight benchmark test so why should they). The really heavy duty stuff in finance is built upon Unix/Oracle/DB2 as Windows/SQL Server just doesn't have the performance and fault tolerance that is required.
Unix does not have to be a command-line driven throwback. Apple OS X is a Unix derivative, and people don't talk about that being free of eye candy and user hostile. There are likewise some pretty decent GUI shells on Linux and Solaris. The big iron tends to assume that you're employing people who know what they're doing to manage them (having spent multiple millions are you REALY going to skimp on staff wages). Think about the intended audience before complaining about an OS.
I didn't know that, however looking into the deal it makes more business sense that technical sense when they can buy some cheap sri Lankan company and therefore own the platform and everything all for 15million. The original deal was an outsource deal, outsourcing doesn't always work well, as you have 2 competing parties. They want to go down to 0.4ms from 2.5ms presently, good luck to them.
The point I tried to make was that Windows can run LSE and has done so for the past few years, not many people know that. (even on SQL Server 2000!) The big failure in 2008 was never been blamed on the system officially (not that I am rulling it out) but also happened under extraordinary circumstances with the lehmans collapse etc. Also as with anything and we know cause we many people here are technical, a good implementation or a bad implementation doesn't the platform is a success of failure. On the LSE the implementation was a success cause it made the system much more powerful than it used to be and it works well.
As for the tpc-e why other companies don't take it? Maybe cause they can't beat it yet. TPC-C is not in the main page anymore http://www.tpc.org/, cause it's easy to cheat on it, read the oracle story on the net. It will probably become obselete soon. That's why they bring more up to date tests like the tpc-e. Still it doesn't mean much, what is means is that windows servers and OS like SQL Server are at the top of the field.
F-hash (or F-sharp if you prefer)?!?!?
It's a frigging language, not a musical note.
Maybe, just maybe, we ought to go back to giving languages actual names instead of seemingly random letters followed by punctuation that is supposed to enhance the cool-factor.
I, for one, await the launch of the O$#!+ programming language. :-) But until then, I remember Cobal, Fortran, BASIC, Ada, and everything else that at least had a real name.
I kinda agree... C++, C# and the like are a pain to say and use in a sentence.
funnily though in the example only Ada was a real name (and that was just in historical deference) - the others were acroymns (COmmon Business Oriented Language, Beginner's All-purpose Symbolic Instruction Code, FORmula TRANslation etc)
frankly though it's all been downhill since VB4
Microsoft has little to gain by pushing F# actively. That can be left to the functional programming enthusiasts, who are relatively few in number but very keen indeed. Education, too, can be left to the authors of books and online tutorials. By including F# in Visual Studio, Microsoft is seeking to avoid negative consequences rather than expecting any particular positive results.
Can't leave it to them
You can't leave it to the functional programming people. Most of them are so seriously lacking in social skills they can barely speak, let alone convince people of the benefits of a language.
These odd-ball languages tend to end up being used by odd-ball people. Most love the idea that their language is close to impossible to use. For a flavour of what I mean, go look at comp.lang.apl.
Fortran will for all practical purposes be a better high-performance language than F#, Scala or any other functional or managed language. Only if your processing jobs are trivial you will use something else than Fortran, C++, Pascal or Ada. Fortran compilers can optimize scientific "number crunching" codes significantly and it is the best way to use current hardware.
This is amazing, taking into account that FORTRAN is one of the very first languages. So much to the progess in this field.
Sounds exactly the same as Erlang
... except Erlang has been around for years, is solid as a rock, multi-platform and completely free.
However I expect F# will give you a GUI environment where you can write "code" by dragging and dropping icons.
Death to OO!
On arxiv, at my last look, there were two articles on software maintenance. Most of the issues in software development revolve around understanding what other people have written. I also see that F# uses the same anal whitespace scheme as Haskell. Could not the researchers have addressed these instead of beguiling themselves with its terseness? Somewhat ironically Haskell was a classic software failure: not meeting requirements. Shouldn't Dr Jones avoid making the same mistake twice?
Declarative and procedural languages do not mix. I've been to two interviews where people were trying to get rid of Boost because it produced unmaintainable code. Don't do it! Personally, I find it difficult to switch "modes".
Having said all that I welcome any functional language. Anything's better than iffy rubric of OO.
At least they'll have to stop at G#, there being no H note on a piano.
Unless, of course, you are a German speaker where B is what, in the English speaking world is referred to as B flat and H is B. Caused me no end of trouble when I first jammed with German musicians!
twenty years ago...
...the functional language Erlang started to be used for industrial strength programming.
But a GUI toolkit is probably a good idea.
Lordy. This place makes slashdot look clever.
So many dumb comments...
It's not only marketing
It's also hard for most developers who are used to OO. Also it's not as if most developers are bored, doing nothing, waiting for a new language.
So what I guess will happen is that some devs play with it during free time write some .NET assemblies and incorporate those in bigger programs.
Programming languages should not be pushed by marketing, they need to be adopted by developers.
F# not a silver bullet
A few years ago I worked with a fellow who is a language guru (he is the technical advisor for a book on Haskell). He showed me Haskell, and I showed him JSP (Jackson Structured Programming) methodology. I commented, "It looks like someone took JSP and made a language out of it." After a while of perusing JSP, he told me, "Brian, I think you're right!"
I don't have any confidence in modern education to produce graduates who can function as actual computer programmers or software engineers. Proven techniques are not taught, and "new" languages must be introduced which *force* the programmer to use good techniques and concepts. If the programmer is taught a range of language-independent techniques, then we don't have to resort to goofy languages to implement a good solution.
Is there somewhere we can get a legible version of the slide?
first and foremost @Sean Timarco Baggaley: "And no, you don't get to whine about The System: either get *involved*, start your own party, or shut the f*ck up. If you're not willing to fight for it, why the hell should others fight on your behalf?"
@Torben Mogensen: "This is, indeed, a problem with .NET languages: They are all tied so strongly to the platform that they are of little or no interest outside this" & "...strong adoption of a functional language that is not tied to a specific platform"
IME the biggest gains is the paradigm. You need the language to support them but the underlying ideas are where the real value lies. Once you've 'got' FP, there are plenty more you can get unlinked to windows.
@ratfox: you're right, I've seen some horrible abuses of FP, but there is an underlying smoothness too.
@Marco van de Voort: you can (if you're capable) wrap up more functionality with functional stuff so simplifying conceptually and reducing lines - both reduce bugs and speed development. This is from experience.
@jlocke: FPs are *models* of computation; you specify what but that doesn't mean they have to do it that way - "The reason for this inefficiency is tightly coupled with the advabtages of functional programming - the lack of memory modifications" - Modifications are certainly permitted in the implementation if they do not modify the semantics of your program. MODEL != IMPLEMENTATION, always. Performance still is an issue though, I grant (IME).
@Colin Barfoot: "Somewhat ironically Haskell was a classic software failure: not meeting requirements." - eh? what requirements were these? AFAIK it was an experimental lang for trying stuff out. As such it seems to have succeeded beautifully.
Further: "Declarative and procedural languages do not mix" - if by declarative you mean functional then that's rubbish. I've mixed them easily and confortably (when the facilities are supported by the language) and can switch back and forth easily - and I'm no FP expert.
I'm *no* FP expert but I do like it and would get excited. But it's MS, a platform I've found I want to abandon.
The first book on this language was released in May 2007 by apress - that's almost 3 years ago. Microsoft themselves had talks on F# at TechEd later that same year. I suppose in programming language terms that could be considered new, but in general terms?
As to the "it only runs on Windows" crowd, did Mono just vanish? You can run F# applications on Mac and Linux happily under Mono.