ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠ°, ΠΈΠ»ΠΈ ΡΡΠ΄Π° Π±ΡΠ» Π²Π½Π΅ΡΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄? ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠ±Π΅ΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈ Π·Π°ΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠ½ΠΎΠ²Π°. ΠΠ°ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Ρ. ΠΡΠΎΡ ΡΠ°Π³ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΊΠ½ΠΈΠ³Π΅ Debugging ΠΈ ΠΏΠ»Π°ΠΊΠ°Ρ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.debuggingrules.com.
15.8. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅, Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡ Π²ΡΠ΅ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΡ.
1. Debugging, David J. Agans. AMACOM, New York, New York. USA 2003. ISBN: 0-8144-7168-4.
ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ. Π£ Π½Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΉ ΡΡΠΈΠ»Ρ, ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π²ΡΡΠ°Π½ΠΈΠ΅, ΡΡΠ΅Π½ΠΈΠ΅ β ΠΎΠ΄Π½ΠΎ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅!
2. Programming Pearls, 2nd edition, by Jon Louis Bentley. Addison-Wesley, Reading, Massachusetts, USA, 2000, ISBN: 0-201-63788-0. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.[189]
Π Π³Π»Π°Π²Π΅ 5 ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Ρ.
3. Literate Programming, by Donald E. Knuth. Center for the Study of Language and Information (CSLI), Stanford University, USA, 1992. ISBN: 0-9370-7380-6.
ΠΡΠ° Π²ΠΎΡΡ ΠΈΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊΠ½ΠΈΠ³Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΡΡΠ°ΡΠ΅ΠΉ ΠΠΎΠ½Π°Π»ΡΠ΄Π° ΠΠ½ΡΡΠ° ΠΏΠΎ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (literate programming) β ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΈΠ·ΠΎΠ±ΡΠ΅Π» ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π’Π΅Π₯ ΠΈ Metafont. ΠΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡ, ΠΎΠ·Π°Π³Π»Π°Π²Π»Π΅Π½Π½Π°Ρ Β«ΠΡΠΈΠ±ΠΊΠΈ Π’Π΅Π₯Β», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π» ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π» Π’Π΅Π₯, Π²ΠΊΠ»ΡΡΠ°Ρ Π΅Π³ΠΎ ΠΆΡΡΠ½Π°Π» Π²ΡΠ΅Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
4. Writing Solid Code, by Steve Maguire. Microsoft Press, Redmond, Washington, USA, 1993. ISBN 1-55615-551-4.
5. Code Complete: A Practical Handbook of Software Construction, by Steve McConnell Microsoft Press, Redmond, Washington, USA, 1994. ISBN: 1-55615-484-4.
6. The Practice of Programming, by Brian W. Kernighan and Rob Pike. Addison-Wesley, Reading. Massachusetts, USA, 1999. ISBN: 0-201-61585-X.
15.9. Π Π΅Π·ΡΠΌΠ΅
β’ ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½ΠΎ ΠΎΡΠ»Π°Π΄ΠΊΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Ρ Π½Π°ΠΌΠΈ.
β’ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΏΠΎΠ΄ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ. ΠΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ GCC, Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ GNU/Linux Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
β’ ΠΡΠ»Π°Π΄ΡΠΈΠΊ GNU GDB ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ GNU/Linux ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠΈ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Unix. (Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ GDB.) ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ next, step ΠΈ cont ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΏΡΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΠ΅. GDB ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
β’ ΠΠΌΠ΅Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π΅Π΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΅Π΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
β’ ΠΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
β’ ΠΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
β’ ΠΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
β’ ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ ΠΈΠ· ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°.
β’ ΠΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
β’ ΠΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π³ΠΎΡΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
β’ ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ.
β’ ΠΠ»Ρ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΡΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° dbug ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π°ΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
β’ Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΠΈ ΠΈΠ· Π½ΠΈΡ (mtrace, Electric Fence ΠΈ dmalloc) ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ . ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Valgrind ΠΈΠ΄Π΅Ρ Π΅ΡΠ΅ Π΄Π°Π»ΡΡΠ΅, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
β’ splint ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΠ²Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ V7 lint. ΠΠ½Π° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² GNU/Linux ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ².
β’ ΠΠΎΠΌΠΈΠΌΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π΅Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ.
β’ ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΌΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ. ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ Debugging ΠΡΠ²ΠΈΠ΄Π° ΠΠΆ. ΠΠ³Π°Π½ΡΠ° ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1. ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCC, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊ -g, ΡΠ°ΠΊ ΠΈ -O. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π΅ ΠΏΠΎΠ΄ GDB, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π² main(). ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΈΠ·ΠΊΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ (ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ) ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΡΠΈΠΊΠ»Ρ while ΠΈΠ»ΠΈ for.
2. ΠΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ GDB ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ?
3. ΠΠ΅ΡΠ΅ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ parse_debug() ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 15.4.2.1 Β«ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β», ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΡΠΎΠΊ ΠΎΠΏΡΠΈΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»Π°Π³ΠΎΠ² ΠΈ Π΄Π»ΠΈΠ½ ΡΡΡΠΎΠΊ
4. (Π’ΡΡΠ΄Π½ΠΎΠ΅.) ΠΠ·ΡΡΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ gawk; Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΡΡΠΊΡΡΡΡ NODE Π² awk.h. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ NODE, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π² ΠΏΠΎΠ»Π΅ type.
5. ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π΅ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ dbug. ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π΅Π΅ ΡΠ½Π°ΡΠ°Π»Π° Π±Π΅Π· -DDBUG, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. (ΠΡΡΡ Π»ΠΈ Ρ Π²Π°Ρ Π΄Π»Ρ Π½Π΅Π΅ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ²? ΠΡΠΎΡΠ»Π° Π»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΅ ΡΠ΅ΡΡΡ?)
Π£Π±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ dbug Π½Π΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π΅Π΅ Ρ -DDBUG. ΠΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π»ΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΅ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΡΡ? ΠΠ°ΠΊΠΎΠ²Π° ΡΠ°Π·Π½ΠΈΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅? ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π²Π°Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ -#t, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ? ΠΠΎΡΠ΅ΠΌΡ Π΄Π° ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Ρ?
6. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ, Ρ Electric Fence ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΠ΅ΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ.
7. ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡ ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Valgrind Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅ΡΠ΅ΠΊ. ΠΠΏΠΈΡΠΈΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π²Π°ΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ.
8. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ mv. (ΠΡΠΎΡΡΠΈΡΠ΅ mv(1): ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΡ Π²Π°ΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π΅Π΅ ΠΎΠΏΡΠΈΠΈ.)
9. ΠΠΎΠΈΡΠΈΡΠ΅ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ Π²Ρ Π½Π°ΡΠ»ΠΈ?
ΠΠ»Π°Π²Π° 16
ΠΡΠΎΠ΅ΠΊΡ, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π²ΡΠ΅ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π»ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π² V7 ls.c. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Ρ ΡΡΠΎ Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΈ API, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π³Π»Π°Π²Ρ 8 Β«Π€Π°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²Β».
16.1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°. Π Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅ΡΡΡ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Unix, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΈΡΠ΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ².
ΠΠ°ΡΡΠΎΡΡΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΈ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠ²ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΠΈΡΠΎΠ²ΡΠ²Π°Π»ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅, Π° ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡΡ Unix ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ API ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΈΡΡΠΎΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ.Π΄. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Π·ΠΎΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Bash, ksh93 ΠΈΠ»ΠΈ zsh, ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π³ΠΎΠ² ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π»ΠΈΠ±ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ (Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ) ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΡΠ°Π΅ΡΠ΅ΡΡ Π² ΡΡΠ΅Π±Π½ΠΎΠΌ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ.