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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 78

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

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

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, заимствованный ΠΈΠ· Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΠΈ Ian Graham Π½Π° ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ ОО-Π°Π½Π°Π»ΠΈΠ·Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ графичСскиС соглашСния:

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

Бсылки ΠΈ простыС значСния

Π’Π°ΠΆΠ½Ρ‹ΠΉ синтаксичСский вопрос - Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΌΡ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ синтаксичСскоС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ссылками ΠΈ простыми значСниями. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, присваиваниС ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ смысл для ссылок ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Но синтаксис этого Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚, - Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ символы (:=, =, /=). НС опасно Π»ΠΈ это? НС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ символов, напоминая Ρ‚Π΅ΠΌ самым, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ смысл?

Π”Π²Π° Π½Π°Π±ΠΎΡ€Π° символов использовались Π² языкС Simula 67. НСмного ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ для совмСстимости с настоящСй ΠΊΠ½ΠΈΠ³ΠΎΠΉ (Π² языкС Simula reference сокращаСтся Π΄ΠΎ ref), Π² Simula ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ объявлСниС сущности ссылочного Ρ‚ΠΈΠΏΠ° CΡ‚Π°ΠΊ:


x: reference C


ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово reference ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ экзСмпляры x Π±ΡƒΠ΄ΡƒΡ‚ ссылками. Рассмотрим объявлСния:


m, n: INTEGER

x, y: reference C


Нотация Simula, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с простыми ΠΈ ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹-ссылки ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ m := n x :- y ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° равСнство m = n x == y ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° нСравСнство m /= n x =/= y

Π’Π°Π±Π»ΠΈΡ†Π° 8.3.Нотация Π² стилС Simula для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со ссылками ΠΈ значСниями Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²


БоглашСния Simula Π»ΠΈΡˆΠ΅Π½Ρ‹ нСоднозначности. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈΡ… Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ? К соТалСнию, эти соглашСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π±Π»Π°Π³ΠΈΡ… Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, приносящих скорСС Π²Ρ€Π΅Π΄, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π² прозаичСской области поиска ошибок. Π”Π²Π° Π½Π°Π±ΠΎΡ€Π° символов ΠΏΠΎΡ…ΠΎΠΆΠΈ, - это ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ синтаксичСскиС ошибки, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ использованию := вмСсто :-.

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

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

[x]. a :- b для ссылочных присваиваний ΠΈ a == b сравнСния ссылок;

[x]. a := b для присваивания ΠΏΡƒΡ‚Π΅ΠΌ копирования (эквивалСнт a := clone (b) ΠΈΠ»ΠΈ a.copy (b) Π² нашСй Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ) ΠΈ a = b для сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (эквивалСнт нашСго equal (a, b) ).

Но Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Simula ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТСства (copy ΠΈΠ»ΠΈ clone , сравнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), придСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ класса. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся TEXT, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Simula ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±Π° мноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

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

Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого Π°Π½Π°Π»ΠΈΠ·Π°, нотация этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ соглашСния, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Simula: ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ символы ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ для Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… ΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ² с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ сСмантикой. Π­Ρ„Ρ„Π΅ΠΊΡ‚Π° сСмантики Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ссылочного Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ использовании ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… для всСх Ρ‚ΠΈΠΏΠΎΠ²:

[x]. a := clone (b) ΠΈΠ»ΠΈ a.copy (b) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ присваивания;

[x]. equal (a, b) для сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ всСх ΠΏΠΎΠ»Π΅ΠΉ.

Π­Ρ‚Π° нотация сущСствСнно отличаСтся ΠΎΡ‚ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, примСняСмой для ΠΈΡ… ссылочных Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ², (:= ΠΈ =, соотвСтствСнно) Ρ‡Ρ‚ΠΎ сниТаСт риск появлСния Π½Π΅Π΄ΠΎΡ€Π°Π·ΡƒΠΌΠ΅Π½ΠΈΠΉ.

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

[x]. "Π’Ρ‹Ρ€Π°ΠΆΠ°ΠΉΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов".

Но Π΄Ρ€ΡƒΠ³ΠΈΠ΅ силы, Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π² нашСй Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚:

[x]. "НС создавайтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ".

[x]. "Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π·Π²Π΅ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ всС "Π·Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²" любой Π½ΠΎΠ²ΠΈΠ½ΠΊΠΈ, обращая особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ качСство".

[x]. "Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² простой ΠΈ ясной Ρ„ΠΎΡ€ΠΌΠ΅". ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особой Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ языка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ Π² своих ΠΎΡ†Π΅Π½ΠΊΠ°Ρ… Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ случаСм. Но Π² Π΄Π°Π½Π½ΠΎΠΉ ситуации всС каТСтся ΠΏΡ€ΠΎΡ‰Π΅. Для сущностСй Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ INTEGER) присваиваниС ΠΈ сравнСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ опСрациями. Для ссылок, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя, ссылочноС сравнСниС ΠΈ присваиваниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сравнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ := ΠΈ = для Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

[x]. "Для сохранСния компактности ΠΈ простоты языка Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ обозначСния, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ". Π­Ρ‚ΠΎ справСдливо Π² частности для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° - ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ нотация Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π½Π΅ сущСствуСт опасности ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

[x]. "Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ сущСствуСт риск возникновСния Π½Π΅Π΄ΠΎΡ€Π°Π·ΡƒΠΌΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя возмоТностями, Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ". Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования символов, Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΏΠΎ написанию (:- ΠΈ :=), Π½ΠΎ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ сСмантикой.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, хотя ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… лСкциях ΠΌΡ‹ познакомимся с Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ классами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ LIST [G], Π³Π΄Π΅ G, извСстно ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π’Π°ΠΊΠΎΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сущностями Ρ‚ΠΈΠΏΠ° G ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² присваиваниях ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ… Π½Π° равСнство. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² использовании Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ создании Ρ‚ΠΈΠΏΠ°, слуТащСго Π² качСствС фактичСского Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. НапримСр, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LIST [INTEGER] ΠΈΠ»ΠΈ LIST [POINT]. Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, фактичСский Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠ°ΠΊ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС, Ρ‚Π°ΠΊ ΠΈ ссылочного Ρ‚ΠΈΠΏΠ° - Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС. Π’ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ класса, Ссли a ΠΈ b ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ G, Ρ‚ΠΎ часто ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ присваивания Π² Ρ„ΠΎΡ€ΠΌΠ΅ a := b ΠΈΠ»ΠΈ тСсты Π² Ρ„ΠΎΡ€ΠΌΠ΅ a = b с Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСмантику Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° фактичСский ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΊΠ°ΠΊ INTEGER, ΠΈ ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ сСмантику - для ссылочного Ρ‚ΠΈΠΏΠ°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ POINT.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉΡΡ Π² Ρ‚Π°ΠΊΠΎΠΌ Π΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° вставки элСмСнта x Π² список. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создаСт Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт списка. Если x Ρ†Π΅Π»ΠΎΠ΅, элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ копию значСния x. Если x являСтся ссылкой, Ρ‚ΠΎ элСмСнт списка Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, присоСдинСнный ΠΊ x .

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