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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’ΠΎΠΌ 15. ΠžΡ‚ Π°Π±Π°ΠΊΠ° ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΈ. Алгоритмы ΠΈ вычислСния». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 24

Автор Π‘ΠΈΠ·Π΅Π½Ρ† Π’ΠΎΡ€Ρ€Π°

gcd (А, 0, А).

gcd (А, Π’, D)(А > Π’), (Π’ > 0), R is A mod Π’, gcd(B, R, D).

gcd (А, Π’, D)(А < Π’), (А > 0), R is Π’ mod A, gcd(A, R, D).

Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° языкС Java Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π’ качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° числа Π ΠΈ Π’, Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… наибольший ΠΎΠ±Ρ‰ΠΈΠΉ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° являСтся рСкурсивной, вторая β€” ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ.

public static int gcd (int A, int B) {

if (B == 0) {return A;}

else if (A > B) {return gcd(B, A % B);}

else if (A < B) {return gcd(A, Π’ % A);}

return 1;

}

public static int gcdlterative (int A, int B) {

int r = 0;

while (B > 0) {

r = A % B;

A = B;

Π’ = r;

}

return A;

}

* * *

Однако эти Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π΅ элСмСнты ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ процСсса, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ частныС случаи. НаиболСС извСстным срСдством автоматичСского выполнСния Π·Π°Π΄Π°Ρ‡ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΊΠ°Ρ†ΠΊΠΈΡ… станков Π–Π°ΠΊΠΊΠ°Ρ€Π°. Π’ станкС Π–Π°ΠΊΠΊΠ°Ρ€Π° ΡƒΠ·ΠΎΡ€ Ρ‚ΠΊΠ°Π½ΠΈ опрСдСлялся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ содСрТали ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ исполнялись станком. Π§Π°Ρ€Π»ΡŒΠ· БэббидТ использовал ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ для программирования своСй Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Π‘ соврСмСнной Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния эти ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ написаны Π½Π° машинном языкС, поэтому Ада ЛавлСйс считаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² истории программистом. Однако понятиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, хранящСйся Π² памяти Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, появилось Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

НСсмотря Π½Π° всС усилия, прСдпринятыС Π² 1930-Π΅ ΠΈ 1940-Π΅ Π³ΠΎΠ΄Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ написанныС Π² этот ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ тСорСтичСскиС Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² особСнности Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ посвящСны лямбда-ΠΈΡΡ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ ΠΈ машинС Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°, Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ лишь с появлСниСм ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ²: «Колосса», Mark I, ENIAC, EDSAC ΠΈ UNIVAC. Π―Π·Ρ‹ΠΊΠΈ программирования, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, хранящихся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя ΠΈ ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ взаимодСйствия с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ обСспСчСниСм Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ β€” ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² писались Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… языков программирования, Π΄ΠΎΠΏΡƒΡΠΊΠ°Π²ΡˆΠΈΡ… прСдставлСниС символов, Π±Ρ‹Π»ΠΈ Short Order Code (1949) Π”ΠΆΠΎΠ½Π° Мокли ΠΈ Sort-Merge Generator Π‘Π΅Ρ‚Ρ‚ΠΈ Π₯ΠΎΠ»Π±Π΅Ρ€Ρ‚ΠΎΠ½. Short Order Code исполнялся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ BINAC ΠΈ Π±Ρ‹Π» ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком.

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

Sort-Merge Generator, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±Ρ‹Π» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ для UNIVAC, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ осущСствляло слияниС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ с Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ опСрациями.




Π‘Π΅Ρ‚Ρ‚ΠΈ Π₯ΠΎΠ»Π±Π΅Ρ€Ρ‚ΠΎΠ½ (Π½Π° этой Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΠ½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π½Π° ENIAC), создавшая ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… языков программирования.


Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ систСмы, автоматичСского программирования (Π°Π½Π³Π», automatic programming systems) всСго лишь прСдоставляли понятныС Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΊΠΎΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ инструкции, записанныС Π² символьном Π²ΠΈΠ΄Π΅ Π»ΠΈΠ±ΠΎ позволяли ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ участок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. НСкоторыС систСмы допускали ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ индСксирования (indexing). Как Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ компилятора А-2 ΠΈ алгСбраичСской систСмы Π›Π΅ΠΉΠ½ΠΈΠ½Π³Π° ΠΈ Π¦ΠΈΡ€Π»Π΅Ρ€Π°, Π΄ΠΎ 1954 Π³ΠΎΠ΄Π° Π΄Π°ΠΆΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ систСмы прСдставляли собой всСго лишь синтСтичСскиС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΎΡ‚ машинного ΠΊΠΎΠ΄Π°.

Π­Ρ‚Π° модСль ΠΎΠ±Π»Π°Π΄Π°Π»Π° нСдостатками Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с тСхничСской, Π½ΠΎ ΠΈ с экономичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. ΠžΠΏΠ»Π°Ρ‚Π° Ρ‚Ρ€ΡƒΠ΄Π° программистов Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»Π° ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ самого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΈ этот Ρ€Π°Π·Ρ€Ρ‹Π² Π½Π΅ΡƒΠΊΠ»ΠΎΠ½Π½ΠΎ возрастал ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ соотвСтствСнно ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² сниТалась. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ (debugging) Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‚ 25 Π΄ΠΎ 50 % машинного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. БистСмы автоматичСского программирования сниТали быстродСйствиС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π² 5β€”10 Ρ€Π°Π·. ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†Ρ‹ этих систСм Π² Ρ…ΡƒΠ΄ΡˆΠΈΡ… традициях Ρ€Ρ‹Π½ΠΊΠ° стали Π·Π°Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ использованиС этих систСм ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Π½Π΅Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹ΠΌ, ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΌ Π±Ρ‹Π»ΠΎ скСптичСским.

Π’ сСрСдинС 1954 Π³ΠΎΠ΄Π° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ IBM ΠΏΠΎΠ΄ руководством Π”ΠΆΠΎΠ½Π° Бэкуса Π±Ρ‹Π»ΠΈ Π½Π°Ρ‡Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ языком Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ (FORTRAN β€” FORmula TRANslation). ЦСлью Ρ€Π°Π±ΠΎΡ‚ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСх Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠŸΡ€ΠΈ создании компилятора основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΡΠ»ΠΎΡΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ эффСктивного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ эта Π·Π°Π΄Π°Ρ‡Π° Π±Ρ‹Π»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½Π°. ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ прСобразования, выполняСмых для получСния эффСктивных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡƒΠ΄ΠΈΠ²ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ самих создатСлСй языка FORTRAN.



ΠŸΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Π° с Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ для языка программирования Π€ΠΎΡ€Ρ‚Ρ€Π°Π½.


Π‘ появлСниСм языка Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ матСматичСскиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π° Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ языкС. Π­Ρ‚ΠΎΡ‚ язык обСспСчивал Π½ΠΎΠ²Ρ‹ΠΉ, Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции, поэтому ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ Π² памяти ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π½Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚, Π° ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ ΠΈΠ»ΠΈ вСщСствСнныС числа. Π’ языкС появились ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ конструкции ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков: условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (IF <условиС> <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_1_Ссли_условиС__истинно> <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_2_Ссли_условиС_Π»ΠΎΠΆΠ½ΠΎ>) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° (DO <инструкция> пСрСмСнная = Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, шаг).

Π—Π° Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ΠΎΠΌ послСдовали Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки: Алгол-60 (ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΅Π³ΠΎ создатСлСй Π±Ρ‹Π» голландский ΡƒΡ‡Π΅Π½Ρ‹ΠΉ ЭдсгСр ДСйкстра), ΠšΠΎΠ±ΠΎΠ» ΠΈ LISP (ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков программирования). Π­Ρ‚ΠΈ языки ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этих языков, язык PL/I Π±Ρ‹Π» создан ΠΊΠ°ΠΊ язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ содСрТал всС нововвСдСния, прСдставлСнныС Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… языках, Ρ‡Ρ‚ΠΎ сдСлало Π΅Π³ΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ слоТным.



ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Electrologica XI, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с 1958 ΠΏΠΎ 1965 Π³ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ использовался язык ΠΠ»Π³ΠΎΠ»-60.


Авторы языков программирования ставили ΠΏΠ΅Ρ€Π΅Π΄ собой ΠΌΠ΅Π½Π΅Π΅ Π°ΠΌΠ±ΠΈΡ†ΠΈΠΎΠ·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ созданныС ΠΈΠΌΠΈ языки оказались Π±ΠΎΠ»Π΅Π΅ эффСктивными. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… Π²Ρ‹Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Simula 67 ΠΈ Pascal. ВмСсто ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ мноТСства абстракций эти языки ΠΎΠ±Π»Π°Π΄Π°Π»ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ срСдствами опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… абстракций. Pascal ΠΈ Алгол-68 позволяли ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… простых Ρ‚ΠΈΠΏΠΎΠ² ΠΈ слуТСбных слов (array, record ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…). Π­Ρ‚ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ абстракции, созданныС Π½Π° основС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… прСдставлСний, ΠΈ ΠΈΠΌ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ»ΠΎΡΡŒ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π­Ρ‚Π° модСль Π±Ρ‹Π»Π° Π³ΠΈΠ±ΠΊΠΎΠΉ, Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π»Π° сущСствСнным нСдостатком. Доступ ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π±Ρ‹Π» Π·Π°ΠΊΡ€Ρ‹Ρ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ нСльзя Π±Ρ‹Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ), ΠΎΠ΄Π½Π°ΠΊΠΎ доступ ΠΊ структурС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, ΠΈ ΠΈΡ… значСния ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² языкС Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя уровнями абстракции: ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программист ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ослоТняло Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ исправлСниС ошибок. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ достигали ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², эта Π·Π°Π΄Π°Ρ‡Π° ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΉ.

РСшСниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ стало использованиС абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ языков, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ (Ada, Modula-2 ΠΈ CLU). Π’ Π½ΠΈΡ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими уровнями абстракции ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ Ρ‚Π°ΠΊ называСмая инкапсуляция (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²). На ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программист использовал Ρ‚ΠΈΠΏ, доступ ΠΊ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС Π±Ρ‹Π» Π·Π°ΠΊΡ€Ρ‹Ρ‚. На ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ опрСдСлялся интСрфСйс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π΅Π³ΠΎ внутрСнняя структура ΠΈ доступныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ программисту Π±Ρ‹Π»ΠΈ извСстны ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, доступныС для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π½ΠΎ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС!), ΠΎΠ½ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ абстракции. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ измСнСнию интСрфСйса, Π½Π΅ влияло Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π³Π΄Π΅ использовался этот интСрфСйс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½ΠΈΡ… Π±Ρ‹Π» доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам интСрфСйс, Π° Π½Π΅ Π΅Π³ΠΎ внутрСнняя рСализация.

Благодаря этим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ абстракции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° этих языках, стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² языкС Ада ΠΈ Modula-2, использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’ языкС CLU программист Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ прилоТСния Π² классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ кластСрами. Аналогичный ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ использовался Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вводилось понятиС наслСдования, позволявшСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° основС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².