|
Subject: RE: stepping stone: most potential customers are lost in the first ten seconds Newsgroups: gmane.comp.lang.fsharp.general Date: 2008-04-23 01:04:58 GMT (1 year, 10 weeks, 3 days, 15 hours and 35 minutes ago)
> the goals and the further direction of F# are solely for Don ...
Hah!
)I'll let you in on a secret: I'm doing F# simply because it's lots and lots of fun
In a very broad sense of the word: functional programming is fun, OO programming with F# is fun, watching people use F# is fun, Microsoft and Microsoft Research are
fun, delivering products is fun, watching people make programs and/or business and/or friends with F# is fun, etc. etc.To be honest I've found this discussion interesting and informative. There are inherent tensions in designing a language like F#, some of which are well described below. I do think many people on this list deeply care about the learning experience for
OO programmers, and so do most of us at Microsoft. And I think nearly everyone on this list also cares about preserving the essential beauty of functional programming and the cleanliness and compositional power it brings to problem solving.
That said, I'll add one thing: I do feel that sometimes we can take both functional and OO programming a bit too seriously. One personal observation I've been sharing with people lately is that F# clearly excels at being a "domain" language. What do I
mean by this? Let's take one example: recently at Microsoft Research we have seen people apply F# very effectively to probabilistic modelling to very, very large-scale data analysis tasks. You can see some of these results for yourself in the amazing paper
and F# code base at
I encourage everyone to look at this F# sample (and not just because I like chess
). Is this functional programming? Yes, the people involved are excellent functional programmers. Is it OO? Yes, the people involve wield OO very effectively indeed.
But above all this sample is neither OO nor FP: it is simply "probabilistic modelling using factor graphs", embedded in an FP/OO framework. Probabilistic programming, if you like. Programming with Gaussians, if you like.So, one of the wonderful things about F# is that, with a good basis library, you can actually end up working in your domain. In the zone. With F#, you're not necessarily "just" a programmer! You're likely to also be a probabilistic
modeller, or an AutoCAD engineer, or a finance
engineer, or
a symbolic programmer, or a compiler writer, or a simulator
implementor, or a bio-informatics engineer, or a hardware designer,
or a verification engineer or one of many other things. And on the way you can still apply a very effective range of FP and OO techniques and get all the correctness-by-construction
that static typing and a well-crafted language brings. You can, of course, also be a programmer or professional software engineer, with all the power of .NET at your hands, but F# users will have particular domain tasks and data in frame.
So I'd encourage us all to look at F# in that light: a general-purpose programming tool that can be applied very effectively to "crack open" domains like those above and apply the essential power of both FP and OO programming to problem solving in those
domains, as well as being just a great FP/OO language. Applying F# to solve problems is what it's all about, and that's where much of the fun lies.
Now, that said, I’d better get back to those release notes for the April refresh release...
![]() Kind regards & keep up the discussion
don
-----Original Message-----
From: bounce-301787-6488 <at> list.research.microsoft.com [mailto:bounce-301787-6488 <at> list.research.microsoft.com] On Behalf Of Dmitry Lomov Sent: 22 April 2008 11:06 To: F# List Subject: Re: [fsharp] stepping stone: most potential customers are lost in the first ten seconds Steve,
> When I talk about reaching OO programmers with a blend of functional and
> OO, I am basing that on marketing principles.
>
> By all means, help me debug what I propose; first understand what I seek to
> accomplish.
I guess you point right to the crux of the tension we now have on this list.
First off, I believe the purpose, the goals and the further direction
of F# are solely for Don and Microsoft to decide. The goals they aim
at do not necessarily align with what various other people on this
list and elsewhere have in mind.
That being said, here is my vision of the matter, for what it is worth.
You have a goal in mind: "Reach OO programmers with a blend of
functional and OO", that is, give OO programmers the ability to use
functional constructs. That is fine and worthy goal, and F# fulfills
that to a certain extent - but I believe that this need is better
addressed by adding functional constructs to an essentially
imperative, OO language - and this is the way C# goes at the moment.
I feel that many people on this list see the goal of F# differently -
"give functional programmers the ability to use and interoperate with
.NET framework". I believe that this was the original motivation for
F#, wasn't it?
These two goals are not mutually exclusive - but forsaking the
essential "functionality" of the language to reach more OO programmers
will betray the second goal - and the reason for F#'s existence.
I am sure Don and the F# team has a tough job balancing the language
between these two, and various other, competing directions. Language
design is a difficult job, and hasty and inconsiderate decisions would
hurt a lot.
But we all know that Don and others on F# team read this list, and
listen carefully. May I be so bold to suggest that their task is not
becoming any easier if what they hear is constant yelling and moaning?
Friendly,
Dmitry
On Tue, Apr 22, 2008 at 7:10 AM, ToolmakerSteve98
<toolmakersteve98 <at> shawstudio.com> wrote:
> Everyone here is wondrously generous in sharing their hard-earned insights
> into what "functional" is, and why it is so valuable.
>
> When I talk about reaching OO programmers with a blend of functional and
> OO, I am basing that on marketing principles.
>
> By all means, help me debug what I propose; first understand what I seek to
> accomplish.
>
> Most people, if presented with a message that sounds like "functional means
> forgetting everything you've learned about programming", will simply tune
> out. Worse, they may become resistant to hearing anything further about
> functional programming.
>
> Outcome: they think "It's not for me".
>
> --------------------------------
> I propose an alternative message:
>
> --- A Stepping Stone "blend" of OO and functional ---
>
> Here is a style of programming that you can:
> 1. Reach quickly and confidently.
> 2. Gain these [...] good benefits from.
> 3. With minimum pain: by making just a few adjustments to your familiar
> programming style.
>
> You can use most of what you already know. You can start benefitting from
> some powerful new features.
>
> Outcome: they think "This might be worth my time." "I can do this" "This is
> awesome; I can quickly become more productive".
>
> And even better: I would miss some of these features if I went back to
> programming in (C#, Java, Python, or proposed ECMAScript 4).
>
> Respectfully, ~TMSteve
>
> ---
> You are currently subscribed to fsharp as: dslomov <at> gmail.com
> To unsubscribe send a blank email to
> leave-301335-94369.b7d2b8f20d146c772e9e3ba9f4549403 <at> list.research.microsoft.com
> Please see our Privacy Statement:
>
---
You are currently subscribed to fsharp as: don.syme <at> microsoft.com
To unsubscribe send a blank email to leave-301787-6488.d9fea4ca7e4a74c318ec27c1deb0796c <at> list.research.microsoft.com
Please see our Privacy Statement:
--- You are currently subscribed to fsharp as: gclfm-fsharp <at> m.gmane.org To unsubscribe send a blank email to leave-302974-65852.adebe1b4a332ae019c5cbb114397cf51 <at> list.research.microsoft.com
Please see our Privacy Statement: http://research.microsoft.com/msrsupp/privacy.htm |
|
|