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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β»

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

Π‘.О. Π‘ΠΎΡ‡ΠΊΠΎΠ²

Π”.М. Π‘ΡƒΠ±Π±ΠΎΡ‚ΠΈΠ½

Π―Π·Ρ‹ΠΊ программирования си для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°

Под ΠΎΠ±Ρ‰Π΅ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠ°Π½Π΄. Ρ‚Π΅Ρ…Π½. Π½Π°ΡƒΠΊ, Π΄ΠΎΡ†Π΅Π½Ρ‚Π° П.И.Π‘Π°Π΄Ρ‡ΠΈΠΊΠΎΠ²Π°

Π’Π’Π•Π”Π•ΠΠ˜Π•

Π‘Ρ€Π΅Π΄ΠΈ соврСмСнных языков программирования язык Π‘ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных. Π―Π·Ρ‹ΠΊ Π‘ΠΈ унивСрсалСн, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивно Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… систСмного программирования β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ трансляторов, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, экранных интСрфСйсов, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств. Π―Π·Ρ‹ΠΊ Π‘ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» сСбя ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ, Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ записи Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², логичСской ΡΡ‚Ρ€ΠΎΠΉΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° языкС Π‘ΠΈ, сравнимы ΠΏΠΎ скорости с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, написанными Π½Π° языкС ассСмблСра; ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ наглядны ΠΈ просты Π² сопровоТдСнии.

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

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

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности языка Π‘ΠΈ:

Π’ языкС Π‘ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня (Π² частности, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π±ΠΈΡ‚Π°ΠΌΠΈ). НСкоторыС ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ.

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

Π―Π·Ρ‹ΠΊ Π‘ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” это пСрСмСнная, прСдназначСнная для хранСния машинного адрСса Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ нСпосрСдствСнный доступ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с адрСсами памяти практичСски Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ Π½Π° языкС ассСмблСра. ИспользованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ высокоэффСктивныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ программиста особой остороТности.

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

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

Π―Π·Ρ‹ΠΊ Π‘ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² БША сотрудниками Ρ„ΠΈΡ€ΠΌΡ‹ Bell Laboratories Π½Π° Ρ€ΡƒΠ±Π΅ΠΆΠ΅ 70-Ρ… Π³ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ Π±Ρ‹Π» использован для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX. Вопросы ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ пСрСносимости ΠΈΠ³Ρ€Π°Π»ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ с самого Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΊ языка Π‘ΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX, поэтому ΠΈΡ… распространСниС Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ быстро.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ описаниС языка Π‘ΠΈ Π±Ρ‹Π»ΠΎ Π΄Π°Π½ΠΎ Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π‘. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ΠΎΠΌ ΠΈ Π”. Π ΠΈΡ‚Ρ‡ΠΈ (имССтся русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ β€” [1]). К соТалСнию, ΠΎΠ½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ строгим ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈ содСрТало ряд ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ систСм программирования Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Π»ΠΈ язык Π‘ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ фактичСским стандартом языка Π‘ΠΈ слуТила Π΅Π³ΠΎ рСализация Π² сСдьмой вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX, ΠΎΠ΄Π½Π°ΠΊΠΎ заявлСния ΠΎ совмСстимости Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ систСмы программирования с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ языка Π‘ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС UNIX, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ соотвСтствия. Π’ настоящСС врСмя число Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Π‘ΠΈ исчисляСтся дСсятками, ΠΈ всС ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, ΠΏΠΎ сущСству, Ρ€Π°Π·Π½Ρ‹Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹ языка. Битуация усугубляСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ особСнности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΏΠΎΠ»Π½ΠΎ ΠΈ нСстрого.

Для исправлСния этой ситуации Π² 1983 Π³. ΠΏΡ€ΠΈ АмСриканском ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π΅ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΎΠ² (ANSI) Π±Ρ‹Π» ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ стандартизации языка Π‘ΠΈ. Π’ октябрС 1986 Π³. Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ этим ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ для общСствСнного обсуТдСния. Π’ 1989 Π³. ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π» ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ Π² качСствС стандарта ANSI. ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² настоящСС врСмя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Π‘ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандарт ANSI Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ просматриваСтся тСндСнция ΠΊ созданию Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Π‘ΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… стандарту ANSI.

Π’ послСдниС Π³ΠΎΠ΄Ρ‹ язык Π‘ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π² Π‘Π‘Π‘Π  ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС. Π’Ρ‹ΡˆΠ»ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΊΠ½ΠΈΠ³, посвящСнных Π΅ΠΌΡƒ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… носят ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ [6, 8, 10, 11], Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ [4, 8, 13], Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ Π΄Π°ΡŽΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ, ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ языку [2, 3, 5, 9, 14] Π»ΠΈΠ±ΠΎ Π΄Π°ΡŽΡ‚ Π΅Π³ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ характСристику [7, 12].

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ΡˆΠ»ΠΎ большоС количСство ΠΊΠ½ΠΈΠ³, посвящСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС UNIX, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, даСтся прСдставлСниС ΠΎ языкС Π‘ΠΈ.

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

Настоящая ΠΊΠ½ΠΈΠ³Π° Π΄ΠΎΠ»ΠΆΠ½Π°, ΠΏΠΎ замыслу Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈ Π΄Π°Ρ‚ΡŒ соврСмСнноС, ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈ ΠΏΠΎ возмоТности строгоС описаниС языка Π‘ΠΈ. Книга ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΠΊΡ€ΡƒΠ³ программистов, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ являСтся ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠΌ ΠΏΠΎ языку, Π° носит Π² основном справочный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с соврСмСнными языками программирования.

Π’ Π‘Π‘Π‘Π  наибольшСС распространСниС Π½Π° ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ‚ΠΈΠΏΠ° IBM PC/XT/AT ΠΈ совмСстимых с Π½ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ систСма программирования Ρ„ΠΈΡ€ΠΌΡ‹ Microsoft вСрсий 4.0 ΠΈ 5.0 (Π΄Π°Π»Π΅Π΅ ΠΏΠΎ тСксту называСмая БП MSC) ΠΈ систСма программирования Π’ΡƒΡ€Π±ΠΎ Π‘ΠΈ Ρ„ΠΈΡ€ΠΌΡ‹ Borland International вСрсий 1.5 ΠΈ 2.0 (Π΄Π°Π»Π΅Π΅ ΠΏΠΎ тСксту называСмая БП ВО. ВСрсия 4.0 БП MSC являСтся Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ языка Π‘ΠΈ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ…, поэтому описаниС базируСтся Π½Π° Π½Π΅ΠΉ. Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ отличия для вСрсии 5.0 БП MSC Π»ΠΈΠ±ΠΎ для БП Π’Π‘, Π² тСкстС Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ отступлСния.

ОписаниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Π‘ΠΈ затрудняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ расхоТдСний Π² составС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСмах программирования (Π΄Π°ΠΆΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… вСрсии ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ систСмы программирования) Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС, Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ описаны стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вСрсии 4.0 БП MSC ΠΈ вСрсии 1.5 ΠΈ 2.0 БП Π’Π‘.