You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
7.1 KiB
152 lines
7.1 KiB
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
|
|
|
<!-- Enable responsiveness on mobile devices--> |
|
<!-- viewport-fit=cover is to support iPhone X rounded corners and notch in landscape--> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, viewport-fit=cover"> |
|
|
|
<title>Julio Biason .Me 4.3</title> |
|
|
|
<!-- CSS --> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/print.css" media="print"> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/poole.css"> |
|
<link rel="stylesheet" href="https://blog.juliobiason.me/hyde.css"> |
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface"> |
|
|
|
|
|
|
|
|
|
|
|
</head> |
|
|
|
<body class=" "> |
|
|
|
<div class="sidebar"> |
|
<div class="container sidebar-sticky"> |
|
<div class="sidebar-about"> |
|
|
|
<a href="https://blog.juliobiason.me"><h1>Julio Biason .Me 4.3</h1></a> |
|
|
|
<p class="lead">Old school dev living in a 2.0 dev world</p> |
|
|
|
|
|
</div> |
|
|
|
<ul class="sidebar-nav"> |
|
|
|
|
|
<li class="sidebar-nav-item"><a href="/">English</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/pt">Português</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/tags">Tags (EN)</a></li> |
|
|
|
<li class="sidebar-nav-item"><a href="/pt/tags">Tags (PT)</a></li> |
|
|
|
|
|
</ul> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="content container"> |
|
|
|
<div class="post"> |
|
<h1 class="post-title">Functional Reactive Programming - Stephen Blackheath, Anthony Jones</h1> |
|
<span class="post-date"> |
|
2020-03-04 |
|
|
|
<a href="https://blog.juliobiason.me/tags/books/">#books</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/reviews/">#reviews</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/stephen-blackheath/">#stephen blackheath</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/it/">#it</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/anthony-jones/">#anthony jones</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/stars-0/">#stars:0</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/books-2020/">#books:2020</a> |
|
|
|
<a href="https://blog.juliobiason.me/tags/published-2015/">#published:2015</a> |
|
|
|
</span> |
|
<p><a href="https://www.goodreads.com/book/show/24671986-functional-reactive-programming">GoodReads Summary</a> |
|
Functional Reactive Programming teaches the concepts and applications of FRP. |
|
It begins with a careful walk-through of the FRP core operations and |
|
introduces the concepts and techniques you'll need to use FRP in any language. |
|
Following easy-to-understand examples, you'll learn both how to use FRP in |
|
greenfield applications and how to refactor existing applications. Along the |
|
way, the book introduces the basics of functional programming in a |
|
just-in-time style, so you never learn anything before you need to use it. |
|
When you're finished, you'll be able to use FRP to spend more time adding |
|
features and less time fixing problems.</p> |
|
<span id="continue-reading"></span><div> |
|
☆☆☆☆☆ |
|
</div> |
|
<ul> |
|
<li>(-) Some phrases are a bit hard to read. Maybe it's because I'm |
|
not a native English speaker<sup class="footnote-reference"><a href="#1">1</a></sup>, but some are akin to "my beautiful |
|
nature photos", which you can read in different ways ("my beautiful photos |
|
of nature", "my photos of beautiful nature") and I had to backtrack and |
|
read the whole thing again.</li> |
|
<li>(-) Code listings are a mess: long and with no separation of concerns. It is |
|
ok if you use lambdas for simpler functions, but when you keep piling |
|
lambdas over lambdas, things get a bit out of hand. Trying to explain some |
|
functionality in a 200 line function is not actually helpful.</li> |
|
<li>(-) The ePub version seriously need another check. Some code listings are |
|
pure text, following the font size the user set in their reader; other are |
|
screenshots/images of code, which get way out of hand, as some of those |
|
had a font 1/5 of the size I set up (yes, I use a large font, I'm reading |
|
at night without my glasses, but the point remains).</li> |
|
<li>(--) There is very little explanation on what FRP really is, but a lot about |
|
how to do things with Sodium, the authors' library. Instead of focusing on |
|
how to build your own FRP system, using Sodium as reference, the book |
|
focuses <em>a lot</em> in using Sodium and its relationship with FRP instead |
|
of explaining the concept behind the FRP functionality itself.</li> |
|
<li>(--) The authors show some weird prejudices against TDD. For example, they |
|
say that FRP doesn't require TDD and that using TDD is actually <em>harmful</em> |
|
for FRP (!!<sup class="footnote-reference"><a href="#2">2</a></sup>), "unless you test logic" (???<sup class="footnote-reference"><a href="#3">3</a></sup>). I have to ask: Seriously? |
|
What do you think TDD is about? Lines of code? TDD says that "tests should |
|
validate behaviors, not implementation" and I'm wondering why the authors |
|
are so reticent against TDD when their concept of TDD seems completely out |
|
of place.</li> |
|
<li>(---) There is a strong gatekeeping in the book. While talking about other |
|
frameworks, the authors decided to focus more on "why this framework |
|
is not pure FRP, while Sodium is" instead of, again, focusing on the |
|
concepts of FRP itself. "FRP says so and so, you can build this with |
|
framework X using that and that" is a good way to do it; "FRP says so and |
|
so, framework X do this which is not what the FRP says, so framework X is |
|
not FRP, but Sodium is!" is a dickish way to downplay other frameworks. |
|
Not only that, but every time Sodium break some FRP rule (rules that |
|
the authors themselves keep listing), they put a long explanation on why |
|
it's ok for you to break the rule there when using Sodium, but Sodium, |
|
although requiring you to break some FRP rule, is actually a pure-FRP |
|
framework, and not those pesky other frameworks that are not pure-FRP |
|
frameworks.</li> |
|
</ul> |
|
<p>Honestly, I read the book and I still don't understand FRP; all I got was some |
|
concepts for a Sodium framework.</p> |
|
<hr /> |
|
<div class="footnote-definition" id="1"><sup class="footnote-definition-label">1</sup> |
|
<p>... which may appear as no surprise, with the amount of grammar mistakes |
|
in this post. :p |
|
<sup class="footnote-reference"><a href="#2">2</a></sup>: That's surprise. |
|
<sup class="footnote-reference"><a href="#3">3</a></sup>: That's confusion.</p> |
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</body> |
|
|
|
</html>
|
|
|