- Hands-On Functional Programming with TypeScript
- Remo H. Jansen
- 248字
- 2021-07-02 14:03:10
Stateless versus stateful
Pure functions and referentially transparent expressions are stateless. A piece of code is stateless when its outcomes are not influenced by previous events. For example, the results of the isIndexPage function will not be influenced by the number of times that we invoke it, or by the moment in time when we invoke it.
The opposite of stateless code is stateful code. Stateless code is very difficult to test and becomes a problem when we are trying to implement scalable and resilient systems. Resilient systems are systems that can handle server failures; there is usually more than one instance of a service, and if one of them crashes, others can continue handling traffic. Also, new instances are created automatically after one of the instances has crashed. This becomes very difficult if our servers are stateful because we need to save the current state before a crash and restore the state before we spin up a new instance. The whole process becomes much simpler when we design our servers to be stateless.
With the arrival of the cloud computing revolution, these kinds of system have become more common, and this has led to an interest in functional programming languages and design principles because functional programming encourages us to write stateless code. The opposite can be said of OOP because classes are the main construct in OOP applications. Classes encapsulate state properties that are then modified by methods, which encourages methods to be stateful and not pure.
- 基于粒計(jì)算模型的圖像處理
- 深入淺出Windows API程序設(shè)計(jì):編程基礎(chǔ)篇
- STM32F0實(shí)戰(zhàn):基于HAL庫開發(fā)
- HTML5+CSS3+JavaScript Web開發(fā)案例教程(在線實(shí)訓(xùn)版)
- 從學(xué)徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- Flux Architecture
- 精通MATLAB(第3版)
- 批調(diào)度與網(wǎng)絡(luò)問題的組合算法
- Android系統(tǒng)原理及開發(fā)要點(diǎn)詳解
- Node.js:來一打 C++ 擴(kuò)展
- Test-Driven Machine Learning
- Django 3.0入門與實(shí)踐
- Geospatial Development By Example with Python
- Less Web Development Cookbook
- C#程序開發(fā)參考手冊