ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π°ΡΡΠΈΠ±ΡΡΡ (ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ, PID ΠΈ Ρ.Π΄.) ΠΎΡΡΠ°ΡΡΡΡ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Β«Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°Β» ΠΎΡ Β«Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ°Β» ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Unix. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΡΠΈ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΈ ΠΈΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
1.2.1. ΠΠ°Π½Π°Π»Ρ: ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
ΠΠ΅Π· ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ, Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ('|') ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ°Π½Π°Π» Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°ΠΉΠ»Ρ: ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠ΅ΡΡΡ (ΠΎΠ±ΡΡΠ½ΠΎ) Π½Π΅ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΈΡ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠΌ, Π° Π½Π΅ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ.
ΠΠ°ΠΊ ΡΠ΄ΡΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ Β«ΠΌΠ°Π³ΠΈΡΒ» Π΄Π»Ρ ΡΡΡΡΠΎΠΉΡΡΠ², Π·Π°ΡΡΠ°Π²Π»ΡΡ ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°ΠΉΠ»Π°ΠΌ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ½ΠΎ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°Π΅Ρ ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ ΠΌΠ΅ΡΡ ΠΏΠΎ Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ°Π½Π°Π» ΠΏΡΠΈ Π΅Π³ΠΎ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΡΠ»ΡΠΆΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ; Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΏΡΡΡ-ΡΠ°ΠΊΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ°Π±ΠΎΡΡ: Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°Π΅Π² Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
1.3. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π‘ ΠΏΡΠΎΡΠΈΠ² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π‘
Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π‘ Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΡΠ°ΠΉΠ°Π½Π° ΠΠ΅ΡΠ½ΠΈΠ³Π°Π½Π° ΠΈ ΠΠ΅Π½Π½ΠΈΡΠ° Π ΠΈΡΠΈ Β«Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘Β» (Brian Kernighan & Dennis Ritchie, The Π‘ Programming Language). ΠΡΠ° ΠΊΠ½ΠΈΠ³Π° ΠΎΠΏΠΈΡΠ°Π»Π° Π‘, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π΄Π»Ρ Unix ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ Bell Labs. ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Β«ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π‘Β», Ρ ΠΎΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Β«Π‘ ΠΠ΅ΡΠ½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡΠΈΒ» (Β«K&R Π‘Β»), ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ Π΄Π²ΡΡ Π°Π²ΡΠΎΡΠΎΠ² ΠΊΠ½ΠΈΠ³ΠΈ. (ΠΠ΅Π½Π½ΠΈΡ Π ΠΈΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π‘.)
Π‘ΡΠ°Π½Π΄Π°ΡΡ ISO Π‘ 1990 Π³.[17] ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ (ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ printf() ΠΈ fopen()). ΠΠΎΠΌΠΈΡΠ΅Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π‘ ΠΏΡΠΎΠ΄Π΅Π»Π°Π» Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Π» Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Ρ ΠΎΠ΄Π½ΠΈΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ (ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ). ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΎΡ Π‘++.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘, C++ ΠΈ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎΡΠΎΡΠΈΠΏ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠΈΠΏ Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π‘ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ² Π² ΡΠΎΡΠΊΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
extern int myfunc(struct my_struct *a,
struct my_struct *b, double c, int d);
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
int myfunc(struct my_struct *a,
struct my_struct *b, double c, int d) {
...
}
...
struct my_struct s, t;
int j;
...
/* ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, Π³Π΄Π΅-ΡΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅: */
j = my_func(&s, &t, 3.1415, 42);
ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ²:
j = my_func(-1, -2, 0);
/* ΠΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² */
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΊΠ°ΠΊ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Π‘ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
extern int myfunc();
/* ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ int, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Ρ */
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π»ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° int ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ int, Π΅Π³ΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ:
myfunc(a, b, Ρ, d); /* ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ int*/
struct my_struct *Π°, *b;
double Ρ;
/* ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° d*/
{
...
}
Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ½ΠΎΠ²Π° ΡΠΎΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ: 'j = my_func(-1, -2 , 0);'. Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Π‘ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ Π²Ρ (ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ, ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ) ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ my_func() ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΡΡΠ΄Π½ΠΎ ΡΡΡΡΠ°Π½ΠΈΠΌΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ), ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Unix lint.
ΠΠΎΡΡΠΎΠΌΡ, Ρ ΠΎΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΎΡΡ ΠΎΠ΄ΠΎΠΌ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΡΡΠΈΡΠ°Π»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π°ΠΆΠ½ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π±Π΅Π· Π½Π΅Π΅, ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ½Π° Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² ΡΠ·ΡΠΊ.
ΠΠ»Ρ Π‘ ΡΡΠ°Π½Π΄Π°ΡΡΠ° 1990 Π³. ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΡΡΡΠΎΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ. ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ·-Π·Π° ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π‘ 1999 Π³.[18] ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Β«Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ intΒ» Π±ΡΠ»ΠΎ ΡΠ±ΡΠ°Π½ΠΎ; ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ, Π° Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ·ΡΠ²Π°Π»Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π±ΡΠ»Π° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π°, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π‘ ΡΠΎΠ·Π΄Π°Π» Π±Ρ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ int. Π‘ ΡΡΠ°Π½Π΄Π°ΡΡΠ° 1999 Π³. Π΄Π΅Π»Π°Π» ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΠ², ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ . Π‘ ΡΡΠ°Π½Π΄Π°ΡΡΠ° 1999 Π³. Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Β«Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΒ».
ΠΡΡΠ³ΠΈΠΌΠΈ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π‘ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ const, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· Π‘++, ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ volatile, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΠΊΠΎΠΌΠΈΡΠ΅Ρ. ΠΠ»Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ Π²Π΅ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠ² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ»Ρ ΠΊΠΎΠ΄Π° V7, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅, ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ Π΅ΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½, ΠΈ ΠΊΠ°ΠΊ Π±Ρ Π²Ρ Π΅Π³ΠΎ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΠ°ΠΌΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ ΠΊΠΎΠ΄.
Π₯ΠΎΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ Π‘ 1999 Π³. Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π²Π΅ΡΡΠΈΠΈ 1990 Π³., ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° 1990 Π³, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ C99 Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠΊΠ° ΡΠΈΠΏΠΈΡΠ½ΡΠΌΠΈ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΠΊΠΎΠ΄ C89 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° C99, Π° Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ C99 Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ Π½Π°ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ API Linux/Unix.
1.4. ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ GNU Π»ΡΡΡΠ΅
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ GNU ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ GNU?[19] Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ GNU Β«Π»ΡΡΡΠ΅Β» ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ (ΠΏΠ»Π°ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌ) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ? ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ (General Public License β GPL), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ GNU. ΠΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΡΠΈΠ½Π°, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ: Β«ΠΠ°ΠΉΡΠ΅ GNU-Π²Π΅ΡΡΠΈΡ xyz, ΠΎΠ½Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅Β». ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ GNU Π² ΠΎΠ±ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎ, ΠΈΠΌΠ΅Π΅Ρ Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡΡ Unix. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ GNU.
Β«Π‘ΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ GNUΒ» (GNU Coding Standards) ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU. ΠΠ½ΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ΄ ΡΠ΅ΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ GNU Coding Standards ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.gnu.org/prep/standards.html. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΎΠ½Π»Π°ΠΉΠ½-Π²Π΅ΡΡΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ .
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π»ΠΈΡΡ ΡΠ΅ ΡΠ°ΡΡΠΈ GNU Coding Standards, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
1.4.1. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠ»Π°Π²Π° 3 GNU Coding Standards ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π§Π΅ΡΡΡΡΠΌΡ Π³Π»Π°Π²Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ (ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌΠΈ ΠΈ Ρ Unix), ΡΠ·ΡΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, Β«Π½ΠΈΡΠ΅Π³ΠΎΒ»), ΠΈ ΡΠΌΡΡΠ» Β«ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈΒ».
ΠΠ°ΠΆΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π‘ ΠΈ POSIX, Π° ΡΠ°ΠΊΠΆΠ΅, Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, Ρ Berkley Unix. ΠΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ. ΠΠ±ΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ISO ΠΈΠ»ΠΈ POSIX.
ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ GNU ΡΠ²Π»ΡΠ΅ΡΡΡ Π‘, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΠ·ΡΠΊ. Π ΠΌΠΈΡΠ΅ Unix ΡΡΠ°Π½Π΄Π°ΡΡ Π‘ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½, Π½ΠΎ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π‘, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ. Π₯ΠΎΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ Π‘ ΠΏΠ΅ΡΠ΅Π΄ Π‘++, C++ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠΆΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±ΡΡΠ΅Π½. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° GNU, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π‘++, ΡΠ²Π»ΡΠ΅ΡΡΡ groff (GNU troff). ΠΠ°Ρ ΠΎΠΏΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Ρ GCC, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ Π‘++, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° groff Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ.