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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 145

Автор Π Π΅ΠΉΠΌΠΎΠ½Π΄ Π­Ρ€ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½

Π― описал силу подчинСния спСцификациям ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚ Π½ΠΈΡ… зависит рСализация, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» ΠΊ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса, Π»ΠΈΠ±ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ спроСктировано, Π»ΠΈΠ±ΠΎ содСрТит ΠΎΡˆΠΈΠ±ΠΊΡƒ. Он нашСл эту идСю ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. РаспознаваниС Ρ‚Π°ΠΊΠΈΡ… ошибок являСтся просто вопросом ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ спСцификации. ЕстСствСнно, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° для Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСсколько ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ это.

ΠšΠΈΡ‚ ΠŸΠ°ΠΊΠΊΠ°Ρ€Π΄.

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… стандартов ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ для ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π½Π΅ малСнькая компания восточнСС Π‘Π΅Π»Π²ΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, сохраняя ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ офисного Π½Π°Π±ΠΎΡ€Π° с Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями, GUI-прилоТСния, написанныС Π² 1988 Π³ΠΎΠ΄Ρƒ, Π΄ΠΎ сих ΠΏΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΡ… рСализациях систСмы X. Π’ ΠΌΠΈΡ€Π΅ Unix ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ»Π΅Ρ‚ΠΈΠ΅ являСтся Π½ΠΎΡ€ΠΌΠΎΠΉ, Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ этого являСтся позиция "стандарт ΠΊΠ°ΠΊ Π”ΠΠš".

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

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

17.5. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ

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

Π§Ρ‚ΠΎ касаСтся Unix, Π΄Π²Π° дСсятка Π»Π΅Ρ‚ изучСния вопросов опрСдСлСния пСрСносимых API-интСрфСйсов ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. БрСдства, описанныС Π² Π•Π΄ΠΈΠ½ΠΎΠΉ спСцификации Unix, вСроятно, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ всСх соврСмСнных Unix-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ вряд Π»ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

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

17.5.1. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²Ρ‹Π±ΠΎΡ€ языка

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ вопросом Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, являСтся Π²Ρ‹Π±ΠΎΡ€ языка Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ВсС основныС языки, рассмотрСнныС Π² Π³Π»Π°Π²Π΅ 14, ΡΠ²Π»ΡΡŽΡ‚ΡΡ высоко пСрСносимыми Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ совмСстимыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ доступны Π½Π° всСх соврСмСнных Unix-систСмах, Π° для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΈΠ· Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ доступны Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Windows ΠΈ MacOS. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π΅ Π² основных языках, Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ стСпСни ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ (особСнно Π² IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ процСссами, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ инфраструктуру для GUI-интСрфСйсов).

17.5.1.1. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π‘

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ язык Π‘ Π² Π²Ρ‹ΡΡˆΠ΅ΠΉ стСпСни пСрСносим. Π•Π³ΠΎ стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² Unix являСтся GNU Π‘-компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ повсСмСстно распространСн Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Unix-систСмах с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΈ соврСмСнных коммСрчСских Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. GNU Π‘ Π±Ρ‹Π» пСрСнСсСн Π½Π° Windows ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ MacOS, Π½ΠΎ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· этих срСд Π½Π΅ стал ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнным, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ испытываСт нСдостаток Π² пСрСносимых привязках ΠΊ собствСнным GUI-интСрфСйсам Π΄Π°Π½Π½Ρ‹Ρ… систСм.

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, матСматичСскиС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ пСрСносимы Π²ΠΎ всСх рСализациях Π‘. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, сигналы ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами ΡΠ²Π»ΡΡŽΡ‚ΡΡ пСрСносимыми ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Unix, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соврСмСнныС API-интСрфСйсы, описанныС Π² Π•Π΄ΠΈΠ½ΠΎΠΉ спСцификации Unix; Π±ΠΎΠ»Π΅Π΅ старый Π‘-ΠΊΠΎΠ΄ часто содСрТит нагромоТдСния условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² прСпроцСссора, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° достиТСниС пСрСносимости, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ интСрфСйсы, появившиСся Π΄ΠΎ стандарта POSIX, ΠΈΠ· старых коммСрчСских Unix-систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° 2003 Π³ΠΎΠ΄ устарСли ΠΈΠ»ΠΈ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ этому.

Π‘ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π‘ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π² области IPC, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов ΠΈ GUI-интСрфСйсов. Вопросы пСрСносимости IPC ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Π² Π³Π»Π°Π²Π΅ 7. Π Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ GUI-инструмСнтарии. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство GUI-инструмСнтариСв с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ пСрСносятся ΠΌΠ΅ΠΆΠ΄Ρƒ соврСмСнными Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Unix, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Windows ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ MacOS β€” Tk, wxWindows, GTK ΠΈ Qt β€” Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстных Π²ΠΈΠ΄Π° инструмСнтария с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΉ Π½Π°ΠΉΡ‚ΠΈ Π² Web. Однако Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ распространяСтся со всСми ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, ΠΈ (ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΌ, Ρ‡Π΅ΠΌ тСхничСским) Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ прСдоставляСт Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… СстСствСнный Π²ΠΈΠ΄ ΠΈ восприятиС GUI-интСрфСйса. Π’ Π³Π»Π°Π²Π΅ 15 Π΄Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

По Ρ‚Π΅ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пСрСносимого Π‘-ΠΊΠΎΠ΄Π° написаны Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΎΠΌΠ°. Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΈΡ… число, ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ "Recommended Π‘ Style and Coding Standards" [11], Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π»Π°Π²Ρƒ ΠΎ пСрСносимости ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ "The Practice of Programming" [40].

17.5.1.2.Β ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π‘++

Для Π‘++ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости, Ρ‡Ρ‚ΠΎ ΠΈ для Π‘, Π° Ρ‚Π°ΠΊΠΆΠ΅ ряд собствСнных. Одной ΠΈΠ· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ GNU компилятор с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Π‘++ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отстаСт ΠΎΡ‚ коммСрчСских Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ; поэтому ΠΊ сСрСдинС 2003 Π³ΠΎΠ΄Π° Π½Π΅ сущСствовало ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ внСдряСмого эквивалСнта GNU Π‘, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ стандарт Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· компиляторов Π‘++ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ISO-стандарт Π‘++99, хотя GNU Π‘++ подошСл ΠΊ этому ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎ.

17.5.1.3.Β ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ shell

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ shell-сцСнариСв, ΠΊ соТалСнию, являСтся Π½ΠΈΠ·ΠΊΠΎΠΉ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² самой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅; bash(1) (Bourne Again shell с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ) распространСна достаточно ΡˆΠΈΡ€ΠΎΠΊΠΎ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°Π»ΠΎΡ€Π°Π·Π²ΠΈΡ‚Ρ‹Π΅ shell-сцСнарии ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² любой срСдС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ shell-сцСнариСв интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π½Π΅Π΅ пСрСносимыми, ΠΈ ΠΈΡ… присутствиС Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ гарантируСтся.

Π”Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ гСроичСскими усилиями, ΠΊΠ°ΠΊ Π² инструмСнтах autoconf (1). Однако это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ достаточно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅ΠΉΡˆΠΈΡ… случаСв программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² shell, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ языкам сцСнариСв Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поколСния, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Perl, Python ΠΈ Tel.