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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 115

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

Дистрибутивы Linux Debian ΠΈ Π½Π° основС Debian (Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° RPM ΠΈ ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ dpkg. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° dpkg дистрибутива Debian распаковываСт ΠΈ устанавливаСт Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ deb. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» ΠΏΠ°ΠΊΠ΅Ρ‚Π° с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ deb, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ dpkg с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Alien. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Web-сайтС http://kitenet.net/programs/alien/.

Π‘Ρ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠŸΠΎΡ‡Ρ‚ΠΈ всС срСдства, рассматриваСмыС Π΄ΠΎ сих ΠΏΠΎΡ€ Π² этой Π³Π»Π°Π²Π΅, ΠΏΠΎ сущСству ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой срСдства Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΡ… Π² ОБ Windows, нСсомнСнно Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE, Integrated Development Environment). IDE β€” это графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ собраны вмСстС всС ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ срСдства, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для создания, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ выполнСния прилоТСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ содСрТит Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ срСдство для выполнСния прилоТСния ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ срСды Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Π±Π°Π·Π΅ шаблонов, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², интСграция с систСмой управлСния исходным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ автоматичСскоС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ рассмотрим ΠΎΠ΄Π½Ρƒ Ρ‚Π°ΠΊΡƒΡŽ IDE, KDevelop, ΠΈ упомянСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ IDE, доступныС для ОБ Linux сСгодня. Π­Ρ‚ΠΈ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с коммСрчСскими прСдлоТСниями.

KDevelop

KDevelop β€” это IDE для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языках Π‘ ΠΈ Π‘++. Она обСспСчиваСт ΠΎΡΠΎΠ±ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π² срСдС K Desktop Environment (KDE), ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… основных соврСмСнных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… графичСских интСрфСйсов Π² систСмах Linux. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ простыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС Π‘.

KDevelop β€” бСсплатноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, выпускаСмоС Π² соотвСтствии с трСбованиями ΠžΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU (General Public License, GPL), ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах Linux. Π‘Π°ΠΌΡƒΡŽ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с Web-сайта http://www.kdevelop.org. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды KDevelop, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ стандартам, принятым для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² GNU. НапримСр, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ autoconf для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ make-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ приспособлСны ΠΊ срСдС, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ KDevelop Ρ‚Π°ΠΊΠΆΠ΅ содСрТат ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, тСкст Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GPL ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ установкС. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ², Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° KDevelop, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΡƒΠ³Π°Ρ‚ΡŒ, Π½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΊΠ΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, ΠΊΡ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GPL.

Рис. 9.2 


Π’ срСдС KDevelop сущСствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° систСм CVS ΠΈ Subversion для управлСния исходным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. На рис. 9.2 ΠΈ 9.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ стандартноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π‘ Π² срСдС KDevelop (Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΌΠΈΡ€), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ рСдактируСтся ΠΈ выполняСтся.

Рис. 9.3 

Π”Ρ€ΡƒΠ³ΠΈΠ΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Для ОБ Linux имССтся Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈΠ΄ΠΈ разрабатываСтся мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ IDE, ΠΊΠ°ΠΊ бСсплатных, Ρ‚Π°ΠΊ ΠΈ коммСрчСских. НСсколько самых интСрСсных ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² Ρ‚Π°Π±Π». 9.6.


Π’Π°Π±Π»ΠΈΡ†Π° 9.6

Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π’ΠΈΠΏ URL ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Eclipse ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π±Π°Π·Π΅ языка Java ΠΈ IDE http://www.eclipse.org Anjuta IDE для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ графичСского интСрфСйса GNOME http://anjuta.sourceforge.net/ QtEZ IDE для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ графичСского интСрфСйса KDE http://projects.uid0.sk/qtez/ SlickEdit ΠšΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ… языков http://www.slickedit.com/

РСзюмС

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ лишь нСсколько срСдств ОБ Linux, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ распространСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ управляСмыми. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, самоС Π²Π°ΠΆΠ½ΠΎΠ΅ β€” Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ make ΠΈ make-Ρ„Π°ΠΉΠ»Ρ‹ для управлСния мноТСствСнными исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π”Π°Π»Π΅Π΅ Π²Ρ‹ познакомились с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ исходным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСм RCS ΠΈ CVS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ рассмотрСли распространСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ patch, совмСстного примСнСния ΠΊΠΎΠΌΠ°Π½Π΄ tar ΠΈ gzip ΠΈ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ бросили взгляд Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· срСдств, IDE KDevelop, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰Π΅Π΅ Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. 

Π“Π»Π°Π²Π° 10

ΠžΡ‚Π»Π°Π΄ΠΊΠ°

По ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ Software Engineering Institute (Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ) ΠΈ IEEE (Institute of Electrical and Electronics Engineers, Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΏΠΎ элСктротСхникС ΠΈ элСктроникС) Π² любом Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всСгда Π΅ΡΡ‚ΡŒ Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π΄Π²Π° Π½Π° 100 строк ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ ошибки приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ трСбуСтся, часто заставляя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ вСсти сСбя ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ошибок, ΠΈΡ… идСнтификация ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ программиста Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

Π‘ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

β–‘ Ρ‚ΠΈΠΏΡ‹ ошибок;

β–‘ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ;

β–‘ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gdb ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… срСдств;

β–‘ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° соблюдСния условий (макрос assert);

β–‘ устранСниС ошибок использования памяти.

Π’ΠΈΠΏΡ‹ ошибок

Ошибка, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ выявлСния ΠΈ устранСния.

β–‘ ΠžΡˆΠΈΠ±ΠΊΠΈ описания ΠΈΠ»ΠΈ спСцификации. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΎΠ½Π°, нСсомнСнно, Π½Π΅ смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ трСбуСтся. Π”Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ программист Π² ΠΌΠΈΡ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΉ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ (ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ прСдставляСтС, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ ΠΈ устранитС мноТСство ошибок спСцификации (Ссли Π½Π΅ всС), обсуТдая трСбования ΠΈ получая ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρƒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² дальнСйшСм.

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊΠΈ программирования с компиляторами, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π‘, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ синтаксичСскиС ошибки Π² процСссС компиляции, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ язык ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Linux, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ синтаксичСскиС ошибки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки, Π½Π΅Π»Π΅Π³ΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π² Ρ…ΠΎΠ΄Π΅ тСстирования.

β–‘ ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅, этот процСсс Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΌ. Для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ значСния Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΈ вычислитС шаг Π·Π° шагом Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния. Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ всСгда ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π”Π°ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΠΈΡˆΡƒΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, компиляторы ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π΄Π΅Π»Π°ΡŽΡ‚ ошибки! Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π΅ ΡΠΏΠ΅ΡˆΠΈΡ‚Π΅ Π²ΠΈΠ½ΠΈΡ‚ΡŒ Π²ΠΎ всСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ срСдства; Π³ΠΎΡ€Π°Π·Π΄ΠΎ вСроятнСС, Ρ‡Ρ‚ΠΎ ошибка Π·Π°ΠΊΡ€Π°Π»Π°ΡΡŒ Π² Π²Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Π½Π΅ Π² компилятор.