ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Дисциплина Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ваТнСйшиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΎΠΉ срСды вычислСний

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ΠΈΠΏ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ мноТСству, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ двояко. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° посрСдством явного пСрСчислСния всСх ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΅ΠΌΡƒ элСмСнтов (Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ примСняСтся ΠΈ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π³Π΄Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ пСрСчислимыС Ρ‚ΠΈΠΏΡ‹). Π”Ρ€ΡƒΠ³ΠΈΠΌ способом опрСдСлСния Ρ‚ΠΈΠΏΠ° Π’ ΡΠ²Π»ΡΠ΅Ρ‚ся формализация ΠΎΠ±Ρ‰ΠΈΡ… свойств Ρ‚Π΅Ρ… элСмСнтов d ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области D, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Дисциплина Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ваТнСйшиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΎΠΉ срСды вычислСний (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ВСория Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ипизация Π² .NET

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ строгоС опрСдСлСния Ρ‚ΠΈΠΏΠ°. Π—Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСна классификация систСм Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ мСста ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² ΠΊΠ½ΠΈΠ³Π΅ языков ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ исслСдованы особСнности систСмы Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Common Type System Π² ΡΡ€Π΅Π΄Π΅ Microsoft .NET. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ прСобразованиям Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡΡ‚ранствам ΠΈΠΌΠ΅Π½.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² Microsoft .NET ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ описаний Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для случаСв Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Напомним Ρ…ΠΎΠ΄ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΉ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π² ΠΎΡΠ½ΠΎΠ²Π΅ соврСмСнного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ².

Π’ 1960;Ρ… Π³Π³. Π . Π₯ΠΈΠ½Π΄Π»ΠΈ (Roger Hindley) исслСдовал Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅. ΠŸΡ€ΠΈ этом основной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, стоящСй ΠΏΠ΅Ρ€Π΅Π΄ исслСдоватСлСм, Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ языков Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования со ΡΡ‚Ρ€ΠΎΠ³ΠΎΠΉ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΊ ΠΊΠ°ΠΊΠΎΠ²Ρ‹ΠΌ, Π² Ρ‡Π°ΡΡ‚ности, относятся ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ Π½Π°ΠΌΠΈ языки F# ΠΈ Π‘#. Π’ ΠΊΠΎΠ½Ρ†Π΅ 1960;Ρ… Π³Π³. Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡƒΡ‡Π΅Π½Ρ‹ΠΉ исслСдовал ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ систСмы Ρ‚ΠΈΠΏΠΎΠ², Ρ‚. Π΅. Ρ‚Π°ΠΊΠΈΠ΅ систСмы Ρ‚ΠΈΠΏΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π’ 1970;Ρ… Π³Π³. Π . ΠœΠΈΠ»Π½Π΅Ρ€ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ систСмы ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ для языка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ML, давшСго Π½Π°Ρ‡Π°Π»ΠΎ языку программирования F#.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… свСдСний ΠΈΠ· Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования.

Π’ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (ΠΈΠ»ΠΈ, ΠΈΠ½Π°Ρ‡Π΅, сортами) принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ устойчивыС ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ‹Π΅ совокупности элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΎ Π²ΡΠ΅ΠΌ рассматриваСмом мноТСствС (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ элСмСнтов ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π½Π° Ρ‚ΠΈΠΏΡ‹ ΠΈΠ»ΠΈ сорта Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ являСтся условным ΠΈ Π½ΠΎΡΠΈΡ‚ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ зависит ΠΎΡ‚ ΡΠΊΡΠΏΠ΅Ρ€Ρ‚Π° Π² ΡΡ‚ΠΎΠΉ области.

Π’ΠΈΠΏ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ мноТСству, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ двояко. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° посрСдством явного пСрСчислСния всСх ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΅ΠΌΡƒ элСмСнтов (Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ примСняСтся ΠΈ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π³Π΄Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ пСрСчислимыС Ρ‚ΠΈΠΏΡ‹). Π”Ρ€ΡƒΠ³ΠΈΠΌ способом опрСдСлСния Ρ‚ΠΈΠΏΠ° Π’ ΡΠ²Π»ΡΠ΅Ρ‚ся формализация ΠΎΠ±Ρ‰ΠΈΡ… свойств Ρ‚Π΅Ρ… элСмСнтов d ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области D, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΡΡ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ, посрСдством задания ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 4Ρ…, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ истинно, Ссли элСмСнт ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΈ Π»ΠΎΠΆΠ½ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС:

T={d: D^}.

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

.

Π³Π΄Π΅ S — подмноТСство констант, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… сортами; А — мноТСство аксиом Π²ΠΈΠ΄Π° c: s, здСсь с ΡΠ²Π»ΡΠ΅Ρ‚ся константой, as — сортом; R — мноТСство Ρ‚Ρ€ΠΎΠ΅ΠΊ сортов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ пространства ΠΈ ΠΈΡ… ΡΠΎΡ€Ρ‚Π° для систСмы.

Π”Π°Π»Π΅Π΅ Π²Π²Π΅Π΄Π΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΈΠ»ΠΈ, ΠΈΠ½Π°Ρ‡Π΅ говоря, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ приписан Ρ‚ΠΈΠ½. Π’ Ρ‡Π°ΡΡ‚ности, для лямбда-Ρ‚Π΅Ρ€ΠΌΠ° М ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΠ° Π’ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΊΠ°ΠΊ.

#М |- Π’ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ лямбда-Ρ‚Π΅Ρ€ΠΌ М ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π’.

ΠŸΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π΅Π½ ΠΈ Π΄Π»Ρ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, ΠΈ Π΄Π»Ρ программирования) систСма Ρ‚ΠΈΠΏΠΎΠ² формируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, задаСтся мноТСство базисных Ρ‚ΠΈΠΏΠΎΠ² (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΈΡ… ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ d{, d2 ΠΈ Ρ‚. Π΄.). Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈΠΌΠ΅ΠΌ соглашСниС, Ρ‡Ρ‚ΠΎ всякий базисный Ρ‚ΠΈΠΏ считаСтся Ρ‚ΠΈΠΏΠΎΠΌ. НаконСц, условимся, Ρ‡Ρ‚ΠΎ Ссли, Π° ΠΈ Π¬ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‚ΠΎ Ρ„ункция ΠΈΠ·, Π° Π² Π¬ Ρ‚Π°ΠΊΠΆΠ΅ считаСтся Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π°—>Π¬.

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

РассмотрСв Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования, ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ Ρ‚Π΅ ΠΏΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ языки программирования ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚ΠΎ Π±Π΅ΡΡΠΏΠΎΡ€Π½ΠΎΠ΅ прСимущСство Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… исчислСний, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ модСлируСмая прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ структурирована, Ρ‡Π΅ΠΌ Π² Ρ‚ΠΎΠΌ случаС, Ссли отсутствуСт сСгмСнтация Π½Π° Ρ‚ΠΈΠΏΡ‹. Випизация структурируСт ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ичСскому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ.

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

Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ восприятиС, Π½ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ. ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ элСмСнтами носит Π±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ сущности ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ (ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅) — Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ.

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

Напомним ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ систСм Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнной для языков программирования являСтся строгая типизация. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ систСмы Ρ‚ΠΈΠΏΠΎΠ² Π² ΡΠ·Ρ‹ΠΊΠ΅ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сущСствования любого языкового ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сущСствуСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ рассмотрСнной Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ typeof языка программирования Π‘#. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ классичСскиС ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ языки программирования Pascal, FORTRAN, PL/1 ΠΈ Π΄Ρ€. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ классичСский Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ языка программирования Π‘ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ.

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ систСм Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования являСтся полиморфная типизация. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ допустимы выраТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (скаТСм, функция упорядочСния списка с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ элСмСнтов). ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° контроля соотвСтствия Ρ‚ΠΈΠΏΠΎΠ² (type-checking) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ компиляции (compile time), Ρ‚. Π΅. Π±ΠΎΠ»Π΅Π΅ бСзопасным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π³Π°ΠΊ ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния (run time) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ бСзопасно для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ особСнности управлСния Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Common Type System Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Microsoft .NET. Из ΡΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ бСзопасности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Microsoft .NET Ρ‚ΠΈΠΏΡ‹ Common Type System, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠ»Π°ΡΡΡ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ особСнности Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа get ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ set.

Подобно ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ значСния Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°Π΄ элСмСнтами Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ прСобразования ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ Π² Ρ‡ΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). ΠŸΡ€ΠΈ этом Ρ‚Π°ΠΊΠΈΠ΅ прСобразования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ программистом (Ρ‚.Π΅. ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ явно), Ρ‚Π°ΠΊ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ программирования (Ρ‚.Π΅. ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСявным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ).

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² Π² ΡΠΎΠΎΡ‚нСсСнии с Microsoft .NET ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ совокупности (Π² Ρ‡Π°ΡΡ‚ности, Π² Π²ΠΈΠ΄Π΅ пространства ΠΈΠΌΠ΅Π½, Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ сборки).

Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ подкатСгориями иСрархичСской систСмы Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Microsoft .NET ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылочныС Ρ‚ΠΈΠΏΡ‹ (reference type) ΠΈ Ρ‚ΠΈΠΏΡ‹-значСния (value type). Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ особСнности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΠ·Ρ‹ΠΊΠ΅ программирования C# (рис. 3.1). ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Ρ‚ΠΈΠΏΡ‹-значСния, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², содСрТат нСпосрСдствСнно ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΠΈΠΏΡ‹-значСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пустыми (Ρ‚.Π΅. ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null). БсылочныС Ρ‚ΠΈΠΏΡ‹, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°ΠΌ-значСниям, содСрТат Π½Π΅ ΡΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π»ΠΈΡˆΡŒ ссылки Π½Π° Π½ΠΈΡ…, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null.

БопоставлСниС ссылочных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Рис. 3.1. БопоставлСниС ссылочных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ особСнностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΠ·Ρ‹ΠΊΠ΅ программирования C# рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘#:

int i=25;

string s="John_Smith" ;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ происходит ΠΎΠ·Π½Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ цСлочислСнной константы (Ρ‚.Π΅. Ρ‚ΠΈΠΏΠ°-значСния), Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ — строковой (Ρ‚.Π΅. Ρ‚ΠΈΠΏΠ°-ссылки). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ происходит связываниС со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ — со ΡΡΡ‹Π»ΠΊΠΎΠΉ, Ρ‚. Π΅. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.

ΠŸΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ систСмы Ρ‚ΠΈΠΏΠΎΠ² Common Type System ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды Microsoft .NET ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· ΡΠ·Ρ‹ΠΊΠ° программирования Π‘#, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹ для Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ этом Ρ‚ΠΈΠΏΡ‹-значСния Ρ€Π°ΡΠΏΠ°Π΄Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹:

β€’ элСмСнтарныС (Π² Ρ‡Π°ΡΡ‚ности, цСлочислСнныС ΠΈ Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅) —.

int i; float Ρ…;

  • β€’ пСрСчислимыС (Π² Ρ‡Π°ΡΡ‚ности, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ) — enum State { Off, On };
  • β€’ структурныС (Π² Ρ‡Π°ΡΡ‚ности, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ) — struct Point (int Ρ…, Ρƒ;};.

Π’ ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ссылочныС Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹:

β€’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏ (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² Common Type System) —.

object;

  • β€’ строковыС (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ символов) — string;
  • β€’ классы (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° class) — class Foo: Bar, IFoo {…};
  • β€’ интСрфСйсы (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° interface) — interface IFoo: IBar {…};
  • β€’ массивы (Π² Ρ‡Π°ΡΡ‚ности, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ ΠΈΠ· 10 символов) — string!) a=new string! 10];
  • β€’ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ (ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ) — delegate void Empty ();

Π Π°Π½Π΅Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ boxing ΠΈ unboxing, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Microsoft .NET. Напомним, Ρ‡Ρ‚ΠΎ эти ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ языков программирования ΠΈΠ· ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Ρ… Π² Ρ‚ΠΈΠΏΡ‹-значСния ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π‘Ρ…Π΅ΠΌΠ° Π½Π° Ρ€ΠΈΡ. 3.2 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ классов Common Type System срСды проСктирования ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Microsoft .NET ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡΠ·Ρ‹ΠΊΡƒ программирования Π‘#. Π’ Ρ‡Π°ΡΡ‚ности, всС ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ (Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ систСмой программирования) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (user defined). К ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ относятся пСрСчислСния, массивы, классы, интСрфСйсы ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ).

ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ дСлятся Π½Π° ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки) ΠΈ Ρ‚ΠΈΠΏΡ‹-значСния (встроСнныС — ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ — с ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ).

Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Π½Π°Π΄ элСмСнтами Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ прСобразования ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ Π² Ρ‡ΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). ΠŸΡ€ΠΈ этом Ρ‚Π°ΠΊΠΈΠ΅ прСобразования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ программистом (Ρ‚.Π΅. ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ явно), Ρ‚Π°ΠΊ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ программирования (Π³.Π΅. ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСявным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ).

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² языка Π‘# (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚).

Рис. 3.2. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² языка Π‘# (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚).

НСявныС прСобразования ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ Common Type System ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚ся автоматичСски. ΠŸΡ€ΠΈ этом Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ нСявного прСобразования всСгда ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ точности. Π―Π²Π½Ρ‹Π΅ прСобразования ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ программистом ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ прилоТСния, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ явного Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ ΠΏΡ€ΠΈ этом ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ ошибкой, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ точности.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ряд ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘#:

int Ρ…=25; long Ρƒ=Ρ…;

// нСявноС short z=(short)x;

// явноС.

double d =3.141 592 536; float f=(float)d;

// явноС long l=(long)d;

// явноС Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ систСма Common Type System срСды Microsoft .NET обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚. Π΅. Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов (ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚. Π΄.). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ явныС, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΡΠ²Π½Ρ‹Π΅ прСобразования Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Как ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ исслСдования систСмы Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Common Type System срСды проСктирования ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм Microsoft .NET, эта иСрархия ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объСм.

Π‘ Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ описания Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΈΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ срСды Microsoft .NET, вводится понятиС пространства ΠΈΠΌΠ΅Π½ (namespace). ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎΠΌ ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ срСды Microsoft .NET, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² языков программирования ΠΈ ΡΡ€Π΅Π΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° пространств ΠΈΠΌΠ΅Π½ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ логичСской структуризации систСмы Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Common Type System Π² ΡΡ€Π΅Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Microsoft .NET.

Описания пространств ΠΈΠΌΠ΅Π½, Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π°Ρ….

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ пространства ΠΈΠΌΠ΅Π½ Π² ΡΡ€Π΅Π΄Π΅ Microsoft .NET:

  • 1) пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сборки;
  • 2) пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°;
  • 3) ΠΌΠ΅ΠΆΠ΄Ρƒ пространствами ΠΈΠΌΠ΅Π½ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ соотвСтствия (Ρ‚.Π΅. отобраТСния, пСрСводящСго Π½Π°Π·Π²Π°Π½ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ Π² ΠΈΠΌΡ Ρ„Π°ΠΉΠ»Π°);
  • 4) ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ пространства ΠΈΠΌΠ΅Π½.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ примСнСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° пространств ΠΈΠΌΠ΅Π½ Π² ΡΡ€Π΅Π΄Π΅ программирования Microsoft .NET ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ описания пространств ΠΈΠΌΠ΅Π½ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘#:

namespace Nl{.

//N1.

class Cl{.

// N1. C1 class C2{.

// N1. C1.C2.

} }.

namespace N2{.

//N1.N2 class C2{.

// N1. N2.C2.

} } }.

РассмотрСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ содСрТит описания пространств Π΄Π²ΡƒΡ… ΠΈΠΌΠ΅Π½: пространства N1 с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ классов Π‘1 ΠΈ Π‘2 ΠΈ ΠΏΡ€ΠΎΡΡ‚ранства N2 с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ класса Π‘2.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариях ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C# ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎΠ»Π½Ρ‹Π΅ наимСнования пространств ΠΈΠΌΠ΅Π½. Π’Π°ΠΊ, для обращСния ΠΊ ΠΊΠ»Π°ΡΡΡƒ Π‘2, описанному Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ N1, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя N1. C1.C2, Π° Π΄Π»Ρ обращСния ΠΊ ΠΊΠ»Π°ΡΡΡƒ Π‘2, описанному Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ N2, — ΠΏΠΎΠ»Π½ΠΎΠ΅ имя N1. N2.C2. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠΌ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ пространств ΠΈΠΌΠ΅Π½ удаСтся ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ².

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… комплСксов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вСсьма Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈ Ρ€ΠΈΡΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ использовании ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ возрастаСт. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ использованиС ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ Ρ‚ΠΈΠΏΠΎΠ² Π² ΡΡ€Π΅Π΄Π΅ программирования Microsoft .NET являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Для экономии Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚ ΠΈ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм Π² ΡΠ·Ρ‹ΠΊΠ΅ программирования C# прСдусмотрСн ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ using. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΏΡ€ΠΎΡΡ‚ранствах ΠΈΠΌΠ΅Π½ срСды программирования Microsoft .NET посрСдством ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° using, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘#:

using N1;

Cl Π°;

// Имя N1. являСтся нСявным.

N1.C1 Π¬;

// ПолноС имя.

C2 с;

// Ошибка: имя Π‘2 нс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

N1.N2.C2 cl;

// Один из (под)классов Б2.

Π‘1.Π‘2 Π΅;

// Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· (ΠΏΠΎΠ΄)классов Π‘2.

using C1=N1.N2.C1;

using N2=N1.N2;

Cl a;

// БоотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ N1. N2.C1 N2. C1 Π¬;

// БоотвСтствуСт ΠΈΠΌΠ΅Π½ΠΈ N1. N2.C1.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ using позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΊΠ°ΠΊ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для указания Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ (alias).

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ аспСктом проСктирования ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… комплСксов ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ срСды Microsoft .NET являСтся ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ коллизия ΠΈΠΌΠ΅Π½ Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΡΡ€Π΅Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Microsoft Visual Studio для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ссылки, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ сборку — ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ для компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Бсылки ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ компилятору Π² Ρ…ΠΎΠ΄Π΅ трансляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ языкС программирования ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ срСды Microsoft .NET ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ΅ (ΠΏΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция /Π³ ΠΈΠ»ΠΈ /reference). Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Ρ„Π°ΠΉΠ»Π° HelloWorld с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C# со ΡΡΡ‹Π»ΠΊΠΎΠΉ Π½Π° ΠΏΡ€ΠΎΡΡ‚ранство ΠΈΠΌΠ΅Π½ System.WinForms.dll Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄.

esc HelloWorld. es /reference:Systern.WinForms.dll.

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ссылок Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ сборки для использования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

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

ПослС рассмотрСния основных аспСктов Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‚Π΅ΠΎΡ€ΠΈΠΈ с Ρ‚ΠΈΠ½Π°ΠΌΠΈ ΠΈ ΡΠ·Ρ‹ΠΊΠΈ программирования с Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΡƒΡŽ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET обСспСчиваСт ряд нСсомнСнных Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ извСстными ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ систСмы Ρ‚ΠΈΠΏΠΎΠ². Π’ Ρ‡Π°ΡΡ‚ности, тСхнология .NET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ систСму Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Common Type System (CTS), ΠΎΠ±Ρ‰ΡƒΡŽ для всСх языков программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… тСхнологичСской ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET обСспСчиваСтся строгоС, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ языков программирования ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ классами .NET. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов для языков программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET, ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

ЦСлям бСзопасности Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ слуТит явноС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹-значСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСобразования Ρ‚ΠΈΠΏΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹Π΅ (извСстный Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ boxing) ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ (извСстный Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ unboxing).

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

Вопрос 1.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: Π² Ρ‡Π΅ΠΌ состоит основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ?

  • Π°) структуризация ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области (+);
  • Π±) Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ манипулирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (+);
  • Π²) ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ процСсса компиляции.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… языков программирования являСтся бСстиповым?

  • Π°) LISP (+);
  • Π±) Π‘#;
  • Π²) C++.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3: ΠΊΠ°ΠΊΠΎΠ²Ρ‹ основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ чистой систСмы Ρ‚ΠΈΠΏΠΎΠ²?

  • Π°) сорта, аксиомы, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ пространства (+);
  • Π±) Π°Π»Ρ„Π°Π²ΠΈΡ‚, сорта, аксиомы;
  • Π²) сорта, аксиомы, ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Π²ΠΎΠ΄Π°.

Вопрос 2.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: Ρ‡Ρ‚ΠΎ являСтся прСимущСством Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Microsoft .NET?

  • Π°) унификация (+);
  • Π±) ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² языков программирования Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ систСмы (+);
  • Π²) большоС количСство Ρ‚ΠΈΠΏΠΎΠ².

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Ρ‡Ρ‚ΠΎ понимаСтся ΠΏΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠΌ?

  • Π°) ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области (+);
  • Π±) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области;
  • Π²) модСль ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3: Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ‚Π΅ΠΎΡ€ΠΈΠΉ?

  • Π°) ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ;
  • Π±) ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹;
  • Π²) ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ иСрархичности (+).

Вопрос 3.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: Ρ‡Ρ‚ΠΎ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ являСтся этапом развития Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ²?

  • Π°) ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (+);
  • Π±) тСория простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;
  • Π²) тСория вычислСний.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: ΠΊΠ°ΠΊΠΎΠ²Ρ‹ основныС способы задания Ρ‚ΠΈΠΏΠ°?

  • Π°) явноС пСрСчислСниС элСмСнтов (+);
  • Π±) ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ функция (+);
  • Π²) приписываниС Ρ‚ΠΈΠΏΠ°.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3: ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ осущСствляСтся построСниС Ρ‚ΠΈΠΏΠΎΠ²?

  • Π°) посрСдством рСкурсии;
  • Π±) посрСдством Π΄Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ;
  • Π²) посрСдством ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ (+).
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ