Найти Π² Π”Π·Π΅Π½Π΅

🚩 АлгСбраичСскиС эффСкты: элСгантная ошибка ΠΈΠ»ΠΈ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ?

Π’ послСднСС врСмя Π½Π° слуху Ρƒ программистов ΠΈ исслСдоватСлСй появилось ΠΌΠΎΠ΄Π½ΠΎΠ΅ словосочСтаниС β€” «алгСбраичСскиС эффСкты». ΠšΡ‚ΠΎ-Ρ‚ΠΎ считаСт ΠΈΡ… спасСниСм ΠΎΡ‚ Π½Π°Π΄ΠΎΠ΅Π²ΡˆΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ β€” Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ услоТнСниСм. Π― ΠΆΠ΅ Π²ΠΈΠΆΡƒ Π² Π½ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ старых ошибок, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² соврСмСнный синтаксис ΠΈ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ. НСдавно я наткнулся Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π‘Π΅Ρ‚ Кьосиб, которая ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ сформулировала ΠΌΠΎΠΈ собствСнныС сомнСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ «эффСктных систСм» (effect systems). Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ: Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ алгСбраичСскиС эффСкты β€” Π½ΠΎΠ²Ρ‹ΠΉ этап развития, ΠΈΠ»ΠΈ ΠΌΡ‹ снова наступаСм Π½Π° Ρ‚Π΅ ΠΆΠ΅ Π³Ρ€Π°Π±Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ оставляли шишки Π½Π° Π»Π±Ρƒ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ динамичСской области видимости? Если ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ, Ρ‚ΠΎ алгСбраичСскиС эффСкты β€” это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Волько Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Β«ΠΏΠ°Π΄Π°Ρ‚ΡŒΒ» ΠΏΡ€ΠΈ ошибкС, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚: На Π±ΡƒΠΌΠ°Π³Π΅ это Π·Π²ΡƒΡ‡ΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: ΠΊΠΎΠ΄ становится Ρ‡ΠΈΡ‰Π΅, Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибками β€” элСгантным ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Однако, ΠΊΠ°ΠΊ это часто Π±Ρ‹Π²Π°Π΅Ρ‚, Π·Π° красот
ОглавлСниС

Π’ послСднСС врСмя Π½Π° слуху Ρƒ программистов ΠΈ исслСдоватСлСй появилось ΠΌΠΎΠ΄Π½ΠΎΠ΅ словосочСтаниС β€” «алгСбраичСскиС эффСкты». ΠšΡ‚ΠΎ-Ρ‚ΠΎ считаСт ΠΈΡ… спасСниСм ΠΎΡ‚ Π½Π°Π΄ΠΎΠ΅Π²ΡˆΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ β€” Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ услоТнСниСм. Π― ΠΆΠ΅ Π²ΠΈΠΆΡƒ Π² Π½ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ старых ошибок, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² соврСмСнный синтаксис ΠΈ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ. НСдавно я наткнулся Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π‘Π΅Ρ‚ Кьосиб, которая ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ сформулировала ΠΌΠΎΠΈ собствСнныС сомнСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ «эффСктных систСм» (effect systems).

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ: Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ алгСбраичСскиС эффСкты β€” Π½ΠΎΠ²Ρ‹ΠΉ этап развития, ΠΈΠ»ΠΈ ΠΌΡ‹ снова наступаСм Π½Π° Ρ‚Π΅ ΠΆΠ΅ Π³Ρ€Π°Π±Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ оставляли шишки Π½Π° Π»Π±Ρƒ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ динамичСской области видимости?

πŸ”Ž Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ алгСбраичСскиС эффСкты ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎ Π½ΠΈΡ… всС говорят?

Если ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ, Ρ‚ΠΎ алгСбраичСскиС эффСкты β€” это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Волько Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Β«ΠΏΠ°Π΄Π°Ρ‚ΡŒΒ» ΠΏΡ€ΠΈ ошибкС, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚:

  • πŸŽ›οΈ ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ своё Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ участку ΠΊΠΎΠ΄Π° (Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒΒ» эффСкта).
  • πŸ”„ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, словно Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ.

На Π±ΡƒΠΌΠ°Π³Π΅ это Π·Π²ΡƒΡ‡ΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: ΠΊΠΎΠ΄ становится Ρ‡ΠΈΡ‰Π΅, Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибками β€” элСгантным ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Однако, ΠΊΠ°ΠΊ это часто Π±Ρ‹Π²Π°Π΅Ρ‚, Π·Π° красотой Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ.

πŸ“Œ Главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ динамичСской области видимости

Автор ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π‘Π΅Ρ‚ Кьосиб, ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ алгСбраичСскими эффСктами ΠΈ «старой болСзнью» β€” динамичСской ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚?

πŸ‘‰ ДинамичСская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ контСкст выполнСния (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ эффСктов) опрСдСляСтся Π½Π΅ явно ΠΈ статичСски структурой ΠΊΠΎΠ΄Π°, Π° Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²ΠΎ врСмя выполнСния.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вызывая ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π΅Ρ‘ эффСкт. Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ нСочСвидности, слоТности ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок. Битуация повторяСт ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Java с checked exceptions, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Ρ‹ с Π±Π»Π°Π³ΠΈΠΌΠΈ намСрСниями, Π½ΠΎ быстро стали Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ болью ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

πŸ“š ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹: старыС Π΄ΠΎΠ±Ρ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Π·Π°ΠΌΠ΅Π½ ΠΌΠΎΠ΄Π½ΠΎΠΉ систСмы эффСктов?

ΠžΡ‚Π²Π΅Ρ‚ прост ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½ β€” ΡΠ²Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для управлСния зависимостями (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² индустрии красиво Π½Π°Π·Π²Π°Π»ΠΈ dependency injection). Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства это Π΄Π°Ρ‘Ρ‚:

  • 🧩 Π―Π²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ
    Π›ΡŽΠ±ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, взглянув Π½Π° ΠΊΠΎΠ΄, сразу Π²ΠΈΠ΄ΠΈΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ сСрвисы, рСсурсы ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ мСстС прилоТСния.
  • πŸ› οΈ Π’Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ
    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-сСрвисы Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Β«Π·Π°Π³Π»ΡƒΡˆΠΊΠ°ΠΌΠΈΒ» (mock), Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΡŽΠ½ΠΈΡ‚-тСстированиС.
  • πŸ“ ΠŸΠΎΠ½ΡΡ‚Π½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
    Код с Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ зависимостями Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Всё ясно: сСрвис Π½ΡƒΠΆΠ΅Π½ β€” ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉ Π΅Π³ΠΎ явно.

Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ собствСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΠ°Π· ΠΎΡ‚ динамичСски управляСмых зависимостСй (Ρ‡Π΅Ρ€Π΅Π· глобальноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅) ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ явной ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сдСлал Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΡ‰Π΅, Π° программистов β€” счастливСС.

πŸ€” Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅: старыС Π³Ρ€Π°Π±Π»ΠΈ ΠΈΠ»ΠΈ новая Π½Π°Π΄Π΅ΠΆΠ΄Π°?

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, алгСбраичСскиС эффСкты β€” это красиво. Они каТутся СстСствСнным Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Но Π»ΠΈΡ‡Π½ΠΎ я, вслСд Π·Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°, Π½Π΅ Π³ΠΎΡ‚ΠΎΠ² Π·Π°Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ€ΡŒΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ индустрии с динамичСским контСкстом исполнСния.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, особСнно коммСрчСскиС ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π΅ тСрпят нСявности. Π›ΡŽΠ±Π°Ρ абстракция Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ. И Ссли эффСктная систСма создаёт Π½ΠΎΠ²Ρ‹ΠΉ слой абстракций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слоТно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, стоит всё ΠΆΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ?

Π”Π°, явная ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΡ€ΠΎΠΉ каТСтся скучной ΠΈ Π΄Π°ΠΆΠ΅ «тяТёлой». Но «тяТёлая» ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π§Π΅ΠΌ ΠΊΡ€ΡƒΠΏΠ½Π΅Π΅ становится ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚Π΅ΠΌ яснСС Π²ΠΈΠ΄Π½ΠΎ: «скучныС», Π½ΠΎ понятныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ Ρƒ элСгантных, Π½ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ….

πŸ“œ Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ алгСбраичСскиС эффСкты, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ:

  • πŸ” ВсСгда ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΠΉΡ‚Π΅, насколько новая абстракция Π΄Π΅Π»Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄ понятнСС, Π° Π½Π΅ просто красивСС.
  • πŸ§ͺ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ старым ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ способом β€” явными ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.
  • ⚠️ Если всё ΠΆΠ΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эффСкты, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ области ΠΈΡ… примСнСния ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΆΠΈΠ·Π½ΠΈ, Ρ€Π΅Π΄ΠΊΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅. Π§Π°Ρ‰Π΅ ΠΌΡ‹ повторяСм ошибки ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΠΎΠ²Ρ‹Ρ…, Π±ΠΎΠ»Π΅Π΅ изящных Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Вопрос лишь Π² Ρ‚ΠΎΠΌ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π»ΠΈ ΠΌΡ‹ Π½Π° этот Ρ€Π°Π· вынСсти ΠΈΠ· Π½ΠΈΡ… ΡƒΡ€ΠΎΠΊ?

πŸ”— Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ новости: Algebraic Effects: Another mistake carried through to perfection?

πŸ”— ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅: