dotnet / fsharp

The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
https://dotnet.microsoft.com/languages/fsharp
MIT License
3.83k stars 772 forks source link

How did you start using F#? #2766

Closed matthid closed 6 years ago

matthid commented 7 years ago

Inspired by https://github.com/Microsoft/visualfsharp/issues/1339 and all the other parts we maybe should ask how existing F# developers were "convinced" to start using F#. I think this might bring some insights in how more people can be attracted.

So I'll start with my story:

If someone has an idea to aggregate the data later let me know.

slang25 commented 7 years ago

For me, it was dumb luck. I thought I was a happy C# developer, then in 2015 I saw the Advent of Code and thought this seems like a set of simple mathematical problems that would lend itself to F# (up till then, I knew about F# but didn't really "get it").

In doing the first 5 questions, I had the most fun coding I'd had in many years, I could solve the problems fast, and if it compiled, it worked first time! That was crazy to me. The code I was left with was clear, concise and something I could be proud of.

Since then, I've done more and more with it, and found the language is full of so many pleasant features, smart defaults, and overall just well designed. Now when I use other languages, I really notice the general ceremony in everything, how painful OO is, and how I really do need DU types for solving day to day problems.

Now I have a strong passion for F# and do my best to let people know about it.

surban commented 7 years ago

I was exploring Visual Studio and stumbled upon the Visual F# tutorial project in the New Project dialog. From there I worked my way to the F# for Fun and Profit site and finally bought the Expert F# 4.0 book.

cartermp commented 7 years ago

I had to build a small DSL at my work while I was still in school, so I googled "build DSL C#", only to see a link saying "use F# to build your DSL". I was interested, so I built one and loved it. I didn't know about FPParsec. Since then, F# has been my favorite language.

gcowin commented 7 years ago

I had developed a communication manager in C# -- mostly by myself. I had CI with a suite of automated tests. Had QA'd it myself and even a few beta testers. Once it was deployed, guess what happened? NullPointerException even though my code was littered with null checks and validation. My mind was opened. There must be a better way, then I found it: F#. Powerful and expressive. I am most happy when coding in F#.

colinbull commented 7 years ago

In 2007 - 8 I was working on an optimisation engine for the U.K power system. My C# solution was lost in a sea of static members and delegates (pre-linq) I spoke with a colleague at the time about there must be a better way, googled a little and the MSR site showed this language called F#. From there on happy days.. :)

isaacabraham commented 7 years ago

I'd been toying with F# around the time F#3 came out. I struggled big time to "get it", but it was third time lucky for me (massively helped by going on a two day course run by some blokes called Tomas and Phil...). I'd just finished working on a large rules engine for a customer in finance and trying to create a composable, reusable set of rules within the confines of "accepted" OO design standards was a nightmare. I started to realise that what I'd been trying to do for the last 18 months was design a functional pipeline in an OO straight-jacket.

After that I started working on more data oriented solutions, as well as distributed systems - again, F# was a great tool for me to use. I never looked back.

wastaz commented 7 years ago

I was building a hobby-project in C# and I wanted full test coverage. However, this led to me either writing a million assertions in each test case or writing a ton of Equals implementations for classes that didnt need them - and then of course since I had written those I would have to test them as well. While I could have my tools generate these Equals, that just felt like I was adding more and more crap-code just for my tests sake and I didnt like it. So I was googling around for ways to get around it, and I found a reference to F# records which has automatic implementation of structural equality. So I quickly rewrote just my data model in F#...and then it kept going, in a couple of weeks time I had rewrote the entire project (apart from the tests) in F#.

Looking back at that code, some of it is quite atrocious. But then I was hooked.

tpetricek commented 7 years ago

Sometime around 2005 or 2006, I got interested in the idea of translating C# to JavaScript, because I thought it was quite silly that you had to write a lot of logic twice if you wanted to add some client-side functionality to your ASP.NET WebForms applications. I though this would make a good topic for a final Bachelor project at the university.

I came across the Abstract IL project on one of the Microsoft Research web sites, done by a person named Don Syme. Abstract IL seemed to provide a nice way of reading IL and I thought I could use that to read compiled C# code and convert it to JavaScript. Around that time, I got invited to a regional MVP conference that was happening in Cambridge and I emailed Don asking if he will be there and if we could meet.

Don was kind enough to reply to a poorly written email by an undergraduate student and met with me. He showed me a much nicer way of doing this using "quotations" in this new language called F#. I thought that was fun, so I ended up learning F# and writing F# to JavaScript translator instead.

Lleutch commented 7 years ago

I started F#, during my master thesis on session types. I have been told to use F# and type providers to see if we could have an implementation of session types in F#. So in fact, it was a first deep usage of F# I had, but because of a bit of background I had with Ocaml I wasn't lost with the syntax. The learning curve was really fast, and I learned a lot coming to F# even about things unrelated to F# but to other languages.

So far, I have mainly used F# for meta-programming in small projects (Type providers), and since I am using F# I find it hard to go back to other languages.

forki commented 7 years ago

I was writing my first attempt of a diploma thesis at the time when F# was hitting public beta. I immediately saw that it was a much better fit for what I was trying to do (compared to my ugly C# prototype). In the end I did not finish that first attempt for various unrelated reasons but from this time on I was a convert. Today I think it's a better choice for basically every programming problem.

deapsquatter commented 7 years ago

I was looking for a better a way after being stuck in OO hell for a while. I came across a talk on Functional Programming and chose to learn F# (coming from a C# background). I've never looked back. In fact about to ship a largish application to production in the next few weeks, 100% F#.

xperiandri commented 7 years ago

Just watched https://channel9.msdn.com/blogs/charles/luca-bolognese-c-and-vbnet-co-evolution-the-twain-shall-meet

kurtschelfthout commented 7 years ago

I wanted to pick up functional programming again (after some exposure to Haskell and Scheme in university), and did C# in the day job. I didn't want to spend time learning new APIs on top of learning another language, and being already familiar with .NET I saw this beta ML-like language created by some random guy in MSR ;). I started reading functional programming papers that I wanted to understand better, and decided to do that by prototyping an F# implementation of them.

misterspeedy commented 7 years ago

I was working at a fairly large financial/actuarial services company, and I happened to overhear a snippet of conversation where someone mentioned F#. Raised it with my then boss who said "I wouldn't bother with that - it's just FORTRAN for .NET". And I thought - 'that can't be right', so I googled it. I then came across Luca Bolognese's great talk at PDC2008 (https://channel9.msdn.com/Blogs/pdc2008/TL11) and I was hooked. I really didn't find the learning curve hard - I just came in to work early for a few weeks and spent an hour in Cafe Nero before work reading Expert F# and experimenting with code. It wasn't long before I knew enough to start writing non-production utilities to help with my day job. I've never looked back.

Takeaways:

kylesonaty commented 7 years ago

A coworker and I were tasked to do a project. He was a python guy and I was a C# guy. We both didn't want to give in so we decided on F#. The project was successful and programming in F# changed my way of thinking. It was like I had another tool my arsenal for solving problems.. I was hooked and now I try to write F# whenever I can.

0x53A commented 7 years ago

Like surban, I saw the F# node in the New Project dialog in VS2010, and wanted to know what that was about.

It took me about three tries of just opening the tutorial and staring at the code to even get started wrapping my head around the different syntax and the functional concepts. Before that, I didn't have any exposure to ML languages or even functional paradigms in general (a bit of Java in school, C++/C# privately).

Now that I actually know how easy it could be, I get sad each time I need to write another null-check, or write another Equals override for a poco in C#.

Currently I am introducing a few little F# projects into our C# solution at work. If it was up to me, we would write all new code in F#, but some of my coworkers are kind of averse to change, so where it makes sense, I create small modules in F# and wrap them with a C#-friendly interface.

pblasucci commented 7 years ago

After spending ~10 years doing pro software development in Lingo/ActionScript/JavaScript/VBScript/VB/C#/VB/.NET, I felt like there must be a better way...

So, while getting up-to-speed in Ruby and Python (and realizing they are no better), I stumbled across this blog explaining "functional programming" via Java. I didn't really follow a lot of it. But I liked the bits that I did understand. And, overall, it seemed promising. So I started looking in to it. But I couldn't make much headway with Haskell or OCaml (and I was still foolishly mistakenly asserting that "strong static typing" was the only way to code... blame JavaScript). This was 10-11 years ago and the tooling and documentation and communities were, in a word: insufferable. Then, right as I was near giving up, I stumbled onto an MSR site about an FP language for .NET -- with a Visual Studio plug-in no less. Being able to focus on language/concepts and not tooling/libraries seemed to lower the bar quite a bit. Then, shortly after I started playing around, Robert Pickering released Foundations of F#. That sealed the deal for me. I had an approachable guide. And that, combined with being able to use Lutz Roeter's Reflector, was enough to get me "over the hump", so to speak. I mean - hey - we didn't have Scott Wlaschin blogging back then (though Dustin Cambell wrote some helpful little gems). And then I found HubFS (anyone remember that? No? TL;DR: F# community has always been terrific for learners). Anyway, after nearly two years of nights and weekends, I felt brave enough to try slipping F# into production (circa 2009). And have now done so on 7 teams at 6 employers over the last 8 years.

Although, I still think there's a better way (hint: the issue isn't the language or the paradigm). But that's a bit off-topic for this thread. ;-)

ForNeVeR commented 7 years ago

Back in 2011 my CTO asked us, the programmers, what technical talks are we interested in (because we're hosting local .NET user group and organize talks periodically). I said that I'm interested in functional programming and F# and I'd like to listen to some external speaker talking about F#. And guess what? I was asked to be the speaker talking about F# a couple of months afterwards :)

So, I've learned F# and gave a talk at the local .NET user group conference. It was a small beginner lecture, but it was a successful one, and our local universities asked me to give it a couple of times again (and I've done it).

After that I've started using F# in some of my pet and scientific projects, and still enjoying it today.

gfritz commented 7 years ago

I did OCaml in college (loved it), got my first job in a C# shop, tried Haskell but got bored, got REALLY bored with Microsoft CRM at work, decided to try F# to be less bored. Started making build scripts, cleanup scripts, several throwaway prototypes to replace CRM screens, and I haven't lost interest yet!

simoncousins commented 7 years ago

The best way to learn is to work on a real problem.

Don't tell anyone, but what I did was: Solution -> Right-click -> Add -> New Project -> Visual F#.

A year or so later F# code was in production (May 2010) balancing the schedule for a fleet of UK power stations.

After twenty years of trying this was my first release of something I had written with zero production defects. All the more remarkable because it was written in a language that I had never used before. I used to think that I was the problem, turns out it was the tools that I and most of the software industry was using all along.

I needed no further encouragement. It gave birth to the NOOO Manifesto.

nooo

More projects followed including the rewrite of an existing C# solution in F#. This came with the stunning realisation that the F# solution could fit in the blank lines of the C# solution with some room to spare for comments.

comparison

The rest is history.

tabakerov commented 7 years ago

Tried Scala (it was about 5 years ago). Tools (Eclipse + SBT +...) were awkward and not friendly for me (and quite slow compilation), but I'd loved FP. So I keep searching, tried Haskell (it was hardcore and I wasn't ready) and found F#.

darrix commented 7 years ago

I needed to do a fair number of data transformation scripts a couple of years ago. I had lots of experience with C# but it felt clumsy in this kind of work and then I stumbled into F#, its REPL and, wonder of wonders (not always, but enough of the time to make it valuable), type providers! I was sold. It's been a bit of a curve, however.

Acclimating my thinking to immutability and currying took time and I probably spent too much time looking at the OO features of F# (my C# life preserver)-- but all in all, I enjoy development more with F#

yawaramin commented 7 years ago

I actually also initially thought that F# was just Fortran for .NET; no idea how that got in my head. Eventually I found out the truth. Anyway, I spent a few years trying to learn Haskell while also trying to write my 'killer app' in C#, and whenever Haskell would become too overwhelming, I would jump into F# to clear my head and have some functional fun. Eventually I learned OCaml and Standard ML and rediscovered F# in a new light, in terms of its ML heritage.

vilinski commented 7 years ago

There was times when i played with Nemerle - .NET metaprogramming language. Somebody in internet complained, that F# has alienated syntax compared to C# and Nemerle. That made me curious instead :) I have already known about F# from Visual Studio Start Page or "Whats New" I guess, but didn't know why I actually need to learn it. First production stuff was F# script, importing data From Excel to SQL Database. Sounds easy, but it was complex and ugly because of data mess on both sides. Almost failed trying to use type providers for Excel and SQL, they was not prepared for such ugliness. But it worked somehow and made me excited, because it was unthinkable to do in C# in a short time. So I was completely sold to FP and fired my boss because I failed to excite him about F# :-) Currently use more scala than F# because it has not enough libs running on linux, but it still grows. Already made build scripts for some old C# projects and looking forward to .NET Core

TIHan commented 7 years ago

I don't have much of a story. At the time right before F#, I was sort of anti - .NET. I was writing C at home and C# at work. I tested out FP in certain areas in C and I liked it. It was then I decided to find an actual FP language. I chose F# because of it being multi-paradigm and functional first, according to wikipedia :). After I started using it, I knew this was something that I wanted. And continued. F# made me love .NET as well.

xdaDaveShaw commented 7 years ago

I can't really remember why I wanted to learn it TBH, I'd been working on making my C# more functional and less imperative, and then found there was a language on .NET that was functional first. At NDC London a couple of years ago there was a talk from Bob Martin on Functional Programming and one from Don Syme on Type Providers, and I realised how cool F# was. From then on it was just lots of reading on F# for Fun and Profit (I think I've read the entire site) and different blogs, especially the Advent calendars to learn as much as I could. I've been watching OSS movements of F# for a few years and making the odd little contribution where I can.

Now I am in a place I'd be happy to start using it at work (probably with some supervision), I just need convince more people to let me it. It's my first choice language for anything new new utilities and small home projects, and I love to teach other people about it.

Stift commented 7 years ago

My C# wasn't satisfying me anymore and I looked for a solution to get out of that hamster wheel. F# was one of the things I looked through. A good tip by @forki was to just go into it via FAKE. Best advice I got. From here started my journey to FP.

KevinRansom commented 7 years ago

I got a job on the Visual FSharp Tools team. ... I hope that isn't too disappointing.

rmschroeder commented 7 years ago

I had been writing C# for years, and then found Channel 9 videos, Erik Meijer's, which led me to Haskell. I developed a library in C# I originally modelled in Haskell, and it was a really satisfying result because of how general it was - however, the type annotations were an atrocity. As I continued to learn FP, finding F# was natural. Still learning, but having a lot more fun doing so.

Thorium commented 7 years ago

I've been using C# from its beta-stages. I've been interested in how to make good software: How to keep maintainability in enterprise environment? How the intention of the developer would be visible in the source code?

There was this tool, Google Reader, and it was easy to use to follow blogs. So I was following over 80 blogs daily, mostly .NET and C#. To name a few people: Bart de Smet, Eric Lippert, Roy Osherove, Rick Strahl, Phil Haack, Scott Guthrie, Tomas Petricek, Don Syme, Brad Abrams, Jeff Attwood, John Skeet, Dustin Diaz, Justin Etheredge, ... I had ranked those blogs to categories by how good they were.

I also didn't have a dishwasher, so I watched Channel9 videos by Erik Meijer, Brian Beckman and others while I was doing dishes...

Back in about mid-2007 there was some discussions about F# so I ordered Robert Pickering's book Foundations of F#, which was the more-initial-one of the two possibilities that there were available. But it wasn't motivating enough by itself, so I stayed in C#.

But during those years, Tomas Petricek, who I initially had ranked as an average C#-developer-blogger, improved so much as a developer, by-passing many other bloggers and my own skills, that in the end of 2009 I knew that if I want to keep up with the top-level-developers, I have to shift to F#. So from 2010 on, I didn't use C# anymore on my spare time.

fjoppe commented 7 years ago

I've been making Silverlight games in the period 2008-2010, until Silverlight became unpopular. Still I noticed that I learned a lot, and decided to make a game, not to market, but to learn stuff. Such a project is big enough to learn new technologies and reach a relative deep level. I'm a conctractor, so it also helps proffessionally. The game I worked on was "Three is a crowd", which really is reversi for three players. At one point I was programming the AI, and thought that a functional language would be more appropriate than C#. I knew F# came with Visual Studio 2010, and I learned FP during college (mid 1990's). My first plan was just to do the AI in F# and leave the rest in C#, but that plan changed quickly and rewrote all in F#. After the first time compilation, I removed only two bugs, and then it worked. I also compared both code bases and I was astonished with the F# compactness. Unfortunately, I have not used F# in a paid job yet, jobs are very, very slow in my country. But I don't use C# anymore for my hobby-projects.

ghost commented 7 years ago

My story somehow started 2008 with Perl. The first time I was introduced to the concept of Functional Programming was with Perl and the book Higher-Order Perl (HOP) (http://hop.perl.plover.com). Technically this book is more like Lisp in Perl. Before I did Procedural programming with C and later on OO with C++ and Perl, but i was never really satisfied, I always felt everything is still too much complicated. With HOP I learned quite a new few techniques that i used a lot and i really liked it, it was like the missing bit I always searched for.

From this on I wanted to learn more about functional programming. One language that always popped out was Haskell, especially in the Perl community because the first Perl 6 compiler was written in Haskell. I tried to learn Haskell but it hadn't a big priority as most of the time I was still using Perl. On top i didn't liked most learning material. Most learning material starts by just typing in stuff in the REPL. And i really don't like to use just the REPL. I usually want to write code in an editor in a file that i then can play around and execute. Most Haskell books don't do this because they don't want to introduce IO. I guess I started learning Haskell like 10 times or more, but i never got warm with it. I always started, learned a little bit, then aborted, and re-did it.

Then around 2012 I started with Unity and game programming. I first started with JavaScript as i knew JavaScript and i knew its functional features. It took me 1 hour to realize that the crap integrated in Unity was not JavaScript but technically a completely different language (They later also renamed it to UnityScript). So i searched for an alternative. The obvious was C#, so i started learning C#. I didn't really got so deep into C#. I don't know the first time I learned about F#. But I learned it was a functional-first language and I always wanted to learn a functional language to get better at it, because I really liked HOP so much. As F# also was running on Mono (what Unity uses) I also had the idea that i possible could replace it with C# and use F# with Unity. So it had a lot more value into learning it as i also could use it in practice.

So i spent some time learning it and i really got attached to it. Unlike Haskell it really clicked the first time I used it. I felt a lot more comfortable with F# compared to C#. I also could just write a simple console application with printing some code with good old printfn (I really like printf from C/Perl, i always thought it was a draw-back when C++ introduced it streams). No one said i should do everything in a REPL because we don't want to introduce IO.

F# also felt a lot more natural from my background of Perl/JavaScript and the functional techniques I learned in Perl. As i learned more and more about F#, at some point I decided to replace all my C# code (what wasn't much at this point) with F# and only use F# in conjunction with Unity. So I guess, I'm somewhat the first one on this list that really came outside of the .Net ecosystem to F#. I would still say that my previous background prior to F# was Perl/JavaScript.

psiLearn commented 7 years ago

We have an in house simulation program I was using for some rotordynamic System. I wanted to do a parameter variation and the way my college showed me was to start the program from F#. To do more I started to look for more on the web and the video from Luca Bolognese, Scott Wlaschin, Ploeh, Tomas Petricek, Evelina Gabasova changed my view on programing. The only disappointing thing was that I took quite a while to do what Luca did in his video.

asik commented 7 years ago

It was somewhere early 2012. I had a background in C++ and C# mainly. F# was intriguing to me because it took a different approach (not object-oriented) and had very clean syntax. Once I understood some of the advantages (no nulls, programming with immutable values instead of mutable entities by default, algebraic types), I've always advocated it as the superior solution to C# and it would be hard to go back. That said, I am happy with the feature set of F# and I hope there will be more focus on enterprise-grade tooling and generated code quality. VS2017 is promising but it's unusable for us in its current state...

ghost commented 7 years ago

It was a COPLAS Talk with regard of Microsoft announcing that it will be supporting F# as a first class language in Visual Studio 2010

At that point in studies I was taking the "Foundation of Computer Graphics" where we worked with a C++ framework. Template hell error messages (hidden bug that went for ages until a fellow Brazilian exchange student found it) and every single change took minutes to build. Don loaded a script with the good old XNA and begin to evaluate new moving pointers into the open Windows Form. At that point I knew that F# was the way to go !!!

(I had used Moscow ML and OCaml before that though, and maybe I tried F# out before, but I recall this as the tipping point)

ghost commented 7 years ago

@gfritz you might find this interesting -> http://delegateas.github.io/

eiriktsarpalis commented 7 years ago

I first heard about F# in 2009 while reading for a PhD in category theory. Apparently some crazy folks from the building across the street were bringing OCaml to Visual Studio. I was too anti-Microsoft at the time to bother trying it, but two years later I had dropped out of my studies and landed an F# job at Nessos.

giacomociti commented 7 years ago

FP was a prominent topic when I studied CS 25 years ago. But once in the industry I realized that nobody was using it. The only attempt I could find was something called HaskellDB from an academic called Erik Meijer. A few years later when he joined the industry and brought us LINQ I was really happy. But only around 2012 I decided it was time to try FP for real. I don't know why I skipped F#, even though I was a .NET guy. Clojure and Erlang seemed more mature to me at that time, but none of them really clicked to me. When I finally tried F# I immediately felt like home again. The core language reminded me of Miranda and at the same time it was clearly not an academic language, but a very practical and effective one.

CyberQin commented 7 years ago

Write math funciton in C# can be painful.So i BaiDu and Bing and Google a easy language for math.Python had been considered a while ,but i'm not a professional IT worker,I just need to get full power of .NET,so i choose F# for my algorithm,C# for my UI

battermann commented 7 years ago

Reading "Clean Code" by Uncle Bob was one of the main drivers for me to look into functional languages and F#.

I remember a chapter on "Don't return or pass null". So I started to search for ways to improve my code in this respect and tried patterns like "Null Object", which wasn't really satisfying.

One day I heard about a programming language where null values don't exist. I couldn't imagine that you could write large programs without using null at all (silly me ;-)). The idea was incredibly disruptive and intriguing to me.

I decided to learn F# and bought "Real-World Functional Programming With examples in F# and C#" by Tomas Petricek. I picked F# because of .NET interoperability.

I was hooked ever since.

MusaJ commented 7 years ago

In Numerical Algorithm for Video, ML/AI & Modems coding pieces of Householder, Givens transforms my Matlab bill was over $20,000.00 and worse code was obscure C libraries spaghetti, then found John Harp's concise, clear, parallel, async, entropy, hardware, RTL, DSL, web code in F# for $0.00 Python, Wasm lag alot. Lots needs TBD, so am Happy to learn & mentor F# <3

chkn commented 7 years ago

I was writing an IL decompiler in C# using the visitor pattern at the time. The code was super verbose, and when I came across F# pattern matching, I started imagining how much cleaner it would be if I could use that. So I started "learning" F# by porting my C# project into it.

I think this was a good way to learn because I had an existing algorithm and just had to learn how to express that in F#. It started pretty OO (as a mostly direct port), but as I dug into it more, I started refactoring things to take more advantage of F#'s unique features.

One thing I'd like to say is that I was ambivalent about F# when I first heard about it, mostly because I had somehow picked up the misconception that F# caters more to academic and scientific programming. I didn't realize how powerful F# is for general purpose programming until I really dug into it.

Now I use F# for all my personal projects. :)

stanuku commented 7 years ago

I always had a curiosity about FP and F# in .NET. Being a C# and OOP developer for many years, I always wanted to do things in a more succint manner when possible without a lot of ceremony or bloat. A couple of years ago, I was trying to buid a DSL and one thing led to another with F# and I got hooked. I'm still a F# fan boy and will be. Hoping to see F# more in mainstream and more support in terms of barrier to entry for a new F# enthusiast akin to someone interested in C#.

odytrice commented 7 years ago

I was listening to dotnet rocks and Yan Cui was talking about F#. That was when I first heard about it. The syntax put me off immediately. It took stumbling on several talks from Don Syme, Tomas Petricek and Rachel Reese for me to give it a try.

Ultimately it was a this talk Ten things F# can do that C# can't by Liam McLennan and his pluralsight course FSharp-Fundamentals That made pushed me over the edge. And I'm so glad I stumbled upon those talks especially the one from Liam.

bentayloruk commented 7 years ago

I attended the Microsoft PDC in 2008 and the charismatic Luca Bolognese did the rest! You can still see his Introduction to Microsoft F#.

luajalla commented 7 years ago

I was a first-year student (2008) just starting to learn programming with some C, Java and C#. I just found out about existence of lambdas and asked a senior student how I could learn more about "something like this, but even more cool". He told me that there's functional programming and languages like Haskell and F# for .NET, so I went for F# + discovered F# community on twitter, it's quite addictive, you know :) I remember people telling me that nobody ever would use it in the "real world"... And it's my day-time job for several years already.

BentTranberg commented 7 years ago

After decades with Delphi and C# I was getting frustrated at their inefficiency, and F# happened to enter main stage at the right time. I'd likely have a career change if it wasn't for that.

I remember trying out F# on a small problem involving somewhat complicated generics, without actually knowing what the syntax was, and to my astonishment I guessed right and it worked, and with such ease with the help of type inference. Then I tried replicating the task in C#, and after much fumbling around I read on Stackoverflow that C# generics could not handle that particular case. Of course I was impressed.

So then I wanted to learn F#, but it wasn't quite as easy as I'd hoped it would be. I got hold of most available books, but they were all a rather frustrating experience. It was like wanting to learn to drive, and only having a manual for the car itself. Then I stumbled onto this amazing site "F# for fun and profit", which gave me a totally different perspective. From there on, it has been fun fun fun.

mclang commented 7 years ago

I have always being interested about different programming languages.

Couple years ago I learned about functional programming from book called "Seven Languages in Seven Weeks". First I started experimenting with Clojure, but after problems with JVM and startup times I looked elsewhere... and found F#. Newer looked back since then.

theprash commented 7 years ago

I worked in a semi-technical software role for a few years and started automating tasks mainly through PowerShell scripts. I started to get interested in functional programming from blog posts and conference talks. FP felt quite natural to me and just easier, simpler and more powerful than OO (I had a more Mathematics educational background). I had tried to get into Java and ActionScript several years before but quickly got bogged down in OO and found them too confusing as first languages.

I tried a few FP languages and then settled on Clojure, playing around with it for quite a while. I think it had quite good "marketing" compared with many languages: a very enthusiastic community of people who are very articulate. Also, coming from dynamic PowerShell, it was nice not to have static typing to learn at the same time. At this point I knew about F# but I had still not been drawn to it, even though I worked in the .NET world.

I decided that I wanted to be a functional programmer but I saw very few FP jobs, so I reluctantly learnt C#, which allowed me to move to a C# developer role temporarily. I decided to learn F# at the same time because it was the .NET FP language. I found F# easier to learn providing that I ignored objects completely, and quickly found it to be a lot more productive than C#. Using C# in a large team helped me to see the benefits of static typing, and even using F# on my own I found that fighting with the compiler was a lot less frustrating for me than running code to see I had made some silly mistake, which I would do very frequently in dynamic languages. And using F# scripts and FSI allowed the quick feedback and experimentation that I was used to in PowerShell and Clojure. F# had the best of both worlds in a way, and after a few months of this I was completely sold on F#.

allykzam commented 7 years ago

Matching @kurtschelfthout, my day job has me working on VB/C#, and I wanted to pick up functional programming. I was pretty happy with Haskell already, but the Haskell experience on Windows was a bit lacking at the time, so towards the end of 2013 I took a look at F# and built some toy projects with it, and then started quietly slipping it into things at work.

The ability to use F# to power build scripts via FAKE greatly helped my ability to push the language, as it gave me a place to use the language without making the "important" code impenetrable to the rest of the team. Later on, the interop to/from other .NET languages made it easy to make excuses like "I just want to use F# for this one part, because the data model would be so much easier to express there."

Can't say as my team has many "large" projects, but we now have a fair number of WPF and WCF applications built completely in F# (with some XAML sprinkled in :wink:).