Book Image

Mastering F#

By : Alfonso García-Caro Núñez, Suhaib Fahad
Book Image

Mastering F#

By: Alfonso García-Caro Núñez, Suhaib Fahad

Overview of this book

F# is a multi-paradigm programming language that encompasses object-oriented, imperative, and functional programming language properties. Now adopted in a wide range of application areas and is supported both by industry-leading companies who provide professional tools and by an active open community, F# is rapidly gaining popularity as it emerges in digital music advertising, creating music-focused ads for Spotify, Pandora, Shazam, and anywhere on the web. This book will guide you through the basics and will then help you master F#. The book starts by explaining how to use F# with Visual Studio, file ordering, and the differences between F# and C# in terms of usage. It moves on to explain the functional core of F# such as data types, type declarations, immutability, strong type interference, pattern matching, records, F# data structures, sequence expressions, and lazy evaluation. Next, the book takes you through imperative and asynchronous programming, F# type providers, applications, and testing in F#. Finally, we look into using F# with distributed programming and using F# as a suitable language for data science. In short, this book will help you learn F# for real-world applications and increase your productivity with functional programming.
Table of Contents (16 chapters)

Chapter 10. Distributed Programming in F#

"Free lunch is over" is a sentence we've been hearing in the last years about the evolution of CPU computing. Until very recently, without any effort on our end, the simple passage of time made our programs faster, thanks to the continuous improvements in the speed of computer processors. However, this is not happening any longer; CPUs are not getting faster, devices (be it a workstation, a laptop, or a mobile device) are getting more processing units instead. For developers, this means their programs won't run any faster on better machines unless they do their homework first: that is, prepare their software so it can scale up and run on multiple CPU cores in parallel. What's more, in the age of cloud computing, software also needs to scale out-run on multiple machines, overcoming problems such as corruption of shared state, locks due to race conditions, and fail recovery.

One of the reasons for the resurgence of functional programming (which, we...