ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ 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.