My reasons to love F#
Cross platform and Open Source.
F# easily runs on Windows, Linux and OS-X. You may write applications for mobile platforms like Windows Phone, iPhone and Android. The source is absolutely open and on github, all code is transparent, any ideas and enhancement ideas for the language are always welcome.
What is F# suitable for.
Enterprise solutions, games, mobile apps, web applications and services, custom scripts, cloud programming and a whole bunch of other things.
F# is the best language based on .NET for exploratory programming. It provides pretty nice and convenient environment - F# Interactive is a great tool to try out algorithms and code in an interactive and responsive way, where you can see the feedback immediately. You can write in the interactive window directly, or execute your .fsx scripts interactively.
F# is a functional programming language, and this brings us really a lot of benefits when it comes to doing data science, big data, machine learning or some other computational tasks.. or even simple web and enterprise development.
Functions in F# behave very similar to mathematical functions so it is really easy to write computational code in F#. In most cases this makes code much cleaner and more readable. It also allows developers to dedicate their time more to thinking about the problem compared to actually writing the code.
If you write your jobs in a functional way, then your functions can be mostly described by what they take as an input and what they produce as a return value. So if they compile and give you the expected result today, they'll likely keep producing the right result in the future as well.
Functional style in F# also aims to help in constructing your logic as simple, repeatable actions that can be abstracted out into a function and then when logic becomes more complex - we can use function composition by calling these simple functions in sequence. And the real benefit here is that our programs are constructed of small and clear pieces that are less error prone and easier to understand. It really makes life easier when it comes to working with data and doing UI work, like if you're formatting that data for visualization.
F# is really good for prototyping and modeling, it makes it very easy to create our own DSLs, to make the maintenance of business logic more efficient and just to improve productivity.
Programming productivity, because...
F# has number of abstractions, such as higher-order functions ..and features, that encourage highly optimized operations and increase the productivity while writing code. With pattern matching it becomes really easy to work with data structures and make a flow against specified parameters where deconstruction is done automatically. Strong typing and type inference really help to focus on real task you want to solve rather than on caring about types, because F# compiler infers type information for us. F# has a type providers feature that supports information rich programming and simplifies working with data, when the schema is stable at runtime and during the lifetime of compiled code.
Using F# also facilitates distributed programming, because in functional programming the emphasis is put on composition of functions and functions can be combined, sent remotely, applied locally on distributed data sets and other different things. Also, with immutable data structures you can forget about data race conditions.
Concurrent programming becomes totally easier by escaping side-effects and mutable variables and facilitating code distribution over several CPU. Since functions do not make implicit effects, you can call them as many times as you want, even in different threads, etc., without having to worry about the state of the program.
F# is really a neat language without noisy constructions in code. By using indent based system it not only makes us free from the necessity to use braces and semicolons, it also structures the code well by default. And in general, F# syntax is overall comfortable, it doesn't have unnecessary distractions and greatly tunes the programmer on the real end problem to solve.
There is an open, friendly and very active community around F#. People are always happy to help and ready to answer on whatever questions you might have. The best way to ask is to use stackoverflow or twitter with fsharp hashtag. If there are more specific questions or suggestions and if it's not obvious whom to ask – it's always possible to address it to fsharp.org or to any member of F# Board.
This point makes F# much easier to get for newbies. There is a lot of literature on F#, including books, papers, articles, blog posts and feeds on F#, as well as courses and video tutorials.
If you are interested in working with F# and other FP languages, check out our Functional Works job-board!
Originally published on lenadroid.github.io