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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор ΠΡ€Π½ΠΎΠ»ΡŒΠ΄ Роббинс

ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ языком для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния GNU являСтся Π‘, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ доступный язык. Π’ ΠΌΠΈΡ€Π΅ Unix стандарт Π‘ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ‹Ρ‡Π΅Π½, Π½ΠΎ Ссли для вас Π½Π΅ прСдставляСт Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π‘, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. Π₯отя стандарты кодирования ΠΎΡ‚Π΄Π°ΡŽΡ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π‘ ΠΏΠ΅Ρ€Π΅Π΄ Π‘++, C++ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΠΆΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π΅Π½. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° GNU, написанного Π½Π° Π‘++, являСтся groff (GNU troff). Наш ΠΎΠΏΡ‹Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ с GCC, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Π‘++, установка groff Π½Π΅ прСдставляСт слоТности.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ являСтся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ°Π½Π΅Π²Ρ€Π°. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ GNU ясно Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ядром GNU ΠΈ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ GNU Π‘[20]. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядро Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструмСнты GNU Π½Π° Π½Π΅-GNU систСмах, ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Π°, Π½ΠΎ Π½Π΅ являСтся пСрвостСпСнной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ для достиТСния пСрСносимости ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами Unix ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Autoconf.

1.4.2. ПовСдСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π“Π»Π°Π²Π° 4 GNU Coding Standards прСдоставляСт ΠΎΠ±Ρ‰ΠΈΠ΅ совСты ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НиТС ΠΌΡ‹ вСрнСмся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ рассмотрСния. Π“Π»Π°Π²Π° фокусируСтся Π½Π° строСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, написании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (дСлая ΠΈΡ… Ρ€Π΅Π½Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ) ΠΈ стандартах для интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСсколько инструмСнтов, особСнно Emacs, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Ρ‚ΠΎ мСсто Π² исходном Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ GNU Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getopt_long(). Π­Ρ‚Π° функция прСдусматриваСт Ρ€Π°Π·Π±ΠΎΡ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΊΠ°ΠΊ для ΠΎΠΏΡ†ΠΈΠΉ Π² стилС Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Unix ('gawk -F:...'), Ρ‚Π°ΠΊ ΠΈ для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ Π² стилС GNU ('gawk --field-separator=:...'). ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ --help ΠΈ --version, Π° ΠΊΠΎΠ³Π΄Π° Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ имя, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ GNU. Для этой Ρ†Π΅Π»ΠΈ Π΅ΡΡ‚ΡŒ довольно ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… соврСмСнными GNU-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

Π’ качСствС простого, Π½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, --verbose ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом Π²ΠΎ всСх GNU-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с -v, -V, -d ΠΈ Ρ‚.Π΄. Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Unix. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π³Π»Π°Π²Ρ‹ 2, «АргумСнты, ΠΎΠΏΡ†ΠΈΠΈ ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅Β», с. 23, посвящСна ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ΅ Ρ€Π°Π·Π±ΠΎΡ€Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠΏΡ†ΠΈΠΉ.

1.4.3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘

НаиболСС ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ GNU Coding Standards являСтся Π³Π»Π°Π²Π° 5, которая описываСт написаниС ΠΊΠΎΠ΄Π° Π½Π° Π‘, освСщая Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², чистоС использованиС Π‘, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ объявлСниС ΠΈΠ»ΠΈ Π½Π΅ объявлСниС стандартных систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° являСтся Ρ€Π΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ; Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… людСй Ρ€Π°Π·Π½Ρ‹Π΅ стили, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚. Π›ΠΈΡ‡Π½ΠΎ Π½Π°ΠΌ Π½Π΅ нравится ΡΡ‚ΠΈΠ»ΡŒ FSF, ΠΈ Ссли Π²Ρ‹ взглянСтС Π½Π° gawk, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² стандартном стилС K&R (ΡΡ‚ΠΈΠ»ΡŒ располоТСния ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΎΠ±ΠΎΠΈΡ… изданиях ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‡ΠΈ). Но это СдинствСнноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² gawk ΠΎΡ‚ этой части стандартов кодирования.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, хотя Π½Π°ΠΌ ΠΈ Π½Π΅ нравится ΡΡ‚ΠΈΠ»ΡŒ FSF[21], ΠΌΡ‹ чувствуСм, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΠΆΠ΅ использованного стиля ΠΊΠΎΠ΄Π° являСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² стилС ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Π°, Ρ‡Π΅ΠΌ сам ΡΡ‚ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅. GNU Coding Standards Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ совСт. (Иногда Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π°, Π² этом случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, испорчСна использованиСм indent ΠΎΡ‚ GNU ΠΈΠ»ΠΈ cb ΠΎΡ‚ Unix.)

Π§Ρ‚ΠΎ ΠΌΡ‹ сочли Π²Π°ΠΆΠ½Ρ‹ΠΌ Π² Π³Π»Π°Π²Π΅ ΠΎ написании ΠΊΠΎΠ΄Π° Π½Π° Π‘, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ эти совСты Ρ…ΠΎΡ€ΠΎΡˆΠΈ для любого ΠΊΠΎΠ΄Π° Π½Π° Π‘, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ GNU. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ просто ΡƒΡ‡ΠΈΡ‚Π΅ Π‘ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π° Π‘ (ΠΈΠ»ΠΈ Π‘++), ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ эту Π³Π»Π°Π²Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбС ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.

1.4.4. Π’Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ GNU Π»ΡƒΡ‡ΡˆΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π΄Π΅Π», ΠΎΠ·Π°Π³Π»Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ «НаписаниС Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ», Π² Π³Π»Π°Π²Π΅ 4 «ПовСдСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ». Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» описываСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ GNU Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡ… Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² Π² Unix ΠœΡ‹ ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ части Π³Π»Π°Π²Ρ‹, с нСсколькими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ случаСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΊΡƒΠΏΠΈΠ»ΠΈΡΡŒ.

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ числа любой структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², строки, Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ символы, выдСляя всС структуры Π΄Π°Π½Π½Ρ‹Ρ… динамичСски. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ инструмСнтов Unix Β«Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ строки ΠΌΠΎΠ»Ρ‡Π° ΡΡ€Π΅Π·Π°ΡŽΡ‚ΡΡΒ». Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² инструмСнтС GNU.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, СдинствСнноС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния GNU β€” Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. ВсС инструмСнты GNU Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ способны ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π₯отя это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, услоТняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ программиста, ΠΎΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Тизнь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ gawk, рСгулярно Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ awk для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 650 000 Ρ„Π°ΠΉΠ»ΠΎΠ² (Π½Π΅Ρ‚, это Π½Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°) для сбора статистики, gawk заняла Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ 192 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠ² пространства Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π±Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 7 часов. Он Π½Π΅ смог Π±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ awk.[22]

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ символы NUL ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символы с ΠΊΠΎΠ΄Π°ΠΌΠΈ большС 0177. ЕдинствСнными Π·Π΄Ρ€Π°Π²Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для связывания с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эти символы.

Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстно, Ρ‡Ρ‚ΠΎ Emacs ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅!

По возмоТности, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹Π΅ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ UTF-8 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.[23] ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ систСмный Π²Ρ‹Π·ΠΎΠ² провСряйтС Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠΉ ошибки, Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ тСкст систСмной ошибки (ΠΎΡ‚ perror ΠΈΠ»ΠΈ эквивалСнтной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС ΠΎΠ± ошибкС, возникшСй ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ систСмном Π²Ρ‹Π·ΠΎΠ²Π΅, Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ имя Ρ„Π°ΠΉΠ»Π°, Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ, ΠΈ имя ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ Β«Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ foo.с» ΠΈΠ»ΠΈ «ошибка запуска» нСдостаточно.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π° создаСт ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ случай, ΠΊΠΎΠ³Π΄Π° Тизнь программиста Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π»Π΅Π³Ρ‡Π΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описанноС сообщСниС ΠΎΠ± ошибкС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ[24].

НаконСц, ΠΌΡ‹ Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π³Π»Π°Π²Ρƒ 1 GNU Coding Standards, которая обсуТдаСт, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ способом, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ написаны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Unix.

НапримСр, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Unix ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ использования памяти, Ссли Π²Ρ‹ Π²Π·Π°ΠΌΠ΅Π½ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ вСсь Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π² ядрС ΠΈ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΌ. вмСсто использования stdio. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ изящный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вмСсто Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Unix-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π”Π΅Π»Π°ΠΉΡ‚Π΅ это Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ вмСсто Π΄Π²ΡƒΡ… (ΠΌΡ‹ сдСлали это Π½Π° ассСмблСрС) Или, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², сдСлайтС ΡƒΠΏΠΎΡ€ Π½Π° простотС вмСсто скорости. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ простыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.

Или Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Unix часто содСрТат статичныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ строки фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ограничСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого динамичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… символы NUL ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Π·Π½Ρ‹Π΅ символы. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ язык программирования для Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° этом языкС.

Или Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² нСзависимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ простой сборщик мусора вмСсто Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ отслСТивания, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ GNU, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ obstacks.

Π’Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅, являСтся GNU diff. Одним ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ€Π°Π½Π½ΠΈΡ… Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠΉ нашСй систСмы Π±Ρ‹Π»ΠΎ AT&T 3B1, систСма с процСссором МБ68010, ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ двумя ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°ΠΌΠΈ памяти ΠΈ 80 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°ΠΌΠΈ Π½Π° дискС. ΠœΡ‹ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π»ΠΈ (ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ) ΠΊΡƒΡ‡Ρƒ исправлСний Π² руководствС для gawk, Ρ„Π°ΠΉΠ»Π΅ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ 28 000 строк (хотя Π² Ρ‚ΠΎ врСмя ΠΎΠ½ Π±Ρ‹Π» лишь Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 10 000 строк). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ использовали 'diff -с', Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° сдСланныС Π½Π°ΠΌΠΈ измСнСния. На этой ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ систСмС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° GNU diff ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΎΡˆΠ΅Π»ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ появлСния контСкста diff. Π Π°Π·Π½ΠΈΡ†Π° ΠΏΠΎΡ‡Ρ‚ΠΈ всСцСло благодаря Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ GNU diff.