Expert F# (Expert's Voice in .NET) Hardcover – 2 Aug 2011
- Choose from over 13,000 locations across the UK
- Prime members get unlimited deliveries at no additional cost
- Find your preferred location and add it to your address book
- Dispatch to this address when you check out
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
About the Author
Antonio Cisternino is a professor in the Computer Science Department of the University of Pisa. His primary research is on scientific computing, meta-programming and domain-specific languages on virtual-machine-based execution environments. He has been active in the .NET community since 2001 and developed VSLab, a Microsoft Visual Studio add-in to support MATLAB-like programming in F# and Visual Studio. He is also author of annotated C#, an extension of C#, and Robotics4.NET, a framework for programming robots with Microsoft .NET. Cisternino holds a Ph.D. in Computer Science from the University of Pisa.
Most Helpful Customer Reviews on Amazon.com (beta)
- High example density.
- Broad coverage of a lot of practical F# topics.
- Good depth on all the important practical stuff.
- I felt like I learned a lot, not only about F#, but about some cool C# features too.
- I felt like I'd be a lot more productive as a programmer if I could master the language.
The (not so) Bad
- Structurally, I initially got lost with some of the more complex examples. And it was straining to page back and forth re-reading things until I grasped the concepts. The density of information in the text sometimes makes it less valuable as a teaching aid and more valuable as a reference.
The (not so) Ugly
- I could not get one of the async examples to actually compile. I had to search the web for some hints to add declarations that seem to have been omitted from either the example code or F# implementation itself. In short, the example code, my development environment, F# itself, of some combination thereof was missing what appears to be an extension method for WebRequest.GetResponseAsync. I had to code it myself. But once I did, it worked! (This might not be a criticism of the book.)
F# is a wonderfully expressive and practical language and, at the same time, very elegant. This book will help the reader to apply this newfound power and to appreciate how even the most obscure features all seem to "hang together" so beautifully.
The first half of the book teaches the language with an excellent example-driven approach; making it fun and useful from the start. Separate chapters cover each supported programming paradigm: functional, imperative, object-oriented and language-oriented; along with chapters on solid engineering techniques such as encapsulation and packaging, and working well with other .NET code.
The second half of the book applies the language to various technologies (WinForms, web, database, ...) and to various very interesting domains including lexing and parsing, asynchronous and concurrent programming (a particularly strong suit). My absolute favorites were the symbolic differentiation and propositional logic samples in chapter 12 - these left me in a state of awe! Also, the second half covers more engineering concerns such as testing and debugging, interop and library design.
Throughout the book are sprinkled many little nuggets of wisdom from the authors; especially helpful to those who (like me) are struggling to rationalize experience in OO and imperative programming with the functional mindset.
The book contains an enormous amount of information; an essentially complete coverage of the language. However, it simply can't cover everything. Some topics missing include application to some specific technologies such as WPF and Silverlight. Also, functional data structures and meta-programming (with the extremely powerful F# quotations mechanism) are only lightly covered.
It's a very well written and well organized book. It makes for a great read when you're first mastering the language and makes for a great reference to keep on your shelf thereafter.
Expert F#, as suggested by its title, is not like this: it is aimed at more experienced programmers. The book will not teach you, for instance, what is functional programming or hammer to your head the best ways to use lists, an ubiquitous data structure in functional languages. But it explains how the things work in F#, so that programmers already familiar with other functional languages will have no trouble picking it up. F# also has object-oriented capabilities, which are explained in a chapter, without however going much deep into OO concepts; the book is about the language, not the paradigms.
And it does this well. Roughly half of the book is about the language itself, the other half are examples of applications and how to use some important libraries. As I was already familiar with OCaml and Haskell, I mostly skimmed through chapters 1 to 4, reading more closely starting with chapters 5 (generic types) and 6 (how objects fit into F#). From chapter 7 (encapsulating and packaging your code) on, the book starts to get really interesting; the next one is about common techniques, and chapter 9 is the best in the first part, explaining language-oriented programming, an area where functional languages really shine.
There are mandatory chapters about Windows Forms (11), Web programming (14) using .NET and data access, including how to use LINQ in F#, but I really liked chapters 12 (working with symbolic representations), and 13 (concurrency and asynchronous workflows). The former includes two cool examples: a symbolic differentiator and a verifier for logic circuits based on BDDs (Binary Decision Diagrams). There are other important and advanced chapters treating topics like interoperation with C and COM, debugging and testing F# programs, and F# library design.
All in all a very good book about the best current functional language to use in the Windows platform. I have two minor quibbles about it, though: the first few chapters about the language really could be made more interesting (although it didn't affect me much, as I only skimmed them) and some of the more exciting new features of F# could be explained in more detail. Specifically, workflows and active patterns. They are quite recent additions to the language, however, and there is some additional material promised to feature in the book's site.
Anyway, I will keep this book nearby when programming in F#. It is this kind of book that you'd want to keep around, even after learning the language.
However, this book is *packed* with information. So, if you do get this book, and have difficulty...just try to write some code and re-read sections after you do some experimentation. You can't learn F# by reading about it. It is too elegant and subtle for that...you need to actually do it. So, read this book in your computer chair, not your easy chair, and TRY STUFF OUT...TAKE YOUR TIME ...there is a lot of information on each page. You'll be a better programmer in ANY language after going through this book.
Look for similar items by category
- Books > Computing & Internet > Digital Lifestyle > Online Shopping > Amazon
- Books > Computing & Internet > Programming > Languages & Tools
- Books > Computing & Internet > Programming > Microsoft Windows
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Functional Programming
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Software Architecture