Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ!

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅. Они сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π΅Ρ‰Ρ‘ ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ Π² названиях. БСйчас объясним.

🤔 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ β€” это ΠΏΡ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

❌ НСт. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ β€” это Π½Π΅ ΠΏΡ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Π»ΡŽΠ±Ρ‹Ρ… языках программирования: ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ…, ΠΈ Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ…. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠΎΡ‚ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ β€” Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅.

ΠœΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π°: инструкция ΠΈΠ»ΠΈ ΠΊΠ½ΠΈΠ³Π° ΠΏΡ€Π°Π²ΠΈΠ»

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠ°Ρ„Π΅-ΡΡ‚ΠΎΠ»ΠΎΠ²ΡƒΡŽ. БСйчас Ρƒ вас Ρ‚Π°ΠΌ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° сотрудников: ΠΏΠΎΠ²Π°Ρ€Π° ΠΈ администраторы.

Для ΠΏΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ блюда. НапримСр:

ΠŸΠΎΠ²Π°Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этим инструкциям Ρ€ΠΎΠ²Π½ΠΎ Π² Ρ‚ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΈΡ… написали. НСльзя сначала ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ свёклу, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Π·ΡΡ‚ΡŒ Π΅Ρ‘. НСльзя ΠΏΠΎΡΠΎΠ»ΠΈΡ‚ΡŒ ΠΊΠ°ΡΡ‚Ρ€ΡŽΠ»ΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π²ΠΎΠ΄Ρ‹. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий Π²Π°ΠΆΠ΅Π½ ΠΈ опрСдСляСтся Π²Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования. Π’Ρ‹ ΠΏΠΎΠ²Π΅Π»Π΅Π²Π°Π΅Ρ‚Π΅ исполнитСлСм. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ исполнитСли Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ваши задания.

Для администратора Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π° ΠΊΠ°ΠΊ Π±Ρ‹ ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»:

Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… администратор Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π² этой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Π² любой Π½Π° своё усмотрСниС. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° этого Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° β€” ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ администратора, ΠΈ ΠΌΡ‹ описали ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ это

❌ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, Π½Π΅ Π±ΠΎΠΌΠ±ΠΈΡ‚Π΅

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, это ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ для понимания. Π’Ρ‹ сами ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ (ΠΌΠΎΠΆΠ½ΠΎ прямо Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ…).

Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ языков: C, Π‘++, Go, Pascal, Java, Python, Ruby

Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ устроСно Ρ‚Π°ΠΊ:

Π’ языкС Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ этот язык ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ вычислСния. Π’ ΠΊΠ°ΠΊΠΎΠΌ порядкС записаны ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС ΠΎΠ½ΠΈ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

Π•ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ β€” это ячСйка для Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

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

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Π΅ Π΄Π½ΠΈ функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ 1000 β‚½, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния β€” Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° всё зависит ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ рСгулируСтся программистом. Он Π·Π°Π΄Π°Ρ‘Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ условия, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ двиТСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Вся Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ продумываСтся программистом β€” ΠΊΠ°ΠΊ ΠΎΠ½ скаТСт, Ρ‚Π°ΠΊ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ кусок ΠΊΠΎΠ΄Π° выполнится β€” ΠΊΠΎΠ΄ получаСтся прСдсказуСмым, с понятной Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Если Ρƒ нас ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считаСт скидку, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ Π·Π°ΠΊΠ°Π·Π°, Ρ‚ΠΎ ΠΎΠ½ выполнится ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚. Он Π½Π΅ посчитаСт скидку Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ Π½Π΅ пропустит ΠΌΠΎΠΌΠ΅Π½Ρ‚ оформлСния.

👉 Π‘ΡƒΡ‚ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ программист описываСт Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ привСсти ΠΊΠΎΠ΄ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ†Π΅Π»ΠΈ.

Π—Π²ΡƒΡ‡ΠΈΡ‚ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ повСдСнию ΠΊΠΎΠ΄Π°. Но Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Π°Ρ‡Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ языков: Haskell, Lisp, Erlang, Clojure, F#

Бмысл Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π΄Π°Ρ‘ΠΌ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, Π° описываСм взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ здСсь это рСализуСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, Π² ООП Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΡ… взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ просто ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ привязан ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. Он ΠΊΠ°ΠΊ Π±Ρ‹ стоит Π² сторонС ΠΈ влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ β€” отправляСт ΠΎΠ΄Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ здСсь ΠΈΠ΄Ρ‘Ρ‚ Π΅Ρ‰Ρ‘ дальшС. Π’ Π½Ρ‘ΠΌ вСсь ΠΊΠΎΠ΄ β€” это ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ просто Π·Π°Π΄Π°Ρ‘Ρ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π° ΠΊΠΎΠ΄ сам разбираСтся, ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

Если ΠΌΡ‹ сравним ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° с ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ, Ρ‚ΠΎ СдинствСнноС, Ρ‡Ρ‚ΠΎ совпадёт, β€” ΠΈ Ρ‚Π°ΠΌ, ΠΈ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” Ρ€Π°Π·Π½ΠΎΠ΅.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния. НСт Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” это ΠΆΠ΅ просто ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ, Π° Π½Π΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎ Π½ΠΈΡ… сказали.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚. Π’Π΅Ρ€Π½Π΅Π΅, ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ послС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ константы β€” записали ΠΈ всё, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π‘Π°ΠΌΠΈ ΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ хранятся Π² функциях β€” ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΉ, Π²Ρ‹ всСгда ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ искомый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. Если Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сумму Π² 1000 β‚½, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ скидку Π² зависимости ΠΎΡ‚ дня Π½Π΅Π΄Π΅Π»ΠΈ, Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ссли функция ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° 1000 β‚½, Ρ‚ΠΎ ΠΎΠ½Π° всСгда Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ скидку нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

МоТно провСсти аналогию с ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ ΠΈ синусами: синус 90 градусов всСгда Ρ€Π°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, Π² ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π΅Π³ΠΎ Π½ΠΈ посчитали ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹ ΡƒΠ³Π»Ρ‹ Ρƒ нас Π΅Ρ‰Ρ‘ Π½ΠΈ Π±Ρ‹Π»ΠΈ Π² Π·Π°Π΄Π°Ρ‡Π΅. Π’ΠΎ ΠΆΠ΅ самоС ΠΈ здСсь β€” всё прСдсказуСмо ΠΈ зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ опрСдСляСт сам ΠΊΠΎΠ΄ ΠΈ компилятор, Π° Π½Π΅ программист. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” это ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, поэтому Π½Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ запишСм это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ΄Π°. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ нас это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π±Ρ‹Π»ΠΎ, Π° компилятор сам разбСрётся, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

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

👉 ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ смысл Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ сами Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ шаги ΠΊ Ρ†Π΅Π»ΠΈ, Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ компилятор сам Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для всСх

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

МнСниС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π°Π²Ρ‚ΠΎΡ€Π°, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π±Ρ‹Π»ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

UPD: Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° rsdn (спасибо flamingo Π·Π° ссылку).

ПонСдСльник, 19 июня, 2006

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ β€” прокрастинаторы (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ лСнтяи). ΠŸΡ€ΠΈΠΉΡ‚ΠΈ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΡ„Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ, ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ RSS Π»Π΅Ρ‚Π½Ρƒ, ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ новости, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свСТиС ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° тСхничСском сайтС, ΠΏΠΎΠ»ΠΈΡΡ‚Π°Ρ‚ΡŒ политичСскиС дискуссии Π½Π° программистском Ρ„ΠΎΡ€ΡƒΠΌΠ΅. Π‘ΠΌΡ‹Ρ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. ΠŸΠΎΠΉΡ‚ΠΈ Π½Π° ΠΎΠ±Π΅Π΄. Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, уткнутся Π² IDE Π½Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ. ΠŸΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΡ„Π΅. И Π²ΠΎΡ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ дСнь ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ.

Но врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΠΎΠ»Π΅ зрСния ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ занятныС (Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠ΅) ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ посты Π² Π±Π»ΠΎΠ³Π°Ρ…. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ мСстС, Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° такая ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ нСсколько Π΄Π½Π΅ΠΉ. Π’ этих постах слоТно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π½Π° это трСбуСтся врСмя, поэтому ΠΎΠ½ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ Β«ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ». ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ успССтС ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ, окаТСтся Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ накопилась ΠΊΡƒΡ‡Π° ссылок ΠΈ ΠΏΠ°ΠΏΠΊΠ°, полная PDF Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Π°ΠΌ, ΠΈ понадобится Ρ†Π΅Π»Ρ‹ΠΉ Π³ΠΎΠ΄ ΠΈ Ρ…ΠΈΠΆΠΈΠ½Π° посрСди лСса, Π³Π΄Π΅ Π½Π° ΠΌΠΈΠ»ΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Ρ‚ Π½ΠΈ Π΄ΡƒΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎ всём этом Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. И ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡƒΡ‚Ρ€ΠΎ приносил Π΅Π΄Ρƒ ΠΈ Π·Π°Π±ΠΈΡ€Π°Π» мусор, ΠΏΠΎΠΊΠ° Π²Ρ‹ ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Ρ€Π΅ΠΊΠ΅.

Π― Π½Π΅ знаю, ΠΊΠ°ΠΊΠΎΠΉ Ρƒ вас список, Π½ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΅Π³ΠΎ списка касаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π’Π°ΠΊΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ самыС слоТныС. Часто ΠΎΠ½ΠΈ написаны сухим акадСмичСским языком, ΠΈ Π΄Π°ΠΆΠ΅ Β«Π²Π΅Ρ‚Π΅Ρ€Π°Π½Ρ‹ Wall Street с дСсятилСтним стаТСм» Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎ Ρ‡Π΅ΠΌ говорится Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ (ЀП). Если Π²Ρ‹ Π·Π°Π΄Π°Π΄ΠΈΡ‚Π΅ вопрос ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Citi Group ΠΈΠ»ΠΈ Π² Deutsche Bank [1] ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ JMS вмСсто Erlang, Ρ‚ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ Π² ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ акадСмичСский язык для ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ комплСксных систСм с самыми ТСсткими трСбованиями Π±Ρ‹Π»ΠΈ написаны с использованиСм элСмСнтов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ сходится.

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ ЀП Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ для понимания, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° возникшСй пропасти Π·Π½Π°Π½ΠΈΠΉ чисто историчСская. По сути Π² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ЀП Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного. ВзглянитС Π½Π° эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Π½Π° «доступноС руководство ΠΏΠΎ ЀП», ΠΊΠ°ΠΊ Π½Π° мостик ΠΌΠ΅ΠΆΠ΄Ρƒ нашими ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΡƒΠΌΠ°ΠΌΠΈ ΠΈ ΠΌΠΈΡ€ΠΎΠΌ ЀП. Π—Π°Π²Π°Ρ€ΠΈΡ‚Π΅ сСбС ΠΊΠΎΡ„Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ. НадСюсь, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ скоро ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π°Ρ‡Π½ΡƒΡ‚ ΡˆΡƒΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π²Π°ΡˆΠΈΡ… ЀП ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ЀП? ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΎ пошло? На Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π³ΠΎΠ΄Π½ΠΎ? Если ΠΎΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ± этом твСрдят Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΠΊΠΈ ЀП, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅Π³ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‡Π°Ρ‰Π΅ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ…? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ люди с PhD ΡΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ языкам? Но Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π²Π°ΠΆΠ½Π΅Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ чСртовски Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки? Π§Ρ‚ΠΎ скрываСтся Π·Π° всСми этими замыканиями, продолТСниями, ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π»Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСния ΠΈ отсутствиС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов? Как это всё ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»ΡƒΡŽ Π²ΡΠ΅Π»Π΅Π½Π½ΡƒΡŽ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ это всё Ρ‚Π°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ свято ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎ нашим ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ сСрдцам? Π‘ΠΊΠΎΡ€ΠΎ ΠΌΡ‹ Π²ΠΎ всём разбСрёмся. Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΉΠΌΡ‘ΠΌ Π² Ρ‡Ρ‘ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ пропасти ΠΌΠ΅ΠΆΠ΄Ρƒ акадСмичСскими ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос достаточно ΠΏΡ€ΠΎΠ³ΡƒΠ»ΡΡ‚ΡŒΡΡ Π² ΠΏΠ°Ρ€ΠΊΠ΅.

ΠŸΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ° Π² ΠΏΠ°Ρ€ΠΊΠ΅

Π‘Π°Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Наша ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ° Π² ΠΏΠ°Ρ€ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π±ΠΎΠ»Π΅Π΅ 2 тысяч Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π΅Ρ… солнСчных Π΄Π½Π΅ΠΉ Π΄Π°Π²Π½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΠΎΠΉ вСсны 380 Π³ΠΎΠ΄Π° Π΄ΠΎ Π½.э. Π—Π° городскими стСнами Афин ΠΏΠΎΠ΄ ласковыми тСнями ΠΎΠ»ΠΈΠ²ΠΊΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠŸΠ»Π°Ρ‚ΠΎΠ½ прогуливался Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ АкадСмии с красивым ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊΠΎΠΌ Ρ€Π°Π±ΠΎΠΌ. Бтояла чудСсная ΠΏΠΎΠ³ΠΎΠ΄Π°, ΠΎΠ±Π΅Π΄ приятной Ρ‚ΡΠΆΠ΅ΡΡ‚ΡŒΡŽ отдавался Π² ΠΆΠΈΠ²ΠΎΡ‚Π΅, ΠΈ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» Π½Π° философскиС Ρ‚Π΅ΠΌΡ‹.

Β«ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈ Π½Π° Ρ‚Π΅Ρ… Π΄Π²ΡƒΡ… студСнтов», сказал ΠŸΠ»Π°Ρ‚ΠΎΠ½, Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ подбирая слова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ вопросу ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ смысла. Β«ΠšΡ‚ΠΎ ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎ-Ρ‚Π²ΠΎΠ΅ΠΌΡƒ, Π²Ρ‹ΡˆΠ΅?Β» ΠœΠ°Π»ΡŒΡ‡ΠΈΠΊ Ρ€Π°Π± посмотрСл Π² сторону бассСйна, Π²ΠΎΠ·Π»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ стояли Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. «Они ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ роста», ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ. Β«Π§Ρ‚ΠΎ Ρ‚Ρ‹ имССшь Π² Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ словами ‘ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ роста’?Β», спросил ΠŸΠ»Π°Ρ‚ΠΎΠ½. «Ну, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΎΠ½ΠΈ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π½ΠΎ я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅, Ρ‚ΠΎ я смогу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ростС.Β»

ΠŸΠ»Π°Ρ‚ΠΎΠ½ улыбнулся. Он Π²Ρ‘Π» ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊΠ° Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Β«Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠΈΡ€Π΅ Π½Π΅Ρ‚ идСально ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ?Β» ΠœΠ°Π»ΡŒΡ‡ΠΈΠΊ призадумался ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: Β«Π”Π°, я Ρ‚Π°ΠΊ Π΄ΡƒΠΌΠ°ΡŽ. ВсСгда сущСствуСт малСнькая Ρ€Π°Π·Π½ΠΈΡ†Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Ρ‘ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ.Β» Он Π΄ΠΎΡˆΡ‘Π» Π΄ΠΎ самой сути! Β«Π’ΠΎΠ³Π΄Π° Ссли Π½Π΅Ρ‚ идСально ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ Π² этом ΠΌΠΈΡ€Π΅, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‚Ρ‹ понимаСшь ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ‘идСального’ равСнства?Β» Π­Ρ‚ΠΎ Π²Π²Π΅Π»ΠΎ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊΠ° Π² ступор. Он ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: Β«Π― Π½Π΅ знаю».

Π’Π°ΠΊ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ пСрвая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ. ΠŸΠ»Π°Ρ‚ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π² нашСм ΠΌΠΈΡ€Π΅ всё лишь ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π°Π»Π°. Он Ρ‚Π°ΠΊΠΆΠ΅ осознал, Ρ‡Ρ‚ΠΎ люди способны ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΈΠ΄Π΅Π°Π»Π°, хотя Π½ΠΈΠΊΠΎΠ³Π΄Π° с Π½ΠΈΠΌ Π½Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ. Он ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ матСматичСскиС Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠΈΡ€Π΅, ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π½Π°Π΅ΠΌ ΠΎ Π½ΠΈΡ… ΠΈΠ· связСй с этой Β«Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉΒ» всСлСнной. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³. Но ΠΏΡ€ΠΈ этом ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описан матСматичСски. Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°? ΠŸΠΎΡ‡Π΅ΠΌΡƒ всСлСнная описываСтся матСматичСскими Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ? Всё Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°? [2]

Ѐилософия ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТный ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚. Как ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ философских дисциплин, ΠΎΠ½Π° скорСС Π·Π°Π΄Π°Ρ‘Ρ‚ вопросы, Ρ‡Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° Π½ΠΈΡ…. Π£Ρ‡Ρ‘Π½Ρ‹Π΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ своём согласны с Ρ‚Π΅ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° β€” это настоящая Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ°: Π² основС Π»Π΅ΠΆΠΈΡ‚ Π½Π°Π±ΠΎΡ€ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠ°ΠΊ этими ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°, получая всё Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС Π·Π°ΠΊΠΎΠ½Ρ‹. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ систСмой» ΠΈΠ»ΠΈ «исчислСниСм». НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ систСму для ВСтриса. По сути Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ВСтрис ΠΈ Π΅ΡΡ‚ΡŒ сам ΠΏΠΎ сСбС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ систСма, просто ΠΎΠ½Π° записана Π² Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Цивилизация ΠΏΡƒΡˆΠΈΡΡ‚Ρ‹Ρ… сущСств с ΠΠ»ΡŒΡ„Ρ‹ Π¦Π΅Π½Ρ‚Π°Π²Ρ€Π° Π½Π΅ смоТСт ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π½Π°ΡˆΡƒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ систСму ВСтриса ΠΈΠ»ΠΈ ΠΊΡ€ΡƒΠ³Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… СдинствСнный ΠΎΡ€Π³Π°Π½ чувств ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΠ°Ρ…ΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ построят ВСтрис, Π½ΠΎ навСрняка Ρƒ Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ систСма для ΠΊΡ€ΡƒΠ³Π°. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Ρƒ нас Π½Π΅ получится с Π½Π΅ΠΉ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нашС обоняниС Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎ. Но ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ язык прСдставлСния (ΠΏΡƒΡ‚Ρ‘ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сСнсорных инструмСнтов ΠΈ стандартной Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³Π°), Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ станут понятны любой ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ Ρ†ΠΈΠ²ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π”Π°ΠΆΠ΅ Ссли Π±Ρ‹ Π½Π΅ сущСствовало Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ Ρ†ΠΈΠ²ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎ всСлСнной, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ систСма для ВСтриса ΠΈ ΠΊΡ€ΡƒΠ³Π° всё Ρ€Π°Π²Π½ΠΎ Π±Ρ‹Π»ΠΈ Π±Ρ‹ логичСски Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ нашлось Π±Ρ‹ сущСств, способных эти систСмы Π½Π°ΠΉΡ‚ΠΈ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Если Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ появится разумная расса ΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅Π², Ρ‚ΠΎ ΠΎΠ½ΠΈ, скорСС всСго, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ свою Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ систСму для описания всСлСнной. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, маловСроятно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚ΡƒΡ‚ ВСтрис, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²ΠΎ всСлСнной Π½Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² этой ΠΈΠ³Ρ€Π΅. ВСтрис β€” это ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ числа Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… систСм, Π·Π°Π³Π°Π΄ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ понятиС ΠΊΠ°ΠΊ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа Π½Π΅ всСгда ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠΈΡ€Ρƒ, вСдь ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большоС число, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ нСльзя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Ρ‡Π΅ΠΌΡƒ-Π»ΠΈΠ±ΠΎ Π²ΠΎ всСлСнной, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ.

НСмного истории [3]

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

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

Одним ΠΈΠ· ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π²ΡˆΠΈΡ… Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π°ΡΡ‚ΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±Ρ€Π°Π·Π΅ ΠΆΠΈΠ·Π½ΠΈ, Π±Ρ‹Π» ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Алонзо Π§Ρ‘Ρ€Ρ‡ (Alonzo Church). Алонзо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π±Π°ΠΊΠ°Π»Π°Π²Ρ€Π° Π² ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎΠ½Π΅ ΠΈ Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² аспирантурС. Алонзо чувствовал, Ρ‡Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π°Ρ обстановка Π±Ρ‹Π»Π° чСрСсчур Ρ€ΠΎΡΠΊΠΎΡˆΠ½ΠΎΠΉ. Он Ρ€Π΅Π΄ΠΊΠΎ появлялся Π½Π° обсуТдСнии матСматичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π·Π° Ρ‡Π°ΡˆΠ΅Ρ‡ΠΊΠΎΠΉ чая ΠΈ Π½Π΅ любил Π³ΡƒΠ»ΡΡ‚ΡŒ Π² лСсу. Алонзо Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠΎΠΉ: ΠΎΠ½ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΠ΄ΠΎΠ²ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΎΠ΄ΠΈΠ½. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ½ рСгулярно встрСчался с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ обитатСлями ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎΠ½Π°. Π‘Ρ€Π΅Π΄ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ Алан Π’ΡŒΡŽΡ€ΠΈΠ½Π³ (Alan Turing), Π”ΠΆΠΎΠ½ Ρ„ΠΎΠ½ НСйман (John von Neumann) ΠΈ ΠšΡƒΡ€Ρ‚ Π“Ρ‘Π΄Π΅Π»ΡŒ (Kurt GΓΆdel).

Π­Ρ‚ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ систСмами. Они Π½Π΅ удСляли особого внимания физичСскому ΠΌΠΈΡ€Ρƒ, ΠΈΡ… интСрСсовала Ρ€Π°Π±ΠΎΡ‚Π° с абстрактными матСматичСскими Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ°ΠΌΠΈ. Π’ ΠΈΡ… Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ°Ρ… Π±Ρ‹Π»ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅: ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ вопросы вычислСний. Если Ρƒ нас Π΅ΡΡ‚ΡŒ машина с бСсконСчными Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π½Π΅ΠΉ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ? МоТно Π»ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ автоматичСски? Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΡ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ? Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Ρ€Π°Π·Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎ мощности?

НСзависимо ΠΎΡ‚ Алонзо, Алан Π’ΡŒΡŽΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ исслСдованиС. Он Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ систСму (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ сСйчас Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Машиной Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°), ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Ρ‘ ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Алонзо. ПозТС Π±Ρ‹Π»ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ машина Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° ΠΈ лябда-исчислСниС ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ.

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ наша история останавливаСтся. Π― Π±Ρ‹ ΠΏΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠ» ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΈ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ Π±Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ страницу, Ссли Π±Ρ‹ Π½Π΅ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Вторая мировая Π²ΠΎΠΉΠ½Π°. ΠœΠΈΡ€ ΠΏΡ‹Π»Π°Π». Войска БША ΠΎΡ‡Π΅Π½ΡŒ интСнсивно использовали Π°Ρ€Ρ‚ΠΈΠ»Π»Π΅Ρ€ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ армия наняла Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно Ρ€Π΅ΡˆΠ°Π»ΠΈ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ уравнСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для баллистичСских Ρ‚Π°Π±Π»ΠΈΡ† ΡΡ‚Ρ€Π΅Π»ΡŒΠ±Ρ‹. Быстро стало понятно, Ρ‡Ρ‚ΠΎ такая Π·Π°Π΄Π°Ρ‡Π° слишком слоТна для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, для прСодолСния этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π²ΠΎΠΉ машиной для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ баллистичСских Ρ‚Π°Π±Π»ΠΈΡ† Π±Ρ‹Π» Mark I построСнный IBM β€” ΠΎΠ½Π° вСсила 5 Ρ‚ΠΎΠ½Π½, состояла ΠΈΠ· 750’000 Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ ΠΌΠΎΠ³Π»Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ 3 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² сСкунду.

Π“ΠΎΠ½ΠΊΠ°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π° этом Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ. Π’ 1949 общСствСнности Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ДискрСтный ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ АвтоматичСский ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ (Electronic Discrete Variable Automatic Computer, EDVAC). Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ„ΠΎΠ½ НСймана, ΠΈ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ машиной Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Алонзо Π§Ρ‘Ρ€Ρ‡Π° Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² сторонку.

Π’ ΠΊΠΎΠ½Ρ†Π΅ 50-Ρ‹Ρ… профСссор ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института (MIT) Π”ΠΆΠΎΠ½ ΠœΠ°ΠΊΠΊΠ°Ρ€Ρ‚ΠΈ (John McCarthy ), Ρ‚ΠΎΠΆΠ΅ выпускник ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎΠ½Π°, Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ интСрСс ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Алонзо Π§Ρ‘Ρ€Ρ‡Π°. Π’ 1958 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ прСдставил язык ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ списков, List Processing language (Lisp). Lisp задумывался ΠΊΠ°ΠΊ имплСмСнтация Лямбда-исчислСния Алонзо, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ„ΠΎΠ½ НСймана. МногиС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΡƒΡ‡Ρ‘Π½Ρ‹Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΌΠΎΡ‰ΡŒ Lisp-Π°. Π’ 1973 Π³ΠΎΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠ° программистов Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° Π² ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠΌ тСхнологичСском институтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ Π½Π°Π·Π²Π°Π»ΠΈ Lisp-машиной. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° аппаратная рСализация лямбда-исчислСний Алонзо.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это практичСская рСализация ΠΈΠ΄Π΅ΠΉ Алонзо Π§Ρ‘Ρ€Ρ‡Π°. НС всС ΠΈΠ΄Π΅ΠΈ Лямбда-исчислСния пСрСросли Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ сфСру, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ лямбда-исчислСния Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΈ физичСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ°ΠΊ ΠΈ ОО ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это Π½Π°Π±ΠΎΡ€ ΠΈΠ΄Π΅ΠΉ, Π° Π½Π΅ Π½Π°Π±ΠΎΡ€ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ. БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ схоТиС Π²Π΅Ρ‰ΠΈ ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я объясню Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° Java (Π΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ склонности ΠΊ ΠΌΠ°Π·ΠΎΡ…ΠΈΠ·ΠΌΡƒ). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ язык Java ΠΈ внСсём Π² Π½Π΅Π³ΠΎ измСнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ прСвратился Π² ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊ использованию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык. Начнём нашС ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅.

Лямбда исчислСниС Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ для изучСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанным с вычислСниями. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, стало Π±Ρ‹Ρ‚ΡŒ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с вычислСниями, ΠΈ, Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для этого Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция β€” это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ элСмСнт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ для всСго, Π΄Π°ΠΆΠ΅ для ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… расчётов. Π”Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ функциями. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” это просто синонимы (alias) для Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ всё Π² ΠΎΠ΄Π½Ρƒ строку). Π˜Ρ… нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Java это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ final (ΠΈΠ»ΠΈ const Ссли ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с C++). Π’ ЀП Π½Π΅Ρ‚ Π½Π΅- final ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠ΄ΠΈΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ достаточно слоТноС Π½Π° Ρ‚Π°ΠΊΠΎΠΌ языкС. Если всС символы нСизмСняСмыС, Ρ‚ΠΎ ΠΌΡ‹ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹! Π­Ρ‚ΠΎ Π½Π΅ совсСм Π²Π΅Ρ€Π½ΠΎ. Когда Алонзо Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ лямбда-исчислСниСм, Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ΄Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ состояниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅. Π•Π³ΠΎ интСрСсовало ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±Ρ‹Π»ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ лямбда исчислСниС эквивалСнтно машинС Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°. Π’ Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ всё Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языках. Как ΠΆΠ΅ Π½Π°ΠΌ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²?

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования

Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ я Π½Π΅ смогу привСсти Π΄ΠΎΠ²ΠΎΠ΄Ρ‹ Π² ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅ монструозной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅. Когда я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, я Ρ‚ΠΎΠΆΠ΅ Ρ‚Π°ΠΊ Π΄ΡƒΠΌΠ°Π». Π― ошибался. Π•ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ стиля. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅. НапримСр, программисты Π·Π°ΡΠ²Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всСм извСстно, Ρ‡Ρ‚ΠΎ Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒ понимания β€” это ΠΎΡ‡Π΅Π½ΡŒ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ Π²Π΅Ρ‰ΡŒ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для мСня, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΊΡƒΡ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Unit тСстированиС

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ЀП ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ являСтся нСизмСняСмым, Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… дСйствий. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ функция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅ своСй области видимости, ΠΈ Ρ‚Π΅ΠΌ самым ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ случится с полями класса ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ СдинствСнный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. А СдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” это Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π’ΠΎΡ‚ ΠΎΠ½Π°, голубая ΠΌΠ΅Ρ‡Ρ‚Π° unit-тСстСров. МоТно ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. НСт нСобходимости Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈΠ»ΠΈ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ внСшнСС состояниС. Всё Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΌ случаям. Если всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ проходят Unit-тСсты, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² качСствС вашСго ПО, Ρ‡Π΅ΠΌ Π² случаС ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков программирования. Π’ Java ΠΈΠ»ΠΈ C++ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π½Π΅ достаточно β€” функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ внСшнСС состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅. Π’ ЀП Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅Ρ‚.

ΠžΡ‚Π»Π°Π΄ΠΊΠ°

Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Π΄Ρ‘Ρ‚ сСбя Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° β€” это ΠΏΠ°Ρ€Π° пустяков. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ошибка Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ зависит ΠΎΡ‚ постороннСго ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнялся Ρ€Π°Π½Π΅Π΅. Π’ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ошибка проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. Π’Π°ΠΌ придСтся ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· ряд шагов, Π½Π΅ относящихся ΠΊ Π±Π°Π³Ρƒ, ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ зависит ΠΎΡ‚ внСшнСго состояния ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ ЀП ситуация Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ β€” Ссли Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, Ρ‚ΠΎ ΠΎΠ½ΠΎ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, Π½Π΅ зависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ куски ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ воспроизвСдётС ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½Π°ΠΉΡ‚ΠΈ Π΅Ρ‘ источник β€” Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°. Π­Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ приятно. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ остановитС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ вСсь стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, прямо ΠΊΠ°ΠΊ Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ языкС. Π‘ Ρ‚Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ этого Π½Π΅ достаточно, вСдь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ зависят ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ состояний Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. Ѐункция Π² ЀП зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ эта информация оказываСтся прямо Ρƒ вас ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ! Π”Π°ΠΆΠ΅ большС, Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π½Π΅ достаточно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ Π²Π΅Π΄Ρ‘Ρ‚ сСбя кусок ΠΊΠΎΠ΄Π°. Π’Π°ΠΌ придётся Π²Ρ‹ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ дСсятки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ всё, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” это Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅!

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΡΡΡŒ ΠΏΠΎ стСку, Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ отклоняСтся ΠΎΡ‚ Π½ΠΎΡ€ΠΌΡ‹, Π²Ρ‹ ΡƒΠ³Π»ΡƒΠ±Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π΄Π²ΠΈΠ³Π°Π΅Ρ‚Π΅ΡΡŒ дальшС. Π’Π°ΠΊ повторяСтся нСсколько Ρ€Π°Π· ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ источник ошибки!

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сразу Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡŽ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’Π°ΠΌ Π½Π΅ придётся Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ deadlock-Π°Ρ… ΠΈΠ»ΠΈ состояниях Π³ΠΎΠ½ΠΊΠΈ (race conditions) ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ! Ни ΠΎΠ΄ΠΈΠ½ кусочСк Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ мСняСтся Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΈΠ»ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΊ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΏΡ€ΠΈ этом ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, присущих ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ языкам.

Если Π΄Π΅Π»Π° обстоят ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Ρ€Π΅Π΄ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… прилоТСниях? На самом Π΄Π΅Π»Π΅ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅. Компания Ericsson Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Erlang для использования Π½Π° отказоустойчивых ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°Ρ…. МногиС ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ прСимущСства Erlang-Π° ΠΈ стали Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ тСлСкоммуникациях ΠΈ систСмах контроля Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Ρ‚Π°ΠΊ просто ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ систСмы, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π½Π° Wall Street. Π’ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ, систСмы написанныС Π½Π° Erlang, Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅, ΠΊΠ°ΠΊ Java систСмы. Erlang систСмы просто свСрхнадёТныС.

На этом история многопоточности Π½Π΅ заканчиваСтся. Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎ сути ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ компилятор всё Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° использовала нСсколько CPU. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ кусок ΠΊΠΎΠ΄Π°.

Π Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ горячСму

Π’ старыС Π²Ρ€Π΅ΠΌΠ΅Π½Π° для установки ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Windows ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Много Ρ€Π°Π·. ПослС установки Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΌΠ΅Π΄ΠΈΠ° проигрыватСля. Π’ Windows XP ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния, Π½ΠΎ ситуация всё Π΅Ρ‰Ρ‘ Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ идСальной (сСгодня я запустил Windows Update Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π½Π΅ оставит мСня Π² ΠΏΠΎΠΊΠΎΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΡƒΡΡŒ). Π’ Unix систСмах модСль обновлСния Π±Ρ‹Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅. Для установки ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½ΠΎ Π½Π΅ всю ОБ. Π₯отя ситуация выглядит Π»ΡƒΡ‡ΡˆΠ΅, Π½ΠΎ для большого класса сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ это всё Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ. Π’Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ 100% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, вСдь Ссли ΠΈΠ·-Π·Π° обновлСния Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ смоТСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΡƒΡŽ, Ρ‚ΠΎ ΠΆΠΈΠ·Π½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ потСряны. Π€ΠΈΡ€ΠΌΡ‹ с Wall Streets Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΆΠ΅Π»Π°ΡŽΡ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ сСрвСра Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ обновлСния.

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π΅ останавливая систСму Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅. Π’ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ [ΠΏΠ΅Ρ€. Π² Smalltalk-Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ]. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ Java класса Π½Π° Π»Π΅Ρ‚Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ вСрсии. Если Π±Ρ‹ ΠΌΡ‹ Ρ‚Π°ΠΊ сдСлали, Ρ‚ΠΎ всС экзСмпляры класса стали Π±Ρ‹ Π½Π΅Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΠ»ΠΎΡΡŒ Π±Ρ‹ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈ. Нам ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ ΠΊΠΎΠ΄, для контроля вСрсий. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΠ΅Ρ€Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС созданныС экзСмпляры класса, ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡ…, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры Π½ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сСрриализованныС Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ миграция ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ экзСмпляры Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ. И ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. И Π΅Ρ‰Ρ‘ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ссылки ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π΅Ρ‰Ρ‘ ΠΊΡƒΠ΄Π° Π½ΠΈ шло, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ всё состояниС хранится Π² стСкС Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ горячСму! По сути всё Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” это Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ сСрвСрС ΠΈ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй, ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠΎΠ΄Π΅. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано языковыми инструмСнтами автоматичСски! Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ это научная фантастика, Ρ‚ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π΄Π΅Π»ΠΎ с Erlang, Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ свои систСмы Π±Π΅Π· остановки ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния ΠΈ оптимизация (Machine Assisted Proofs and Optimizations)

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ матСматичСский Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ участков Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ ΠΈ автоматичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Unit-тСсты для Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв! Вакая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ бСсцСнна для свСрхнадёТных систСм (rock solid systems). ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ систСм контроля кардиостимуляторов ΠΈΠ»ΠΈ управлСния Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. Если ΠΆΠ΅ ваши Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ находятся Π² сфСрС критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ инструмСнты автоматичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всё Ρ€Π°Π²Π½ΠΎ Π΄Π°Π΄ΡƒΡ‚ Π²Π°ΠΌ гигантскоС прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ вашими ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ прСимущСствах ЀП, я ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ «всё выглядит красиво, Π½ΠΎ бСсполСзно, Ссли ΠΌΠ½Π΅ придётся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° корявом языкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всё final Β». Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. ИспользованиС final повсСмСстно выглядит коряво Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языках программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки программирования ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ абстракций, Ρ‚Π°ΠΊΠΈΠΌΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ любили ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… инструмСнтов β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.

Π’ ЀП функция β€” это Π½Π΅ Ρ‚ΠΎΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ функция Π² Java ΠΈΠ»ΠΈ C. Π­Ρ‚ΠΎ надмноТСство β€” ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ Java Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Π°ΠΆΠ΅ большС. ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ функция Π½Π° C:

Π’ ЀП это Π½Π΅ Ρ‚ΠΎΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ обычная C функция. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ наш Java компилятор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Ρ‚Π°ΠΊΡƒΡŽ запись. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Java ΠΊΠΎΠ΄ (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π΅Π·Π΄Π΅ присутствуСт нСявный final ):

Π‘ΠΈΠΌΠ²ΠΎΠ» add Π½Π΅ совсСм функция. Π­Ρ‚ΠΎ малСнький класс с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ add Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ символ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры add_function_t Π² runtime ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹ сборщиком мусора, Ссли станут Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ становятся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ числа ΠΈ строки. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ функциями (ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈΡ… Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ функциями Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. ΠŸΡƒΡΡ‚ΡŒ это вас Π½Π΅ ΠΏΡƒΠ³Π°Π΅Ρ‚. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ отличаСтся ΠΎΡ‚ понятия Java классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³ΠΎΠΌ (ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ классы Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… «классы Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка», Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ этим Π½Π΅ заморачиваСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π° Java Π½Π΅ стоит строгоС акадСмичСскоС сообщСство.

Как ΠΈ ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка? Π― Ρ€Π°Π΄, Ρ‡Ρ‚ΠΎ Π²Ρ‹ спросили. Π’Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ большой ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΉ кусок ΠΊΠΎΠ΄Π° Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎΠ± ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. Если Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ участок ΠΊΠΎΠ΄Π° повторяСтся Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСста, Π²Ρ‹ выноситС Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ Π² ΡˆΠΊΠΎΠ»Π°Ρ… Π΅Ρ‰Π΅ ΡƒΡ‡Π°Ρ‚ ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Ρ‚ΡŒ). Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² вашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° вСсти сСбя ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях, Ρ‚ΠΎ Π²Ρ‹ создаётС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. Π—Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ? Π’ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΌΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ участок Java ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ систСма помСнялась, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ сообщСния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сСрвСрами вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Всё остаётся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° β€” Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрвСр Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Как Π½Π°ΠΌ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этой ситуациСй? ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΊΡƒΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ сообщСниС, ΠΈ Π² зависимости ΠΎΡ‚ этого ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. НапримСр Ρ‚Π°ΠΊ:

Но Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠ»ΠΎΡ…ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… сСрвСров функция Π±ΡƒΠ΄Π΅Ρ‚ расти Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ, ΠΈ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ прСвратится Π² ΠΊΠΎΡˆΠΌΠ°Ρ€. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ супСркласса MessageHandler ΠΈ вынСсСниС Π»ΠΎΠ³ΠΈΠΊΠΈ опрСдСлСния ΠΊΠΎΠ΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² подклассы:

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

ΠœΡ‹ Π½Π΅ создавали Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π½Π΅ услоТняли ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов. ΠœΡ‹ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠœΡ‹ достигли Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ эффСкта, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³Π΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ прСимущСствами. ΠœΡ‹ Π½Π΅ привязывали сСбя ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² runtime ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚, сохраняя ΠΏΡ€ΠΈ этом высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ мСньшим количСством ΠΊΠΎΠ΄Π°. По сути компилятор создал ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Β«ΠΊΠ»Π΅ΠΉΒ» вмСсто нас! ΠŸΡ€ΠΈ этом ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ прСимущСства ЀП. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ абстракции, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ языками Π½Π° этом Π½Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ

ΠšΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡΡŒ, ΠΏΡ€ΠΎΡ‡Π»ΠΈ ΠΊΠ½ΠΈΠ³Ρƒ Β«ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования» Π‘Π°Π½Π΄Ρ‹ Π§Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…. Π›ΡŽΠ±ΠΎΠΉ ΡƒΠ²Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ сСбя программист Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° Π½Π΅ привязана ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ языку программирования, Π° ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО Π² Ρ†Π΅Π»ΠΎΠΌ. Π­Ρ‚ΠΎ Π±Π»Π°Π³ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ΅ заявлСниС. Но ΠΊ соТалСнию ΠΎΠ½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ истины.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки нСвСроятно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС Π²Π°ΠΌ Π½Π΅ понадобятся ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ язык Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ высокоуровнСвый, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² концСпциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ всС извСстныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ программирования. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² являСтся АдаптСр (Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Ѐасада? ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ понадобилось Π½Π°ΡˆΡ‚Π°ΠΌΠΏΠΎΠ²Π°Ρ‚ΡŒ побольшС страниц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ условия ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°). Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ оказываСтся Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ссли Π² языкС Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° каррирования.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ АдаптСр Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто примСняСтся ΠΊ «стандартной» Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ абстракции Π² Java β€” классу. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языках ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ примСняСтся ΠΊ функциям. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π±Π΅Ρ€Ρ‘Ρ‚ интСрфСйс ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс, согласно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ трСбованиям. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° АдаптСр:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ интСрфСйс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, возводящСй число Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, ΠΊ интСрфСйсу Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ число Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. Π’ аккадСмичСских ΠΊΡ€ΡƒΠ³Π°Ρ… этот ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΡ‘ΠΌ называСтся ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π² Ρ‡Π΅ΡΡ‚ΡŒ спСциалиста ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π₯аскСлла ΠšΠ°Ρ€Ρ€ΠΈ (Haskell Curry), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Ρ‘Π» ряд матСматичСских Ρ‚Ρ€ΡŽΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё это Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ). Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ЀП Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ повсСмСстно Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ интСрфСйсу, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΌΡƒ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ мСстС. Π’Π°ΠΊ ΠΊΠ°ΠΊ интСрфСйс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅).

Π­Ρ‚ΠΎΡ‚ инструмСнт являСтся встроСнным Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык сдСлаСт всё Π·Π° вас. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ наш язык, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ просто написали ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π’ ЀП ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ прСдставляСт ΠΈΠ· сСбя простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ создания ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΎΠΊ. Π’Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° Π·Π°Π΄Π°Ρ‡Π΅, Π° компилятор ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π·Π° вас! Всё ΠΎΡ‡Π΅Π½ΡŒ просто, ΠΈ происходит ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ АдаптСр (ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ).

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСния

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ (ΠΈΠ»ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅) вычислСния β€” это интСрСсная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, которая становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ усвоитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ. ΠœΡ‹ ΡƒΠΆΠ΅ встрСчали ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ кусок ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ многопоточности:

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСния ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ рядом достоинств ΠΊΠ°ΠΊ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ нСдостатками. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ обсудим достоинства ΠΈ я объясню ΠΊΠ°ΠΊ ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ с нСдостатками.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ

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

АбстрагированиС структур управлСния

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСния ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракций, Ρ‡Ρ‚ΠΎ становятся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. НапримСр, прСдставим сСбС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ структуры:

БСсконСчныС структуры Π΄Π°Π½Π½Ρ‹Ρ…

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ языки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ бСсконСчныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, созданиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² строгих языках Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС [ΠΏΠ΅Ρ€. β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π² Python]. НапримСр ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡ΠΈ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ бСсконСчный список Π·Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ врСмя ΠΈ ΠΏΡ€ΠΈ этом ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² памяти. Π’ строгих языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, ΠΌΡ‹ просто написали Π±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‡Π»Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ языках ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Haskell ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ просто ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ бСсконСчный список чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡ΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ язык Π»Π΅Π½ΠΈΠ²Ρ‹ΠΉ, Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ вычислСны лишь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ части списка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π­Ρ‚ΠΎ позволяСт Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ большого числа ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… с Π±ΠΎΠ»Π΅Π΅ высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ списков Π½Π° бСсконСчных ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΡ…).

НСдостатки

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ бСсплатный сыр Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΡ‹ΡˆΠ΅Π»ΠΎΠ²ΠΊΠ΅. Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСния тянут Π·Π° собой ряд нСдостатков. Π’ основном это нСдостатки ΠΎΡ‚ Π»Π΅Π½ΠΈ. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‡Π΅Π½ΡŒ часто Π½ΡƒΠΆΠ΅Π½ прямой порядок вычислСний. Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’ Π»Π΅Π½ΠΈΠ²ΠΎΠΌ языкС Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрвая строка выполнится Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ! Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (вСдь ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты), ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с внСшним ΠΌΠΈΡ€ΠΎΠΌ! Если ΠΌΡ‹ Π²Π²Π΅Π΄Ρ‘ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для упорядочивания выполнСния ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ потСряСм прСимущСство матСматичСской строгости ΠΊΠΎΠ΄Π° (Π° слСдом потСряСм всС плюшки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования). К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ Π΅Ρ‰Ρ‘ Π½Π΅ всё потСряно. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ взялись Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ нСсколько ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ убСдится Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС выполняСмых инструкций Π½Π΅ потСряв Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΡƒΡ…Π°. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΌΠΈΡ€ΠΎΠ²! Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя продолТСния (continuation), ΠΌΠΎΠ½Π°Π΄Ρ‹ (monads) ΠΈ однозначная типизация (uniqueness typing). Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с продолТСниями, Π° ΠΌΠΎΠ½Π°Π΄Ρ‹ ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»ΠΎΠΆΠΈΠΌ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π°. Занятно, Ρ‡Ρ‚ΠΎ продолТСния ΠΎΡ‡Π΅Π½ΡŒ полСзная ΡˆΡ‚ΡƒΠΊΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для задания строгого порядка вычислСний. Об этом ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ

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

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС add ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ add Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… j Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 225.

Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΡ‘ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‚ΡŒ порядок выполнСния Π΄Π²ΡƒΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ВСрнёмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ

Π­Ρ‚ΠΈ Π΄Π²Π΅ строки Π½Π΅ зависят Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΈ компилятор Π²ΠΎΠ»Π΅Π½ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… порядок ΠΏΠΎ своСму Ρ…ΠΎΡ‚Π΅Π½ΠΈΡŽ. Но Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π² CPS, Ρ‚ΠΎ Ρ‚Π΅ΠΌ самым Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈ компилятору придётся ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ!

Но Π½Π° этом польза ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ заканчиваСтся. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ CPS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая функция Π²Ρ‹Π·Ρ‹Π²Π°Π»Π°ΡΡŒ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаётся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π½Π° CPS, Ссли Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ частный случай ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ произвСсти автоматичСски (Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ компиляторы Ρ‚Π°ΠΊ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚).

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² этом Π½Π΅Ρ‚ нСобходимости. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° нашС CPS ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Если Π²Ρ‹ Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ компилятор для Π½Π΅Π³ΠΎ, Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ для CPS вСрсии Π½Π΅ Π½ΡƒΠΆΠ΅Π½ стСк! Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚, Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ слова Β«returnΒ», ΠΎΠ½ΠΈ просто Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, подставляя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний. ΠžΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒ (push) Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² стСк ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ (pop) ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ фиксированном участкС памяти ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ jump вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Нам Π½Π΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, вСдь ΠΎΠ½ΠΈ большС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ понадобятся, вСдь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚!

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° β€” это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ указываСтся явно, ΠΈ ΠΏΠΎ этому ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ функция Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°. Если Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ β€” это функция, Π° функция Π² нашСм языкС компилируСтся Π² экзСмпляр класса, Ρ‚ΠΎ ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² стСкС ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ β€” это Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅, вСдь наша функция (ΠΊΠ°ΠΊ экзСмпляр класса) β€” это всСго лишь ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. А Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ сути ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· стСка).

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ уяснили, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚? Если ΠΌΡ‹ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ сохраним Π΅Π³ΠΎ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, ΠΌΡ‹ Ρ‚Π΅ΠΌ самым сохраним Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΠΌ Π΅Ρ‘. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈ ОБ. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ продолТСния хранится информация, нСобходимая для возобновлСния выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π» Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ продолТСния. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма постоянно Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ с вашими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ контСкст ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Π Π°Π·Π½ΠΈΡ†Π° лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всё находится ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ ОБ. Если Π²Ρ‹ запроситС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ продолТСния (Π² Scheme это дСлаСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ call-with-current-continuation ), Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ β€” стСком (ΠΈΠ»ΠΈ Π² случаС CPS β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° диск). Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Β«ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с этим ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ состояниС вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «прСобразуСтся» ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ взятия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° продолТСния. Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ приостановлСнному ΠΏΠΎΡ‚ΠΎΠΊΡƒ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ОБ послС Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈ. Π‘ Ρ‚Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ это ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· подряд. ПослС пробуТдСния ОБ информация ΠΎ Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈ уничтоТаСтся. Если этого Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ состояниС ОБ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π‘ продолТСниями Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ!

Π’ ΠΊΠ°ΠΊΠΈΡ… ситуациях продолТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ссли Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС Π² систСмах Π»ΠΈΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ сути. ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ продолТСния нашли Π² Web-прилоТСниях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Seaside для языка Smalltalk). ASP.NET ΠΎΡ‚ Microsoft ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ запросами, ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π²Π°ΠΌ Тизнь. Если Π±Ρ‹ C# ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» продолТСния, Ρ‚ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ASP.NET ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π² Π΄Π²Π° Ρ€Π°Π·Π° β€” достаточно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запросС. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Web-программиста Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Ρ‹Π²Π° β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° Π±Ρ‹ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки! ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ β€” нСвСроятно полСзная абстракция для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всё большС ΠΈ большС Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… толстых ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Web, Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ расти.

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ (Pattern matching)

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π½Π΅ такая ΡƒΠΆ новая ΠΈΠ»ΠΈ инновационная идСя. На самом Π΄Π΅Π»Π΅ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ слабоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. ЕдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅Π³ΠΎ часто ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ с ЀП, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΡ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языках Π΅ΡΡ‚ΡŒ сопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, Π° Π² ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… β€” Π½Π΅Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ нашС знакомство с Pattern matching ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ. Π’ΠΎΡ‚ функция вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡ΠΈ Π½Π° Java:

А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Java-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ языкС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Pattern matching-Π°

Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°? ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π·Π° нас.

ΠŸΠΎΠ΄ΡƒΠΌΠ°Π΅ΡˆΡŒ, Π²Π΅Π»ΠΈΠΊΠ° Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ! Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Π²Π΅Π»ΠΈΠΊΠ°. Π‘Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Ρ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ большоС количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТат слоТныС switch конструкции (это отчасти Π²Π΅Ρ€Π½ΠΎ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ), ΠΈ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ разбиваСтся Π½Π° нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΈ устанавливаСтся ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π½Π° мСстС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (это Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²). Когда происходит Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, компилятор Π½Π° Π»Π΅Ρ‚Ρƒ сравниваСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ со всСми опрСдСлСниями ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° самоС спСциализированноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр int fib(int n) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΏΡ€ΠΈ n Ρ€Π°Π²Π½ΠΎΠΌ 1, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, вСдь int fib(1) β€” Π±ΠΎΠ»Π΅Π΅ спСциализированноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит слоТнСС, Ρ‡Π΅ΠΌ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. НапримСр слоТная систСма Pattern matching позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ прСимущСством Pattern matching являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² случаС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π°ΠΌ Π½Π΅ придётся ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΌ достаточно Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π΅ΠΌ самым ΠΌΡ‹ избавляСтся ΠΎΡ‚ Ρ†Π΅Π»ΠΎΠ³ΠΎ пласта ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΈΠ· Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π‘Π°Π½Π΄Ρ‹ Π§Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…. Π§Π΅ΠΌ слоТнСС ΠΈ вСтвистСС условия, Ρ‚Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pattern matching. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Π΅Π· Π½ΠΈΡ… обходится.

Замыкания

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ обсуТдали особСнности ЀП Π² контСкстС «чисто» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков β€” языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ лямбда исчислСния ΠΈ Π½Π΅ содСрТат особСнностСй, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ систСмС Π§Ρ‘Ρ€Ρ‡Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ лямбда исчислСния. Π₯отя рСализация аксиоматичСской систСмы интСрСсна с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программирования Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, это Π½Π΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. МногиС языки ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡΡΡŒ строгой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡ‚Ρ€ΠΈΠ½Ρ‹. НСкоторыС Ρ‚Π°ΠΊΠΈΠ΅ языки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Common Lisp) Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Ρ‹Ρ‚ΡŒ final β€” ΠΈΡ… значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ. Они Π΄Π°ΠΆΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ зависСли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² β€” функциям Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ своСй области видимости. Но ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Ρ‚Π°ΠΊΠΈΠ΅ особСнности, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π½Π΅-чистом языкС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… лямбда исчислСния ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия интСрСсной особСнности ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ: лСксичСскоС Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ final ΠΈ функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ своСй области видимости:

Если Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ обращаСтся ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π² локальной области видимости, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΈ всё! Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ связываСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ с ΠΌΠΈΡ€ΠΎΠΌ ООП. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаётС класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ состояниС, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ Π΅Π³ΠΎ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ, вспомнитС ΠΏΡ€ΠΎ замыкания. Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ β€” это всСго лишь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаёт Β«Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹Β» Π½Π° Π»Π΅Ρ‚Ρƒ, забирая ΠΈΡ… ΠΈΠ· области видимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ это самим.

Π§Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ?

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

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ?

Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ»ΠΈ прСдлоТСния, Ρ‡Π΅Ρ€ΠΊΠ°Π½ΠΈΡ‚Π΅ записочку Π½Π° адрСс coffeemug [собачка] gmail.com. Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Π»ΡŽΠ±Ρ‹ΠΌ вашим ΠΎΡ‚Π·Ρ‹Π²Π°ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

[2]. Π­Ρ‚ΠΎΡ‚ вопрос Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ. Π€ΠΈΠ·ΠΈΠΊΠΈ ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ясного Π²ΠΎ всСлСнной, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ матСматичСски.

[3]. Π― Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Π» ΡƒΡ€ΠΎΠΊΠΈ истории, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΡ…ΡƒΡŽ Ρ…Ρ€ΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π΄Π°Ρ‚, ΠΈΠΌΡ‘Π½ ΠΈ событий. Для мСня история β€” это ΠΆΠΈΠ·Π½ΠΈ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠΈΡ€. Π­Ρ‚ΠΎ Ρ‚Π΅ ΠΈΡ… Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, которая стоят Π·Π° ΠΈΡ… дСйствиями, ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ влияниС Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Π΄ΡƒΡˆ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ историчСский Ρ€Π°Π·Π΄Π΅Π» этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π±Π΅Π·Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΠ»ΠΎΠ½. Π—Π΄Π΅ΡΡŒ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ люди ΠΈ события.

[4]. Когда я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, мСня ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π» Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «лямбда», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ ΠΌΠΎΠ³ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚. Π’ Π΄Π°Π½Π½ΠΎΠΌ контСкстС лямбда β€” это функция. А грСчСская Π±ΡƒΠΊΠ²Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удобства матСматичСской записи. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ «лямбда» Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π΅ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅ это ΠΏΡ€ΠΎ сСбя Π² Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ».

[5]. Π—Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ строки Π² Java Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ вСроломства, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ.

[6]. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков ΡƒΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСвращая ΠΈΡ… Π² Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ возмоТностСй. Π­Ρ‚ΠΎ называСтся оптимизация хвостовой рСкурсии.

[7]. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π½Π΅ всСгда Π²Π΅Ρ€Π½ΠΎ. Если ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… участков ΠΊΠΎΠ΄Π°, Π½ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС это Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

[8]. На самом Π΄Π΅Π»Π΅ это Π½Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² стСкС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ использовании сборщика мусора Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ O(1) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *