Thu, 29 Jan 2004 17:19:22 +0300 Kirill Frolov wrote to Harry Zhurov:
YK>>> éÍÅÎÎÏ Ï ÜÔÏÍ Ñ É ÇÏ×ÏÒÉÌ, ÞÔÏ ÐÉÓÁÔØ ÎÁÄÏ _ÁËËÕÒÁÔÎÏ_. HZ>> ôÙ, ËÁË ×ÓÑËÉÊ ÍÕÖÉË, ÚÁÄÎÉÍ ÕÍÏÍ ËÒÅÐÏË! ô.Å. ÏÂßÑÓÎÑÔØ ÐÒÉÞÉÎÕ HZ>> ÐÒÏÉÚÏÛÅÄÛÅÇÏ ÔÙ ÇÏÒÁÚÄ!! HÏ ÅÓÔØ Õ×ÅÒÅÎÎÏÓÔØ, ÞÔÏ ËÏÇÄÁ ×ÏÚÎÉËÎÕÔ ÇÒÁÂÌÉ HZ>> Ó HZ>> ÍÁËÒÏÓÁÍÉ, ÔÏ ÔÙ, ËÁË É ×ÓÅ, ÂÌÁÇÏÐÏÌÕÞÎÏ ÎÁÓÔÕÐÉÛØ ÎÁ ÎÉÈ!!!
HZ>> ÷ ÕÞÅÂÎÉËÁÈ ÎÅ ÜÔÏÔ ÐÒÉÍÅÒ ÐÒÉ×ÏÄÉÔÓÑ, Á ÐÒÉÍÅÒ Ó ÎÉÚËÏÐÒÉÏÒÉÔÅÔÎÙÍÉ HZ>> ÏÐÅÒÁÃÉÑÍÉ ÔÉÐÁ: HZ>> #define doubling(x) x+x HZ>> ÇÄÅ ×Ï ÉÚÂÅÖÁÎÉÅ ÐÒÏÂÌÅÍ ÒÅËÏÍÅÎÄÕÀÔ ÓËÏÂËÉ ÉÓÐÏÌØÚÏ×ÁÔØ. á ÔÕÔ HZ>> ÕÍÎÏÖÅÎÉÅ. HZ>> üÔÏ ÒÁÚ.
KF> á × ÕÞÅÂÎÉËÁÈ ÎÁÐÉÓÁÎÏ, ÞÔÏ ÍÁËÒÏÓÙ ôåëóô ïâòáâáôù÷áàô, Á ÎÅ C-ÛÎÙÅ KF> ×ÙÒÁÖÅÎÉÑ,
áÈ, ÓÐÉÓÉÂÏ ÔÅÂÅ ÏÇÒÏÍÎÏÅ, Á ÔÏ Ñ ÎÅ ÚÎÁÌ!
KF> É ÞÔÏ Ï ÜÔÏÍ ÎÕÖÎÏ ÈÏÒÏÛÏ ÄÕÍÁÔØ ÐÒÉ ËÁÖÄÏÍ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÍÁËÒÏÓÁ? ÷ÒÏÄÅ KF> ÄÁ. ïÔÓÀÄÁ É ×ÓÅ ÇÒÁÂÌÉ.
üÔÏ ôù íîå ÒÁÓÓËÁÚÙ×ÁÅÛØ? ôÙ ÔÒÅÄ-ÔÏ ×ÅÓØ ÞÉÔÁÌ? éÌÉ ÔÁË, ÐÅÒ×ÕÀ ÍÅÓÓÁÇÕ ÕÈ×ÁÔÉÌ? > :-}
HZ>> int b = SQUARE(f()); HZ>> ðÏÌÕÞÉÛØ ÓÏ×ÓÅÍ ÎÅ ÔÏ, ÞÔÏ ÏÖÉÄÁÅÛØ! é ÇÒÁÂÌÅÊ ÔÁËÉÈ ÔÁÍ ÍÏÒÅ. é HZ>> ÚÁÍÁÅÛØÓÑ
KF> ñ ÐÏÞÅÍÕ-ÔÏ ÏÖÉÄÁÀ ÐÏÄÓÔÁÎÏ×ËÉ ×ÍÅÓÔÏ SQUARE ÞÅÇÏ ÔÁÍ × define KF> ÐÏÎÁÐÉÓÁÎÏ. åÓÌÉ ËÔÏ-ÔÏ ÏÖÉÄÁÅÔ, ÞÔÏ ÍÁËÒÏÓ ÄÏÌÖÅÎ ×ÅÓÔÉ ÓÅÂÑ ËÁË KF> C-×ÙÒÁÖÅÎÉÅ -- ÏÎ ÎÅÐÒÁ×ÉÌØÎÏ ÜÔÏ ÄÕÍÁÅÔ...
é Ñ Ï ÜÔÏÍ Ô×ÅÒÖÕ! îÏ ×ÙÇÌÑÄÉÔ ÍÁËÒÏÓ ËÁË ÆÕÎËÃÉÑ, É ÎÅ ÑÓÎÏ, ÇÌÑÄÑ ÎÁ ×ÙÒÁÖÅÎÉÅ, ÞÔÏ ÔÁÍ ÂÕÄÅÔ ÎÁ ×ÙÈÏÄÅ! üÔÏ ÔÙ ÔÕÔ ÏÒÅÌ ÇÏÒÄÙÊ - ÐÒÉÞÉÎÕ ÐÏÎÑÌ! á ËÏÇÄÁ Õ ÔÅÂÑ ÂÕÄÅÔ ÔÅËÓÔÉË ÐÏÂÏÌØÛÅ, ÄÁ ÅÝÅ É ÎÅ Ó×ÏÊ (ÉÌÉ Ó×ÏÊ, ÎÏ ÎÁÐÉÓÁÎÎÙÊ ÄÁ×ÎÅÎØËÏ, ÔÁË ÞÔÏ ÔÙ ÕÖÅ É ÐÏÍÎÉÛØ ÔÏÎËÏÓÔÅÊ), ÔÏ ÇÒÁÂÌÉ ÔÅÂÅ ÓÔÕËÎÕÔ ÐÏ ÌÂÕ ÎÅ ÍÅÎÅÅ ÂÏÌØÎÏ, ÞÅÍ ÌÀÂÏÍÕ ÄÒÕÇÏÍÕ.
HZ>> á ÇÄÅ ÔÁÍ ×ÙÒÁÖÅÎÉÅ Ó side effects? éÎËÒÅÍÅÎÔ ÁÒÇÕÍÅÎÔÁ, ÞÔÏ ÌÉ? ôÕÔ HZ>> ×ÓÅ HZ>> ÎÏÒÍÁÌØÎÏ É ÞÅÔËÏ ÏÐÒÅÄÅÌÅÎÏ Ó ÔÏÞËÉ ÚÒÅÎÉÑ ÑÚÙËÁ - ÓÏÚÄÁÅÔÓÑ ËÏÐÉÑ 'b', HZ>> ÐÏÔÏÍ HZ>> üÔÏÔ ËÏÄ ÓÏ×ÅÒÛÅÎÎÏ ÌÅÇÁÌÅÎ, ÞÉÔÁÂÅÌÅÎ É ÕÄÏÂÅÎ. é ÚÁÄÎÉÃÁ ×ÏÚÎÉËÁÅÔ HZ>> ÔÏÌØËÏ HZ>> ÉÚ-ÚÁ ÍÁËÒÏÓÁ.
KF> íÁËÒÏÓ ÎÉ × ޣÍ ÎÅ ×ÉÎÏ×ÁÔ. åÍÕ ÓËÁÚÁÌÉ ÚÁÍÅÎÉÔØ xxx ÎÁ yyy ÏÎ ÜÔÏ É KF> ÓÄÅÌÁÌ...
íÁËÒÏÓ ÎÉ × ÞÅÍ ÎÅ ×ÉÎÏ×ÁÔ! ëÁË ÏÎ ÍÏÖÅÔ ÂÙÔØ ×ÉÎÏ×ÁÔ, ÅÓÌÉ ÏÎ ÎÅ ÄÌÑ ÜÔÏÇÏ - ÎÅ ÄÌÑ ÒÅÁÌÉÚÁÃÉÉ ÆÕÎËÃÉÊ. é ÅÓÌÉ ÒÁÎØÛÅ ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÂÙÌÏ ÏÐÒÁ×ÄÁÎÏ, ÔÏ ÔÅÐÅÒØ, ËÏÇÄÁ ÕÖÅ ÄÁÖÅ É ÓÉÛÎÙÊ ÓÔÁÎÄÁÒÔ ×ËÌÀÞÁÅÔ × ÓÅÂÑ ÉÎÌÁÊÎÙ, ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÁËÒÏÓÏ× ÐÒÉ ÄÏÓÔÕÐÎÙÈ ÉÎÌÁÊÎÁÈ ÎÉÞÅÍ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÏÐÒÁ×ÄÁÎÏ (ÎÏ ÍÏÖÅÔ ÂÙÔØ ÏÂßÑÓÎÅÎÏ).
KF> á side effects ÔÁÍ (x++) ÍÏÖÅÔ ÂÙÔØ. ðÏÒÑÄÏË ×ÙÞÉÓÌÅÎÉÑ ÁÒÇÕÍÅÎÔÏ× ÆÕÎËÃÉÉ KF> ÎÅ ÏÐÒÅÄẠ̊Î. ÷ÏÔ ÜÔÏ ÇÒÁÂÌÉ:
KF> char *x; KF> f(*x++, *x++, *x++, *x++); KF> // x[0] ÓËÏÒÅÊ ×ÓÅÇÏ ÏËÁÖÅÔÓÑ × _ÐÏÓÌÅÄÎÅÍ_ ÁÒÇÕÍÅÎÔÅ...
üÔÏ ÎÁ ÇÒÁÂÌÉ, Á ÌÁÍÅÒÉÚÍ! ðÏÞÕ×ÓÔ×ÕÊ ÒÁÚÎÉÃÕ!! çÌÑÄÑ ÎÁ ÜÔÏ ×ÙÒÁÖÅÎÉÅ, Ñ ÓÒÁÚÕ ÚÎÁÀ, ÞÔÏ ÔÁË ÄÅÌÁÔØ ÎÅÌØÚÑ, Á ×ÏÔ × ×ÙÒÁÖÅÎÉÉ:
f(a, b++);
ÎÉËÁËÉÈ ÇÒÁÂÌÅÊ ÎÅÔ, É ÐÏÒÑÄÏË ÄÅÊÓÔ×ÉÊ ÞÅÔËÏ ÏÐÒÅÄÅÌÅÎ (ÄÌÑ ÔÅÈ, ËÔÏ ÚÎÁÅÔ ÐÒÁ×ÉÌÁ ÑÚÙËÁ)! ô.Þ. ÎÅ ÎÁÄÏ ÔÕÔ ÐÕÒÇÕ ÍÅÓÔÉ!
KF> ÷ÐÒÏÞÅÍ, Ï ÜÔÏ ÐÒÏÓÔÏ ÎÕÖÎÏ ÚÎÁÔØ.
YK>>> int c = MAX(a, b); YK>>> b++; HZ>> ÷ÏÏÂÝÅ-ÔÏ, ÎÅ ×ÓÅÇÄÁ ÍÏÖÎÏ ÔÁË ÓÄÅÌÁÔØ - 'b' ÓÁÍÁ ÐÏ ÓÅÂÅ ÍÏÖÅÔ HZ>> ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÎÕÔÒÉ ÆÕÎËÃÉÉ, ËÕÄÁ ÐÅÒÅÄÁÎÏ ÅÅ ÚÎÁÞÅÎÉÅ, Ô.Þ. ÜÔÏ HZ>> ÎÅÐÏÌÎÏÃÅÎÎÁÑ ÚÁÍÅÎÁ.
KF> íáëòïó üôï Hå æõHëãéñ.
ñ üôï, ðï÷åòø íîå, îå èõöå ô÷ïåçï úîáà!!! ðïüôïíõ é çï÷ïòà, þôï éóðïìøúï÷áôø åçï ÷ ëáþåóô÷å æõîëãéé ëòáêîå îåöåìáôåìøîï, ô.ë. þòå÷áôï ûéûëáíé!!!
KF> åçï õíùûìåHHï úáçìá÷Hùíé âõë÷áíé úáðéóáìé, þôïâù óòáúõ âùìï üôï úáíåôHï.
üôï þôï, ðòá÷éìï ñúùëá ôáëïå - íáëòïóù úáçìá÷îùíé âõë÷áíé ðéóáôø? üôï óôéìø, á óôéìø, ëáë ôáëï÷ïê, îéëáëïê âåúïðáóîïóôé îå çáòáîôéòõåô. ôù åçï ðòéäåòöé÷áåûøóñ, á ëôï-ôï îåô, ÷ïô é ðïìõþéûø ÷ òáâïôå ó åçï éóèïäîéëáíé ïþåòåäîõà ûéûëõ!!!
HZ>> ÷ ÏÂÝÅÍ, Ô×ÏÉ ×ÏÚÒÁÖÅÎÉÑ ÄÁÖÅ ÎÁ ÏÔÍÁÚËÉ ÎÅ ÔÑÎÕÔ.
KF> ô×ÏÉ ÔÏÖÅ. åÓÌÉ Ñ Ó×ÏÊ ÔÅËÓÔ C ÐÒÏÇÒÁÍÍÙ ÎÁÞÎÕ Åݣ ËÁËÉÍ ÄÒÕÇÉÍ KF> ÍÁËÒÏ-ÐÒÏÃÅÓÓÏÒÏÍ ÏÂÒÁÂÁÔÙ×ÁÅÔØ, ÎÁÐÒÉÍÅÒ m4, ÔÏ ËÁËÉÅ ÍÏÇÕÔ ÂÙÔØ ÐÒÅÔÅÎÚÉÉ KF> Ë ÓÁÍÏÍÕ C, ÅÓÌÉ Õ ÍÅÎÑ ×ÓÅ ÇÒÁÂÌÉ × ÍÁËÒÏÓÁÈ ÓÏÓÒÅÄÏÔÏÞÅÎÙ?
îÉËÁËÉÈ ÐÒÅÔÅÎÚÉÊ! ñ, ËÁË ÒÁÚ, É Ô×ÅÒÖÕ, ÞÔÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÁËÒÏÓÏ× ÎÕÖÎÏ ÉÓËÌÀÞÁÔØ ÐÒÉ ÐÅÒ×ÏÊ ÖÅ ×ÏÚÍÏÖÎÏÓÔÉ ÐÏ ÅÄÉÎÓÔ×ÅÎÎÏÊ ÐÒÉÞÉÎÅ - ÓËÒÙÔÙÅ ÐÏÔÅÎÃÉÁÌØÎÙÅ É ÍÅÒÚËÉÅ ÇÒÁÂÌÉ!
KF> þÅÇÏ ËÉÌÏÍÅÔÒÙ Ó ËÉÌÏÇÒÁÍÍÁÍÉ, ÔÏ ÅÓÔØ ÍÁËÒÏÓÙ Ó ÆÕÎËÃÉÑÍÉ ÒÁ×ÎÑÔØ?
ôÁËÏÅ ÏÝÕÝÅÎÉÅ, ÞÔÏ ×ÅÓØ ÔÒÅÄ ÔÙ ÎÅ ÞÉÔÁÌ: ÐÙÔÁÅÛØÓÑ ÍÎÅ ÚÁÑÓÎÉÔØ ÔÏ, Ï ÞÅÍ Ñ ÓÁÍ ÐÉÛÕ.
HZ>> ô.Å. ÉÈ ÌÕÞÛÅ ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÉ ÌÀÂÏÊ ×ÏÚÍÏÖÎÏÓÔÉ.