Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ массивом Π² C++?

Π’ C ++ сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ массивом. Однако Π³Π»Π°Π²Π½ΠΎΠ΅ сходство ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ. ОсновноС сходство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой список, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: Ρ€Π°Π·ΠΌΠ΅Ρ€ (Π΄Π»ΠΈΠ½Π°) Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива являСтся фиксированным ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны Π² Π²Π΅ΠΊΡ‚ΠΎΡ€, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны Π² массив. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ массива. Π’Π΅ΠΊΡ‚ΠΎΡ€ β€” это класс, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ экзСмпляры Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ массив являСтся постоянным ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π£ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹), Π½ΠΎ Ρƒ массива ΠΈΡ… Π½Π΅Ρ‚, поэтому Π²Π΅ΠΊΡ‚ΠΎΡ€ называСтся структурой Π΄Π°Π½Π½Ρ‹Ρ…. Π₯отя ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с массивом, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ΠŸΠ΅Ρ€Π΅Π΄ массивом нСльзя Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ элСмСнт. Π’ C ++ 17 ΠΈ Π²Ρ‹ΡˆΠ΅ элСмСнт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Π° emplace ().

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ массива

Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколькими способами. Основной способ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

БоотвСтствСнно, массив Π±ΡƒΠ΄Π΅Ρ‚ создан ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°Ρ… слСва ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания. Π—Π°Ρ‚Π΅ΠΌ количСство элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΎ, Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива остаСтся фиксированным, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 5.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с:

using namespace std ;

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° прСпроцСссора Π½Π΅ трСбуСтся.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΄Π²ΡƒΡ… элСмСнтов увСличиваСтся Π΄ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Π° push_back ():

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для массива, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, создайтС массив для максимального количСства прСдусмотрСнных элСмСнтов ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° []. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Inserting

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ элСмСнт вставляСтся ΠΏΠ΅Ρ€Π΅Π΄ элСмСнтом, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, p:

for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] β€˜ β€˜ ;
>

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° создаСт Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘ΡƒΠΊΠ²Π° C, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π±ΡƒΠΊΠ²ΠΎΠΉ D Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС, здСсь отсутствуСт. Вторая инструкция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ Β«DΒ». Π£Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ послС присваиваСт Π±ΡƒΠΊΠ²Ρƒ Β«CΒ» Π³Π». Π’ этом сСгмСнтС ΠΊΠΎΠ΄Π° послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ вставляСт Π±ΡƒΠΊΠ²Ρƒ Β«CΒ» ΠΏΠ΅Ρ€Π΅Π΄ Π±ΡƒΠΊΠ²ΠΎΠΉ Β«DΒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π§Ρ‚ΠΎ касаСтся массива, Ρ‚ΠΎ Π½Π΅Ρ‚ возмоТности Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнт. Из-Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ для массива Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Ρ‡Π»Π΅Π½ insert () Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вставки элСмСнта ΠΏΠ΅Ρ€Π΅Π΄ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.

Appending

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов сзади. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Ρ‡Π»Π΅Π½ push_back () ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для добавлСния элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ† Π²Π΅ΠΊΡ‚ΠΎΡ€Π° β€” см. Π’Ρ‹ΡˆΠ΅. Массив нСльзя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ. ЕдинствСнный способ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для массива β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив максимально прСдусмотрСнного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ВставляйтС элСмСнты с самого Π½Π°Ρ‡Π°Π»Π°. Π’ΠΎΠ³Π΄Π° Π² массивС останСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пространство (ячСйки). Π—Π°Ρ‚Π΅ΠΌ, Ссли Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты сзади, помСститС элСмСнты (значСния) Π² пустыС пространства ΠΏΠΎΠ·Π°Π΄ΠΈ (со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ элСмСнта

Для Π²Π΅ΠΊΡ‚ΠΎΡ€Π° элСмСнт ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ‚Π°ΠΌ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ стираниС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ удаляСт Π±ΡƒΠΊΠ²Ρƒ B:

for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] β€˜ β€˜ ;
>
cout endl ;
cout * q endl ;

Ни ΠΎΠ΄ΠΈΠ½ элСмСнт массива нСльзя ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Clear

ВсС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Π° clear () ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

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

Π’Π΅ΠΊΡ‚ΠΎΡ€ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

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

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

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±Ρ‰Π΅Π΅ описаниС [ | ]

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

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ: массивы с ΠΎΠ΄Π½ΠΈΠΌ индСксом Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, с двумя β€” Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, ΠΈ Ρ‚. Π΄. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив β€” нСстрого соотвСтствуСт Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅; Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ («строка», «столбСц»)β€” ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ массивы с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ двумя индСксами; Ρ€Π΅ΠΆΠ΅ β€” с трСмя; Π΅Ρ‰Ρ‘ большСС количСство индСксов β€” встрСчаСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ фиксированного массива Π½Π° языкС Паскаль

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π° JavaScript

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

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

ОбъявлСниС Ρ‚ΠΈΠΏΠ° «массив» Π² языкС Паскаль

БпСцифичСскиС Ρ‚ΠΈΠΏΡ‹ массивов [ | ]

ДинамичСскиС массивы [ | ]

ДинамичСскими Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ массивы, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ (Π½Π΅ динамичСскиС) массивы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Ρ‘ фиксированными ΠΈΠ»ΠΈ статичСскими.

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ конструкций для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСскими массивами Π½Π° Delphi.

Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы [ | ]

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

РСализация [ | ]

Π’ΠΈΠΏΠΎΠ²Ρ‹ΠΌ способом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСского Π³ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΎΠ³ΠΎ (хранящСго Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°) массива являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, адрСс элСмСнта с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ индСксов вычисляСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ врСмя доступа ΠΊΠΎ всСм элСмСнтам массива ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. (Π—Π΄Π΅ΡΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ отсутствиС тСорСтичСской зависимости Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΎΡ‚ полоТСния элСмСнта ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ особСнности ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ разброс Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа. НапримСр, CAS-Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠžΠ—Π£ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, располоТСнным Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ (страницС) ΠžΠ—Π£, ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ считанным Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ высокоуровнСвого программирования Ρ‚Π°ΠΊΠΈΠΌΠΈ тонкостями, Π·Π° Ρ€Π΅Π΄Ρ‡Π°ΠΉΡˆΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ, ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°ΡŽΡ‚.)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, Π² зависимости ΠΎΡ‚ языка программирования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ индСкс. Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Ρ‚Ρ€ΠΈ основных разновидности массивов: с отсчСтом ΠΎΡ‚ нуля (zero-based), с отсчСтом ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ (one-based) ΠΈ с отсчСтом ΠΎΡ‚ спСцифичСского значСния Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ программистом (n-based). ΠžΡ‚ΡΡ‡Π΅Ρ‚ индСкса элСмСнта массивов с нуля Π±ΠΎΠ»Π΅Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков программирования, хотя встрСчаСтся ΠΈ Π² языках высокого уровня, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π‘ΠΈ. Π’ рядС языков (Паскаль, Ада, ΠœΠΎΠ΄ΡƒΠ»Π°-2) Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ индСксов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл, символов, пСрСчислСний, Π΄Π°ΠΆΠ΅ логичСского Ρ‚ΠΈΠΏΠ° (Π² послСднСм случаС массив ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° элСмСнта, индСксируСмых значСниями Β«Π˜ΡΡ‚ΠΈΠ½Π°Β» ΠΈ Β«Π›ΠΎΠΆΡŒΒ»).

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

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

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

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

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ языки β€” ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ языки ΠΌΠ°Π»ΠΎ извСстны ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ программистов ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΡƒΠ·ΠΊΡƒΡŽ Π½ΠΈΡˆΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² финансах, статистикС ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π₯отя сам Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов) распространСн Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡˆΠΈΡ€Π΅, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ. Он Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² извСстных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… (NumPy), популярном языкС статистиков R, матСматичСских ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… (MATLAB), Π΄Π°ΠΆΠ΅ Π² соврСмСнных языках программирования (Julia). Однако Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ простым Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (A*v) – это всСго лишь Π²Π΅Ρ€ΡˆΠΈΠ½Π° айсбСрга возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ языки. ΠŸΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти языки Π½Π΅ Ρ‚Π°ΠΊ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, ΠΎΠ½ΠΈ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ программиста ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… катСгориях ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ способами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠ΅ΠΌΡƒ ΠΊ Java ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Haskell. Π˜Ρ… Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся Π²Ρ‹Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² – вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»Π°ΠΌ Π²Π½ΠΈΠ· ΠΊ простым значСниям ΠΈ Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² функциях, Π²Ρ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ слоТными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, давая указания языку, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ части этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с этим ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это массив ΠΊΠ°ΠΊΠΎΠΉ

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

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ мСсто Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языков Π² ΠΌΠΈΡ€Π΅ языков программирования. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ язык (APL) Π±Ρ‹Π» создан ΠšΠ΅Π½Π½Π΅Ρ‚ΠΎΠΌ Π˜Π²Π΅Ρ€ΡΠΎΠ½ΠΎΠΌ, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ матСматичСской записью. Π”ΠΎ сих ΠΏΠΎΡ€ эта «ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ» Π²ΠΈΠ΄Π½Π° Π½Π΅Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ взглядом ΠΈ опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ использования Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языков – финансы, статистика, матСматичСскиС вычислСния. Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ языки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ развития, Ρ‡Ρ‚ΠΎ создаСт Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Однако ΠΏΠΎ своСй сути это Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ языки, идСологичСски ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ Lisp. Как Lisp ΠΎΠ½ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ синтаксисом, ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ основной Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… – массив (ΠΎΠ½ ΠΆΠ΅ список). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² основном Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ «Ρ‡ΠΈΡΡ‚Ρ‹Ρ…» языков Ρ‚ΠΈΠΏΠ° ML, Π² Π½ΠΈΡ… Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСпятствий для использования элСмСнтов ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования Ρ‚ΠΈΠΏΠ° дСструктивного присваивания. Π‘Π΅Π· присваивания Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π² любом случаС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ само слово β€œΠ²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉβ€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ большиС массивы Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.

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

Π―Π·Ρ‹ΠΊ «Π’Π΅ΠΊΡ‚ΠΎΡ€»

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

НазовСм этот язык «Π’Π΅ΠΊΡ‚ΠΎΡ€». Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ простыС (Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅) Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² этом языкС:

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

Нам Π½Π΅ понадобится ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² функциях, поэтому всС присваивания Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ нСсколько Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Π­Ρ‚ΠΈΡ… свСдСний Π½Π°ΠΌ ΠΏΠΎΠΊΠ° достаточно, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π°.

3 ΠΊΠΈΡ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языков

ВсС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ языки основаны Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сильно Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΈΡ… ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ массы языков:

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠžΡΠΎΠ±Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠžΠΏΠΎΡ€Π° Π½Π° индСксированиС ΠΈ структурно-ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΈ индСксированиС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…. Под структурно-ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ функциями я понимаю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π½ΠΎ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π²ΠΈΠ΄. НапримСр, функция first Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Ρ‡Π΅Π³ΠΎ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ – Π°Ρ‚ΠΎΠΌΠ° (простого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…), массива, словаря. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ β€œ,” соСдиняСт Π΄Π²Π° Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ. НСкоторыС ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡŽ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π°, Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π½ΠΈΠΆΠ΅.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния

Π’ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языках вычислСния Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ производятся справа Π½Π°Π»Π΅Π²ΠΎ, Π° всС встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π’.Π΅. Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°

слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ

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

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

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

Π’ нашСм языкС я Π±ΡƒΠ΄Ρƒ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ эти ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ суффиксами, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊ названию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠ±Ρ‰ΠΈΠΉ ΠΈΡ… Π²ΠΈΠ΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ дСйствия + ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ + Π½Π°Π·Π²Π°Π½ΠΈΠ΅ + ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ монадности

Рассмотрим самыС Π²Π°ΠΆΠ½Ρ‹Π΅ суффиксы, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΈΡ… смысл станСт понятнСС. НапримСр, суффикс map:

Для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹Π·ΠΎΠ² fold эквивалСнтСн ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ f ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами массива:

Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² fold Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ суффикса:

left, right

Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ суффиксы left ΠΈ right. Π­Ρ‚ΠΎ разновидности map для Π΄Π²ΡƒΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚ΠΈ суффиксы Π½ΡƒΠΆΠ½Ρ‹ Π² ситуациях Ρ‚ΠΈΠΏΠ°:

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ индСксированиС ΠΈ присваиваниС

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π±Π°Π·ΠΎΠ²Ρ‹Π΅ суффиксы, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ясно ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ особСнности Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, индСксированиС.

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

Для Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ didx Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ свой собствСнный суффикс. НазовСм Π΅Π³ΠΎ set:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выглядит Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ, Π½ΠΎ ΡΡƒΡ‚ΡŒ Π΅Π³ΠΎ проста. ΠœΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ подмноТСство «a» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ индСкса i1..in, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ f ΡΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠΈΡΡŒ Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ индСкса, Ρ‚.Π΅. f вызываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ индСксируСм, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° части согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ map (Ρ‚.Π΅. ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΎΡ€ΠΌΠ½Ρ‹ Ρ„ΠΎΡ€ΠΌΠ΅ индСкса). set Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию «a», Π³Π΄Π΅ проиндСксированныС элСмСнты Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. set являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ присваивания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ значСния:

Часто ΠΏΡ€ΠΈ присваивании ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Π’Π°ΠΊΠΎΠΉ синтаксис позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅. set Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ссли ΠΌΡ‹ сдСлаСм ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅:

Π’.Π΅. Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎ Ссли слэш ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ происходит Π² самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (in place), Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся Π΅Π΅ копия. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ set ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π΅ ΠΎΠ΄ΠΈΠ½ дСсяток строк ΠΊΠΎΠ΄Π° Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ языкС.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

НСобходимо ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ: Π°) сколько Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π½ΠΎ Π±) сколько придСтся Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ с) ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Ρ†Π΅Π½ ΠΈ объСма. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° своСм любимом языкС. Π’Π°ΠΊ Π²Ρ‹ Ρ‡Π΅Ρ‚Ρ‡Π΅ почувствуСтС контраст с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ.

Нам понадобится функция where, которая вычисляСт индСксы Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов:

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° нашСм ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½ΠΎΠΌ языкС Π·Π°ΠΉΠΌΠ΅Ρ‚ мСньшС мСста, Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π° описаниС Π·Π°Π΄Π°Ρ‡ΠΈ:

Бамая слоТная Ρ‡Π°ΡΡ‚ΡŒ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, это вычислСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ v, поэтому я ΠΏΠΎΠΊΠ°ΠΆΡƒ, Ρ‡Ρ‚ΠΎ происходит для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π° ΠΏΠΎ шагам:

НаконСц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ volume ΠΈ price, Π½ΡƒΠΆΠ½ΠΎ просто Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π·Π°ΠΊΠ°Π· ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ значСния. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°. ΠΠ°ΡˆΠ΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ прСдлоТСния, ΠΈ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вычислСний ΠΎΠ½ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚.

Для простоты я взял order Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ price/volume. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ order Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, ΠΊΠ°ΠΊ ΠΆΠ΅ помСняСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ‚. Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Q:

Π”Ρ€ΡƒΠ³ΠΈΠ΅ суффиксы

map/fold/set ΠΈ ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ самыми Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ суффиксами, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ язык. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ суффиксы, Π°Π½Π°Π»ΠΎΠ³ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² while/for:

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ суффиксы производят ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ «\» (Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹).

ΠšΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ суффикс prior:

Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² функциях Ρ‚ΠΈΠΏΠ°:

Π”Π°Π»ΡŒΡˆΠ΅ я ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ Π±ΠΎΠ»Π΅Π΅ экзотичСскиС суффиксы. На самом Π΄Π΅Π»Π΅ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ достаточно ΠΌΠ½ΠΎΠ³ΠΎ.

Аналог этого суффикса Π΅ΡΡ‚ΡŒ Π² J. НуТно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² языкС Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΊ f. sqrt vs x^2; sin vs arcsin; zip vs unzip ΠΈ Ρ‚.ΠΏ.

ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ мСстами:

Π­Ρ‚ΠΎΡ‚ суффикс Ρ‚ΠΎΠΆΠ΅ ΠΈΠ· J, ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для устранСния Π»ΠΈΡˆΠ½ΠΈΡ… скобок.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ мСтасуффикс – parallel. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΏΠ°Ρ€Π΅ с map/right/left ΠΈ Ρ‚.ΠΏ., Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ вычислСния. Π’ Q вСрсии 4.0+ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ снабТСны этим суффиксом Π² нСявном Π²ΠΈΠ΄Π΅, Ρ‡Ρ‚ΠΎ позволяСт сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ til/take/drop/cut

Π­Ρ‚ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для любого Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ языка, ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для создания ΠΈ измСнСния Ρ„ΠΎΡ€ΠΌΡ‹ массивов.

Π Π°Π·Π±ΠΈΡ‚ΡŒ тСкст Π½Π° Π°Π±Π·Π°Ρ†Ρ‹:

Π’.Π΅. Π½Π°ΠΉΡ‚ΠΈ мСста, Π³Π΄Π΅ пустая строка мСняСтся Π½Π° Π½Π΅ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ тСкст Π½Π° части ΠΈ Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ кусок.

Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ· тСкста Π΄Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ DDDDXDDXDD, Π³Π΄Π΅ X – это ΠΎΠ΄Π½ΠΎ ΠΈΠ· β€œ-/.”, привСсти X ΠΊ стандартной Ρ„ΠΎΡ€ΠΌΠ΅ β€œ/”:

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ split/join

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ Π²ΠΎ всСх языках. Π’ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ½ΠΈ сильно ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ слиянию ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΡŽ массивов. НСкоторыС ΠΈΠ· Π½ΠΈΡ…:

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π±Π·Π°Ρ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ split (ΠΏΡƒΡΡ‚ΡŒ тСкст Π½Π°ΠΌ Π·Π°Π΄Π°Π½ ΠΎΠ΄Π½ΠΎΠΉ строкой):

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°

Π’ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ языкС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ отдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π΅ сортируСт массив, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСксы для Π΅Π³ΠΎ сортировки – iasc:

iasc Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ просто sort. НапримСр, с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ сортировку ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ:

ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, согласно ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€œiasc iasc x” Π²Π΅Ρ€Π½Π΅Ρ‚ Π½Π°ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта x Π΅Π³ΠΎ мСсто Π² отсортированном массивС. CоотвСтствСнно, Ссли ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ этот индСкс ΠΊ ΡƒΠΆΠ΅ отсортированному Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ массиву y, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅ΠΌ Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ x:

Или Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ – ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ любой массив y согласно массиву x. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ массива, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ этом порядок элСмСнтов (Ρ‚.Π΅. Π°Π½Π°Π»ΠΎΠ³ update … group by …):

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ Π΅Π³ΠΎ стоит ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ group Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ просто:

Ѐункция group ΠΏΠΎΡ‡Ρ‚ΠΈ эквивалСнтна group by Π² SQL, Π½ΠΎ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π° ΠΈ сама ΠΏΠΎ сСбС. НапримСр, ΠΏΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π΄Π°Ρ‡ (q) ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (u). ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π²Π½Ρ‹:

Π‘Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ числа (til + count), отсортируСм всС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ ΠΈ индСксами ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ этот порядок ΠΊ q.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ я Ρ€Π°Π·Π±Π΅Ρ€Ρƒ нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° настоящих Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… языках. Π’Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° ΠΈΡ… ΠΆΡƒΡ‚ΠΊΠΈΠΉ Π²ΠΈΠ΄, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ практичСски ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° нашСм ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½ΠΎΠΌ языкС.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° J

Часто приводится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сортировки Π½Π° J, выглядящий ΠΊΠ°ΠΊ бСссмыслСнный Π½Π°Π±ΠΎΡ€ Π·Π½Π°ΠΊΠΎΠ²:

На самом Π΄Π΅Π»Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ часто приводят для дСмонстрации возмоТностСй Π΄Ρ€ΡƒΠ³ΠΈΡ… языков (Haskell, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Если ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π½Π° наш язык, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Или Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎ-чСловСчСски:

НСльзя Π΄Π°ΠΆΠ΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΊΠ°ΠΊ-Ρ‚ΠΎ сильно ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ достоинства J, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° Haskell ΠΎΠ½ выглядит практичСски Ρ‚Π°ΠΊΠΆΠ΅. На K эта функция выглядит Ρ‚Π°ΠΊ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, тяга J ΠΊ Π·Π½Π°ΠΊΠ°ΠΌ ΠΈ функциям Π±Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ сильно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π˜Π³Ρ€Π° Π–ΠΈΠ·Π½ΡŒ Π½Π° APL

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… для APL приводится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для вычислСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ шага Π² ΠΈΠ³Ρ€Π΅ Тизнь:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊΠΈ APL Ρ…ΠΎΡ‚ΡŒ ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹, Π½ΠΎ выглядят Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ASCI ΠΌΠ΅ΡˆΠ°Π½ΠΈΠ½Ρ‹ Π² J. Π£Π²Ρ‹, Π½ΠΎ ΠΈΠ·ΡΡ‰Π½ΠΎΡΡ‚ΡŒ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ APL нСльзя ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартного Π½Π°Π±ΠΎΡ€Π° символов.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ нСсколько Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ внСшнСС ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ (Ρ‚ΠΎΡ‡ΠΊΠ°), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‚.Π΄. Для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² это просто:

Π’.Π΅. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ нашими ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ. Π˜Ρ‚Π°ΠΊ, Π½Π° нашСм языкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

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

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

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