Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠšΠΎΠ΄Π΅Ρ€Ρ‹ Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ. Π Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ ΠΎ рСмСслС программиста». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 69

Автор Π‘Π΅ΠΉΠ±Π΅Π» ΠŸΠΈΡ‚Π΅Ρ€

Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ для практичСских Ρ†Π΅Π»Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ описаниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅: «Клапан 1 Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΊΠ»Π°ΠΏΠ°Π½ΠΎΠΌ 2. Π­Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ всСгда Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ сбалансировано. Π­Ρ‚Π° функция всСгда Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ большС нуля». Π­Ρ‚ΠΎ нСбольшиС частичныС спСцификации, Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅. Π­Ρ‚ΠΎ просто утвСрТдСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹.

Как ΠΈΡ… Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ? Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ приспособлСны для этого. ИмСнно это ΠΈ происходит, Ссли ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² Quick-Check β€” свойства ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ функциями языка Haskell. Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ функция reverse являСтся своСй ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ напишСм check reverse с Ρ‚ΠΈΠΏΠΎΠΌ список ΠΈΠ· А -> булСвскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π˜Ρ‚Π°ΠΊ, checkreverse ΠΎΡ‚ xs Π±ΡƒΠ΄Π΅Ρ‚: reverse ΠΎΡ‚ reverse xs Ρ€Π°Π²Π½ΠΎ xs. Π­Ρ‚ΠΎ функция, которая всСгда оказываСтся Π²Π΅Ρ€Π½ΠΎΠΉ. Ѐункция-свойство. Но ΠΎΠ½Π° написана Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ самом языкС, ΠΈ это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ статичСских ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ… этого. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π»Π΅Π³ΠΊΠΎ. Но всС Ρ€Π°Π²Π½ΠΎ, Ссли свойство записано ΠΏΠΎ всСм ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, это большоС ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ гСнСрирования тСстовых Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ QuickCheck.

По-ΠΌΠΎΠ΅ΠΌΡƒ, ΠΏΠΈΡΠ°Ρ‚ΡŒ частичныС спСцификации Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΠ»ΠΎΠ΄ΠΎΡ‚Π²ΠΎΡ€Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠ΄Π½Ρƒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π° всС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡ… придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒ статичСской Π»ΠΈΠ±ΠΎ динамичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅. Π’Ρ‹ Π½Π΅ Π΄ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°, Π½ΠΎ ваша ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² этом возрастСт. Π”ΡƒΠΌΠ°ΡŽ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это ΠΌΡ‹ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π‘Π΅ΠΉΠ±Π΅Π»: Π’Ρ‹ опрСдСляСтС ΠΌΠ½ΠΎΠ³ΠΎ свойств для всСх Π²Π°ΠΆΠ½Ρ‹Ρ…, ΠΏΠΎ-Π²Π°ΡˆΠ΅ΠΌΡƒ, Π²Π΅Ρ‰Π΅ΠΉ. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎ возмоТности проводится статичСская Π»ΠΈΠ±ΠΎ динамичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Π’Π΅Π΄ΡŒ ΠΌΡ‹ Π½Π΅ смоТСм ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ для Π½ΠΈΡ… всСх?

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Но Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ Ρƒ вас большС шансов. Однако ΠΌΡ‹ всС Ρ€Π°Π²Π½ΠΎ слишком Π΄ΠΎΠ»Π³ΠΎ раскачиваСмся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, ΠΏΠ΅Ρ€Π²ΠΎΠ΅ β€” это Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свойства.

МнС каТСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ этого глобального ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, «всС ΠΈΠ»ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎΒ», Π² сторону ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ статичСского ΠΈ динамичСского тСстирования частичных спСцификаций. Π­Ρ‚ΠΎ повысит Π²Π°ΡˆΡƒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π° большСС Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ нСльзя. Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ спСцификации Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π²Π΅Ρ‰ΠΈ Π²Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π° 0,1 с ΠΈΠ»ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 ΠšΠ±Π°ΠΉΡ‚ памяти. Часто Π² Π½ΠΈΡ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ говорится ΠΎ рСсурсах, ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π”Π°ΠΆΠ΅ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ спСцификации, ΠΈΠ·-Π·Π° этих ΠΌΠ΅Π»ΠΎΡ‡Π΅ΠΉ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ. Π”ΡƒΠΌΠ°ΡŽ, ΠΌΡ‹ ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°Π΅ΠΌ сСбя, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ всС Π² порядкС. Π›ΡƒΡ‡ΡˆΠ΅ чСстно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅ΠΌ свою ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΉ. Π’ΡƒΡ‚ всС ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ скромно β€” Π²Ρ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° 75%, прикладывая всСго 5% ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства усилий. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π‘Π΅ΠΉΠ±Π΅Π»: ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅. Π“Π°ΠΉ Π‘Ρ‚ΠΈΠ» ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠ» ΠΌΠ½Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ вопрос ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ памяти β€” спасСт ΠΎΠ½Π° ΠΌΠΈΡ€ ΠΈΠ»ΠΈ всС ΠΆΠ΅ Π½Π΅Ρ‚?

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: НСт, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС β€” Π½Π΅Ρ‚. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ β€” ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎΠ»ΠΎΠ²Ρ‹ΠΉ Π·Π²Π΅Ρ€ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΡƒΠ±ΡŒΠ΅ΡˆΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΠ»Π΅ΠΉ. Если Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ΅, Ρ‚ΠΎ я Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.

Π‘ΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ для написания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅. Π’ΠΎΠ³Π΄Π° для всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ Π±Ρ‹ ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°. Но я Π² это Π½Π΅ Π²Π΅Ρ€ΡŽ. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΈΡ… стилСй программирования большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±ΠΌΠ΅Π½ сообщСниями, для Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” транзакционная ΠΏΠ°ΠΌΡΡ‚ΡŒ, для Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ… β€” ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π° нСсколько.

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

Π‘Π΅ΠΉΠ±Π΅Π»: Π― ΡΠ»Ρ‹ΡˆΠ°Π» Π² Π΅Π΅ адрСс ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°: оптимистичСский ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π΅ обСспСчиваСт Ρ‚ΠΎΠ³ΠΎ уровня ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. УтвСрТдаСтся, Ρ‡Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ситуации, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ пСрСстаСт Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄.

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: Π”Π°, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ зависаниях. Π’ΠΎΡ‚ ΠΌΠΎΠΉ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: большая транзакция, которая Π½Π΅ фиксируСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² этом мСстС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ другая, малСнькая. АналогиСй ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ порядок Π² своСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. НачинаСтся оптимистичСская рСорганизация. Π”Π²Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сдСлано, Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ студСнт ΠΈ Π±Π΅Ρ€Π΅Ρ‚ ΠΊΠ½ΠΈΠ³Ρƒ. Он ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ фиксируСт свою Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, вСдь рСорганизация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅Ρ‰Π΅ Π½Π΅ зафиксирована. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ отсутствиС ΠΊΠ½ΠΈΠ³ΠΈ: Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° измСнилась Π·Π° врСмя Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, структура Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Π²Π΅Ρ€Π½Π°, Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π°Π΄ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ всС сначала.

Π‘Π΅ΠΉΠ±Π΅Π»: Если Π΅ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ условия, всС ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. ПоглядСв Π½Π° эту схСму, Π²Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ сказали Π±Ρ‹: Β«ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠ΅Ρ€Π΅Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌΒ», β€” Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ² Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΊΠ½ΠΈΠ³, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ схСму Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: Π’Π΅Ρ€Π½ΠΎ. Надо ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² этом Π΄ΡƒΡ…Π΅, ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ самыС Ρ…ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ студСнты ΠΌΠΎΠ³Π»ΠΈ Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎ врСмя Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ основной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Надо ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ стратСгии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΅Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ Π² ΠΎΠ±ΠΎΠΈΡ… случаях: ΠΊΠ°ΠΊ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π΅ прСкращая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΊΠ½ΠΈΠ³. ПослС Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΉ части β€” придумывания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ. И здСсь транзакционная ΠΏΠ°ΠΌΡΡ‚ΡŒ β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½. Она прСвосходит ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ условия для выполнСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π‘Π΅ΠΉΠ±Π΅Π»: А Ссли я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊΠΎ ΠΌΠ½Π΅ Π·Π° Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ экзСмпляром самой Ρ…ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ оказался Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹ΠΌ? Π’ физичСском ΠΌΠΈΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΊΠ½ΠΈΠ³ΠΎΠΉ, ΠΌΡ‹ замСняСм Π΅Π΅ Π½Π΅ΠΊΠΎΠΉ Π·Π°Π³Π»ΡƒΡˆΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΈΠ³Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π°Π·Π°Π΄, ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π΅ Π½Π° мСсто Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. Но Ссли Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² ΠΌΠΈΡ€Π΅ с Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, придСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ.

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: Но ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ β€” ΡˆΠΈΡ„Ρ€ ΠΊΠ½ΠΈΠ³ΠΈ, Π²Π΅Ρ€Π½ΠΎ? Π•ΡΡ‚ΡŒ нСсколько способов Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π·Π°Π³Π»ΡƒΡˆΠΊΠΎΠΉ сама Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ мСняСтся, мСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сама ΠΊΠ½ΠΈΠ³Π°. Π’Ρ‹ Π½Π΅ измСняСтС Π΅Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ½ΠΈΠ³Π° Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ находится. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Π³Π΄Π΅ Π±Ρ‹ ΠΊΠ½ΠΈΠ³Π° Π½ΠΈ Π±Ρ‹Π»Π°. Π­Ρ‚ΠΎ прСкрасно ΠΈ поддаСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ СстСствСнным способом.

Π’ случаС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ памяти Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ просматриваСт всС мСста Π² памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ считывал, ΠΈ провСряСт, содСрТат Π»ΠΈ ΠΎΠ½ΠΈ Ρ‚Π΅ самыС значСния, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ послСднСм Π·Π°Ρ…ΠΎΠ΄Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ посСщСнныС ΠΈΠΌ ячСйки памяти Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅, ΠΊΡƒΠ΄Π° Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ. Но Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ содСрТаниС ΠΊΠ½ΠΈΠ³ΠΈ. Он всСго лишь провСряСт, содСрТит Π»ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, скаТСм, число 73.

Но Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΡ€Π΅ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ зависания β€” ΠΎΠ½Π° довольно ΠΊΠΎΠ²Π°Ρ€Π½Π°. НуТны Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ транзакция Π½Π΅ фиксируСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сталкиваСтся с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ. НуТно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ просто Π²Ρ‚ΠΈΡ…ΠΎΠΌΠΎΠ»ΠΊΡƒ подвиса-Π»Π°, β€” Π½ΡƒΠΆΠ½Π° обратная связь с Π½Π΅ΠΉ. Π’ΠΎ ΠΆΠ΅ Π²Π΅Ρ€Π½ΠΎ ΠΈ для систСмы Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. НСнавиТу эти часики Π½Π° экранС.

Π‘Π΅ΠΉΠ±Π΅Π»: МнС каТСтся, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΊ быстро, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΎΡ‚ простоСв.

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: Π”Π°. Но ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² этом случаС слоТнСС β€” ΠΌΠ΅Π»ΠΊΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ слоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. МнС каТСтся, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ памяти Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠ΅Π»ΠΊΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° основС ΠΎΡ‡Π΅Π½ΡŒ простых ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ².