By ΠΠΎΡΠΌΠ°Π½Π΄ ΠΡΠΈΠΊ
ΠΡΠΈΠΊ ΠΠΎΡΠΌΠ°Π½Π΄, 2023, ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π· ΡΠ°ΡΡΠ΅Ρ, Π²ΡΠ·ΡΠ²Π°Ρ ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠ° ΠΊΠ½ΠΈΠ³Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Β«Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉΒ», ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π² Β«Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΒ», Π΄Π΅Π»Π°Ρ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½Π΅Π΅. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π±ΠΎΡΡΠ±Π΅ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΠΌΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°.
Erik Normand, 2023, Programmer's Library
Codebases are growing in complexity, posing challenges for developers. This book explores how to identify code that alters system state and how to refactor it. You will learn to convert many state-changing "actions" into "computations," leading to simpler and more logical code. It addresses strategies for tackling complex synchronization errors in asynchronous and multithreaded code, and how composable abstractions prevent code duplication and enhance expressiveness.