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

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

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

Но вСрнСмся ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ полоТСниям. Π‘ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ вычислСния слоТнСС ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° понадобится Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. И Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ вывСсти Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° экран, Ρ‚ΠΎ язык с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π³Π΄Π΅ порядок вычислСния явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ β€œΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈβ€ с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом - я ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΡ‚Π°Π²Π»ΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это вовсС Π½Π΅ функция, - с Ρ‚ΠΈΠΏΠΎΠΌ, скаТСм, string -> unit. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π° экранС - Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ эффСкта. Π­Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Лисп, Π² ML, Π² любом языкС с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

А Π² чистом языкС, Ссли Π΅ΡΡ‚ΡŒ функция string -> unit, Π΅Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°Π΄ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ: Π²Ρ‹ вСдь Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° выдаст всСго лишь ΠΎΡ‚Π²Π΅Ρ‚ Ρ‚ΠΈΠΏΠ° unit. Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ. А ΠΊΠ°ΠΊΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅. Π’ Π»Π΅Π½ΠΈΠ²ΠΎΠΌ языкС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΡ‚ какая: Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ β€œf примСняСтся ΠΊ print 'привСт”, Π° вычисляСт Π»ΠΈ f свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, для вас нСясно. Π­Ρ‚ΠΎ всС происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° β€” print 'ΠΏΡ€ΠΈΠ²Π΅Ρ‚' ΠΈ print ΠΏΠΎΠΊΠ°', - ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½, ΠΈΠ»ΠΈ ΠΎΠ±Π° Π² любом порядкС, ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… вычислСниях Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ /Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ способом Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ, Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ, ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π‘Π½Π°Ρ‡Π°Π»Π° это Π±Ρ‹Π»ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ - Π½Π΅Ρ‚, собствСнно, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. И ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… использовалась Ρ‚ΠΎΠ»ΡŒΠΊΠΎ функция string -> string. ЦСлая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π±Ρ‹Π»Π° Π²Π²ΠΎΠ΄ΠΎΠΌ, Π° строка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. Π’ΠΎΡ‚ ΠΈ всС.

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

Бмысл Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»Π΅Π½ΠΈΠ²ΠΎΡΡ‚ΡŒ Π·Π°Π³Π½Π°Π»Π° нас Π² ΡƒΠ³ΠΎΠ», ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопрос с Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° самая ваТная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ программирования. Но Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ-Ρ‚ΠΎ всС с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ - с Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΈΠΊΠΎΠ»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ.

Π‘Π΅ΠΉΠ±Π΅Π»: Π—Π° всС Ρ‚ΠΎ врСмя, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ измСнились ваши прСдставлСния ΠΎ Π½Π΅ΠΌ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΌ?

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

Π‘Π΅ΠΉΠ±Π΅Π»: ПослС ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π²Ρ‹ написали Π½Π΅ ΠΎΠ΄ΠΈΠ½ компилятор. НавСрняка Π²Ρ‹ поняли, Π² Ρ‡Π΅ΠΌ сСкрСт создания ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ компилятора.

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: Π”Π°, я ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ понял с Ρ‚Π΅Ρ… ΠΏΠΎΡ€. Π’ΠΎ Π±Ρ‹Π» компилятор для ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка Π½Π° ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ языкС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΏΠΈΡˆΡƒ компиляторы для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС. Но Π² GHC, нашСм компиляторС для Haskell, Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык с Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Π‘Π΅ΠΉΠ±Π΅Π»: А Π² этом языкС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° типизация исходного языка?

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

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

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

ΠŸΠ΅ΠΉΡ‚ΠΎΠ½-ДТонс: ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΎΠ²Π° ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° систСм со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ - ΠΈ Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ динамичСскиС языки ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²Π°ΠΆΠ½Ρ‹ ΠΈ интСрСсны. МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ систСму Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄Π°ΡŽΡ‚ сбоСв ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ стандарт - Π½Π΅Ρ‚ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… сбоСв, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΊ символам. Π­Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘Π΅ΠΉΠ±Π΅Π»: Когда сторонники динамичСской ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€Π΅ΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ говорят: β€œΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π³Π΄Π΅ статичСская типизация ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΌΠ½Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я хочу”. А Π²Ρ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚: β€œΠ”Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½Π΅ составляСт проблСмы”. Π§Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ?

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

Π Π΅ΠΆΠ΅ приводится Ρ‚Π°ΠΊΠΎΠΉ Π΄ΠΎΠ²ΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ кусок своСго ΠΊΠΎΠ΄Π° Ρ‚Ρ€Π΅Ρ…Π»Π΅Ρ‚Π½Π΅ΠΉ давности - Π½Π΅ ΠΏΠΎΠ΄Ρ€Π΅Ρ‚ΡƒΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, - Ρ‚ΠΎ систСмы Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.