- Mastering Elixir
- André Albuquerque Daniel Caixinha
- 325字
- 2021-08-05 10:42:44
Why functional programming?
Coming from an object-oriented background ourselves, we can't emphasize enough how valuable this shift is. Adopting the functional programming paradigm brings along some benefits, such as the following:
- The data-transformation flow becomes more evident. This is in contrast with what usually happens in object-oriented programming, where objects strive to encapsulate the data; in functional programming, we mutate data using functions. This makes the transformations that are applied to the data explicit, which in turn makes the applications written this way easier to understand.
- Functions are (mostly) side-effect-free. With immutable data, you can be sure that the value of a certain variable you hold a reference to will remain the same, since if another function or process wants to change it, it has to create a copy first—and operate on that copy. This makes code much easier to analyze and comprehend, since you can rest assured that your variables will remain as you expect. However, note that since Elixir isn't a pure functional language, your code can still have side effects. For instance, if a function writes to a file, it creates a side effect.
- Programs can be parallelized easily. Coming out as an added bonus of immutability, it's usually very simple to parallelize this type of program, since there is no shared state.
One possible disadvantage of having immutable data is that you can incur a performance penalty, as each time you need to change something, you must make a copy of it. This greatly depends on the implementation, and while this concern is generally valid, Elixir employs clever techniques when compiling your code to minimize this effect. For instance, in certain conditions, Elixir can just point to existing variables when creating new ones, as it knows all variables are immutable and will never change.
If you're overwhelmed with all this functional programming jargon, lie down and relax, as we will explore these concepts in greater detail throughout this book.
- Implementing VMware Horizon 7(Second Edition)
- C語言程序設計案例教程
- FreeSWITCH 1.8
- 機械工程師Python編程:入門、實戰與進階
- Podman實戰
- Monitoring Elasticsearch
- 從0到1:Python數據分析
- 全棧自動化測試實戰:基于TestNG、HttpClient、Selenium和Appium
- jQuery Mobile移動應用開發實戰(第3版)
- JavaScript動態網頁編程
- Java7程序設計入門經典
- Spark技術內幕:深入解析Spark內核架構設計與實現原理
- Building Scalable Apps with Redis and Node.js
- C語言程序設計實驗指導教程
- Illustrator CS6中文版應用教程(第二版)