C++
Äëÿ ÷åãî ñëóæèò ïóñòîé ôàéë stdafx.h?
Êàê îðãàíèçîâàíà ðàáîòà ñ ìàññèâàìè â Ñ++?
Ïî÷åìó äëÿ îáðàùåíèÿ ê ìàññèâàì èñïîëüçóþòñÿ íå êâàäðàòíûå ñêîáêè, à êðóãëûå?
Áóäåò ëè ïàêåò ALGLIB ðàáîòàòü â 64-áèòíîé ñðåäå?

Delphi
Ïî÷åìó âåçäå âìåñòî öèêëà for èñïîëüçóåòñÿ öèêë while?
Äëÿ ÷åãî ñëóæèò ôóíêöèÿ DynamicArrayCopy?

Âîïðîñû ïî àëãîðèòìàì íà Visual Basic
Íà êàêóþ èìåííî âåðñèþ ÿçûêà Visual Basic òðàíñëèðóþòñÿ àëãîðèòìû?
Ïðîãðàììû ñ ñàéòà áóäóò ðàáîòàòü â VB.NET?
Ïî÷åìó â íåêîòîðûõ ïðîãðàììàõ èñïîëüçóåòñÿ îïåðàòîð goto?

Îáùèå âîïðîñû ïî èñõîäíûì êîäàì
Íàñêîëüêî ïàêåò ALGLIB íàäåæåí?
×òî òàêîå áèáëèîòåêà AP?
×òî òàêîå áèáëèîòåêà ABLAS?
×åì àðõèâ alglib.stable îòëè÷àåòñÿ îò àðõèâà alglib.full?
×òî îáîçíà÷àþò ñòàòóñû ìîäóëåé (experimental, development, stable, obsolete)?
Ïî÷åìó íåêîòîðûå àëãîðèòìû (íàïðèìåð, ìåòîäû îïòèìèçàöèè) èñïîëüçóþò îáðàòíóþ êîììóíèêàöèþ âìåñòî óêàçàòåëåé íà ôóíêöèè, äåëåãàòîâ èëè äðóãèõ ñðåäñòâ ìîåãî ÿçûêà ïðîãðàììèðîâàíèÿ?

Îáùèå âîïðîñû ïî ïðîåêòó
 ÷åì öåëü ïðîåêòà ALGLIB?
×åì ïðîåêò ALGLIB îòëè÷àåòñÿ îò äðóãèõ àíàëîãè÷íûõ ïðîåêòîâ?
Êòî àâòîðû ïðîåêòà?
Êàêîå îòíîøåíèå ïðîåêò èìååò ê ñàéòàì alglib.chat.ru è alglib.dore.ru?
Êàêîå îòíîøåíèå ïðîåêò èìååò ê ïðîåêòó MANUAL.RU?
×òî òàêîå "àëãîðèòìè÷åñêèé Ïàñêàëü" (AlgoPascal)?
×òî òàêîå "ðåäàêòîð áëîê-ñõåì"?
À ãäå àëãîðèòìû äëÿ øèôðîâàíèÿ, ðèñîâàíèÿ ãðàôèêîâ, êàðòèíîê â OpenGL è ò.ä.?


C++

Äëÿ ÷åãî ñëóæèò ïóñòîé ôàéë stdafx.h?

MSVC è íåêîòîðûå äðóãèå êîìïèëÿòîðû òðåáóþò, ÷òîáû â êîäå ïðîãðàììû ïðèñóòñòâîâàëà äèðåêòèâà #include <stdafx.h>, ñëóæàùàÿ äëÿ óïðàâëåíèÿ ïðåêîìïèëèðîâàííûìè çàãîëîâêàìè, è àâòîìàòè÷åñêè ñîçäàþò ôàéë stfafx.h ïðè ãåíåðàöèè íîâîãî ïðîåêòà. Îäíàêî íåêîòîðûå êîìïèëÿòîðû (íàïðèìåð, BCB) èñïîëüçóþò äðóãèå ñðåäñòâà äëÿ óïðàâëåíèÿ ïðåêîìïèëèðîâàííûìè çàãîëîâêàìè. Ïðè ýòîì äèðåêòèâà #include <stdafx.h> ñàìà ïî ñåáå íå ìåøàåò èõ ðàáîòå, îäíàêî îòñóòñòâèå ôàéëà ñ òàêèì èìåíåì ïðèâîäèò ê îøèáêå êîìïèëÿöèè. Ïóñòîé ôàéë stfafx.h ñëóæèò äëÿ òîãî, ÷òîáû èçáåæàòü ýòîé îøèáêè. Åñëè âàøåé ñðåäîé ðàçðàáîòêè óæå ñîçäàí ôàéë ñ òàêèì èìåíåì, îñòàâüòå åãî áåç èçìåíåíèé.

Êàê îðãàíèçîâàíà ðàáîòà ñ ìàññèâàìè â Ñ++?

Ïîñêîëüêó ïîääåðæêà äèíàìè÷åñêèõ ìàññèâîâ ñî ñòîðîíû ÿçûêà Ñ++ îòñóòñòâóåò (update: ÿ çíàþ ïðî óêàçàòåëè è äèíàìè÷åñêîå âûäåëåíèå ïàìÿòè, íî ýòî íå ñîâñåì òî, ÷òî íåîáõîäèìî), òî áûëè ðàçðàáîòàíû êëàññû-øàáëîíû äëÿ ðàáîòû ñ îäíîìåðíûìè è äâóõìåðíûìè ìàññèâàìè. Íåîáõîäèìûé èñõîäíûé êîä è îïèñàíèå íàõîäÿòñÿ â ñòàíäàðòíîé áèáëèîòåêå AP, êîòîðàÿ ïðèëàãàåòñÿ ê êàæäîìó àðõèâó ñ èñõîäíèêàìè íà C++. Îáðàòèòå âíèìàíèå, ÷òî ìàññèâû â ýòîé áèáëèîòåêå íà÷èíàþò íóìåðàöèþ ýëåìåíòîâ íå ñ 0, à ñ ïðîèçâîëüíîãî ÷èñëà ïî âûáîðó ïðîãðàììèñòà.

Ïî÷åìó äëÿ îáðàùåíèÿ ê ìàññèâàì èñïîëüçóþòñÿ íå êâàäðàòíûå ñêîáêè, à êðóãëûå?

Ïðåäñòàâüòå ñåáå, ÷òî âû îáðàùàåòåñü ê ýëåìåíòó ìàòðèöû à â ïðèâû÷íîé íîòàöèè: a[x][y] âìåñòî a(x,y). Íà ñàìîì äåëå çäåñü ñïðÿòàí íå îäèí âûçîâ îïåðàòîðà èíäåêñà, à äâà. Ïåðâûé èç íèõ - èíäåêñàöèÿ ìàòðèöû a ïî x, êîòîðàÿ âîçâðàùàåò ññûëêó íà êàêóþ-òî âðåìåííóþ ñòðóêòóðó, îïèñûâàþùóþ ñòðîêó ìàòðèöû. Âòîðîé - èíäåêñàöèÿ âðåìåííîé ñòðóêòóðû ïî y, êîòîðàÿ âîçâðàùàåò ññûëêó íà òðåáóåìûé ýëåìåíò. Îáðàùåíèå ÷åðåç ïåðåãðóçêó êðóãëûõ ñêîáîê ñóùåñòâåííî ýôôåêòèâíåå, ïîñêîëüêó íå òðåáóåòñÿ ñîçäàíèå âðåìåííûõ ñòðóêòóð.

Áóäåò ëè ïàêåò ALGLIB ðàáîòàòü â 64-áèòíîé ñðåäå?

Ïàêåò ALGLIB íå òåñòèðîâàëñÿ â 64-áèòíîé ñðåäå.

Âìåñòå ñ òåì, ñàì ïàêåò è èñïîëüçóåìàÿ èì áèáëèîòåêà AP/C++ íå ñîäåðæàò êîäà, â êîòîðîì ÿâíî âûäâèãàëèñü áû êàêèå-òî ïðåäïîëîæåíèÿ îòíîñèòåëüíî õàðàêòåðà ñðåäû, â êîòîðîé îñóùåñòâëÿåòñÿ ðàáîòà. Òàêèì îáðàçîì, êîìïèëÿöèÿ è èñïîëüçîâàíèå ïàêåòà ALGLIB â 64-áèòíîé ñðåäå òåîðåòè÷åñêè íå äîëæíû âûçûâàòü ïðîáëåì, åñëè íå èñïîëüçóþòñÿ äîïîëíèòåëüíûå áèáëèîòåêè (òàêèå, êàê ABLAS, êîòîðàÿ íà ìîìåíò íàïèñàíèÿ ýòèõ ñòðîê ñóùåñòâóåò òîëüêî â 32-áèòíîì âàðèàíòå).

Delphi

Ïî÷åìó âåçäå âìåñòî öèêëà for èñïîëüçóåòñÿ öèêë while?

Ïðè÷èíîé òîìó íåêîòîðûå îñîáåííîñòè ðåàëèçàöèè öèêëà for â Delphi. Åñëè öèêë íå âûïîëíÿëñÿ íå ðàçó, òî âî ìíîãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ óïðàâëÿþùàÿ ïåðåìåííàÿ öèêëà ñîäåðæèò ñòàðòîâîå çíà÷åíèå.  Delphi åñëè öèêë íå âûïîëíÿëñÿ íå ðàçó, òî óïðàâëÿþùàÿ ïåðåìåííàÿ öèêëà íå èçìåíÿåòñÿ. Îäíàæäû ÿ âñòðåòèë èñõîäíèê, â êîòîðîì ýòà ðàçíèöà èãðàëà áîëüøóþ ðîëü, è ðåøèë çàìåíèòü öèêë for â ïðîãðàììàõ íà Delphi öèêëîì while, êîòîðûé ïîëíîñòüþ ñîâïàäàåò ïî ñâîåìó ïîâåäåíèþ ñ äðóãèìè ÿçûêàìè.

Äëÿ ÷åãî ñëóæèò ôóíêöèÿ DynamicArrayCopy?

 Delphi äèíàìè÷åñêèå ìàññèâû ÿâëÿþòñÿ ññûëî÷íûìè òèïàìè, ò.å. åñëè ïàðàìåòð-ìàññèâ ïåðåäàåòñÿ ïî çíà÷åíèþ, òî ïðè ýòîì íå ïðîèñõîäèò êîïèðîâàíèÿ ìàññèâà. Äëÿ ýìóëÿöèè ïåðåäà÷è ïàðàìåòðà-ìàññèâà ïî çíà÷åíèþ èñïîëüçóåòñÿ ôóíêöèÿ DynamicArrayCopy. Îíà ïðèíèìàåò â êà÷åñòâå àðãóìåíòà äèíàìè÷åñêèé ìàññèâ è âîçâðàùàåò êîïèþ ýòîãî ìàññèâà. Ïðèñâàèâàíèå âèäà A:=DynamicArrayCopy(A) çàìåíÿåò ññûëêó íà îðèãèíàëüíûé ìàññèâ ññûëêîé íà åãî êîïèþ.

Âîïðîñû ïî àëãîðèòìàì íà Visual Basic

Íà êàêóþ èìåííî âåðñèþ ÿçûêà Visual Basic òðàíñëèðóþòñÿ àëãîðèòìû?

Àëãîðèòìû òðàíñëèðóþòñÿ íà VBA, îäíàêî â öåëîì ñîâìåñòèìû ñ VB6.

Ïðîãðàììû ñ ñàéòà áóäóò ðàáîòàòü â VB.NET?

Áåç ïîðòèðîâàíèÿ - íåò.

Ïî÷åìó â íåêîòîðûõ ïðîãðàììàõ èñïîëüçóåòñÿ îïåðàòîð goto?

Âî ìíîãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ åñòü óïðàâëÿþùèé îïåðàòîð continue, íî â VB îí îòñóòñòâóåò. ß íå çíàþ, ÷åì îáúÿñíèòü ýòîò ôàêò. Òàê âîò, â ïðîãðàììàõ íà AlgoPascal ýòîò îïåðàòîð âðåìÿ îò âðåìåíè ïîÿâëÿåòñÿ. Îïåðàòîð goto èñïîëüçóåòñÿ â êà÷åñòâå çàìåíû åìó, îñóùåñòâëÿÿ äîñðî÷íûé ïåðåõîä ê î÷åðåäíîé èòåðàöèè öèêëà.

Îáùèå âîïðîñû ïî èñõîäíûì êîäàì

Íàñêîëüêî ïàêåò ALGLIB íàäåæåí?

Äëÿ îáåñïå÷åíèÿ íàäåæíîñòè ïàêåòà ALGLIB ïðåäïðèíèìàþòñÿ ñëåäóþùèå ìåðû:

×òî òàêîå áèáëèîòåêà AP?

Áèáëèîòåêà AP - ýòî îáùåå íàçâàíèå íàáîðà áèáëèîòåê íà íåñêîëüêèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, ðåøàþùèõ íèçêîóðîâíåâûå çàäà÷è, ïðèâÿçàííûå ê ñïåöèôèêå êîíêðåòíîãî ÿçûêà ïðîãðàììèðîâàíèÿ. Áèáëèîòåêà ðåøàåò òàêèå çàäà÷è, êàê ðàáîòà ñ äèíàìè÷åñêèìè îäíîìåðíûìè è ìíîãîìåðíûìè ìàññèâàìè â ÿçûêàõ, íå ïîääåðæèâàþùèõ ýòîò òèï äàííûõ, ñîäåðæèò ðåàëèçàöèè áàçîâûõ àëãîðèòìîâ ëèíåéíîé àëãåáðû è ò.ä. Áèáëèîòåêà ðàñïðîñòðàíÿåòñÿ â âèäå èñõîäíûõ êîäîâ ïîä ëèöåíçèåé BSD. Áèáëèîòåêà àâòîìàòè÷åñêè ïðèêðåïëÿåòñÿ ê êàæäîìó àðõèâó ñ àëãîðèòìàìè, äîñòóïíîìó äëÿ ñêà÷èâàíèÿ ñ ñàéòà. Ïîñëåäíÿÿ âåðñèÿ áèáëèîòåêè äîñòóïíà äëÿ ñêà÷èâàíèÿ ïî àäðåñó http://alglib.sources.ru/translator/aplib.zip èëè http://www.alglib.net/translator/aplib.zip

×òî òàêîå áèáëèîòåêà ABLAS?

ABLAS - ýòî îïòèìèçèðîâàííàÿ ðåàëèçàöèÿ áàçîâûõ àëãîðèòìîâ ëèíåéíîé àëãåáðû, íàïèñàííàÿ íà àññåìáëåðå. ×òîáû èñïîëüçîâàòü ABLAS, äîñòàòî÷íî ñêîïèðîâàòü äèíàìè÷åñêè çàãðóæàåìûé ôàéë áèáëèîòåêè â îäíó èç ñèñòåìíûõ ïàïîê èëè â ïàïêó ñ ïðîãðàììîé, à òàêæå âêëþ÷èòü ïîääåðæêó ABLAS (êàê óêàçàíî â èíòñòðóêöèè ê áèáëèîòåêå). Ïðè çàïóñêå ïðîãðàììû, èñïîëüçóþùåé ïàêåò ALGLIB, îñóùåñòâëÿåòñÿ àâòîìàòè÷åñêîå îáíàðóæåíèå è ïîäêëþ÷åíèå áèáëèîòåêè ABLAS.  ñëó÷àå îòñóòñòâèÿ ABLAS èñïîëüçóåòñÿ ñòàíäàðòíàÿ ðåàëèçàöèÿ îïåðàöèé ëèíåéíîé àëãåáðû, íàïèñàííàÿ íà ÿçûêå âûñîêîãî óðîâíÿ. Íà ñòðàíèöå http://www.alglib.net/projects/ablas/ (èëè http://alglib.sources.ru/projects/ablas/ äëÿ ðóññêîé âåðñèè ñàéòà) íàõîäÿòñÿ îïèñàíèå áèáëèîòåêè, ñïèñîê ïîääåðæèâàåìûõ ïëàòôîðì è ÿçûêîâ ïðîãðàììèðîâàíèÿ, à òàêæå èñõîäíûå êîäû è ïðåêîìïèëèðîâàííûå äâîè÷íûå ôàéëû.

×åì àðõèâ alglib.stable îòëè÷àåòñÿ îò àðõèâà alglib.full?

Àðõèâ, ïîìå÷åííûé, êàê «stable», ñîäåðæèò òîëüêî ñòàáèëüíûå ìîäóëè (ñòàòóñ «stable»). Àðõèâ, ïîìå÷åííûé, êàê «full», äîïîëíèòåëüíî âêëþ÷àåò experimental- è development-ìîäóëè.

×òî îáîçíà÷àþò ñòàòóñû ìîäóëåé (experimental, development, stable, obsolete)?

Ìîäóëè, âõîäÿùèå â ñîñòàâ ALGLIB, ìîãóò èìåòü ðàçëè÷íûé ñòàòóñ â çàâèñèìîñòè îò òîãî, â êàêîé ñòàäèè æèçíåííîãî öèêëà îíè íàõîäÿòñÿ:

Ïî÷åìó íåêîòîðûå àëãîðèòìû (íàïðèìåð, ìåòîäû îïòèìèçàöèè) èñïîëüçóþò îáðàòíóþ êîììóíèêàöèþ âìåñòî óêàçàòåëåé íà ôóíêöèè, äåëåãàòîâ èëè äðóãèõ ñðåäñòâ ìîåãî ÿçûêà ïðîãðàììèðîâàíèÿ?

Ìåòîäû îïòèìèçàöèè, èíòåãðèðîâàíèÿ è äðóãèå ïîäîáíûå ìåòîäû îáúåäèíÿåò îäíà îáùàÿ ÷åðòà. Îíè íóæäàþòñÿ â êàêîì-òî ñïîñîáå âû÷èñëèòü çíà÷åíèå îïðåäåëåííîé ïîëüçîâàòåëåì ôóíêöèè â îïðåäåëåííîé ìåòîäîì òî÷êå.

Ñàìûì óäîáíûì ñïîñîáîì ðåøèòü ýòó çàäà÷ó ÿâëÿåòñÿ ïåðåäà÷à â ìîäóëü óêàçàòåëÿ íà ôóíêöèþ. Îäíàêî âñïîìíèì, ÷òî ïàêåò ALGLIB íàïèñàí íà ïñåâäîêîäå, àâòîìàòè÷åñêè ïåðåâîäèìîì íà äðóãèå ÿçûêè ïðîãðàììèðîâàíèÿ. À â êàæäîì ÿçûêå ïðîãðàììèðîâàíèÿ åñòü ñâîé àíàëîã óêàçàòåëÿ íà ôóíêöèþ, ÷àñòî îòëè÷àþùèéñÿ îò ðåøåíèé, èñïîëüçóþùèõñÿ â äðóãèõ ÿçûêàõ. Ïðè ðàçðàáîòêå ïñåâäîêîäà, èñïîëüçóþùåãîñÿ â ALGLIB, â êàêîé-òî ìîìåíò ñòàëî ÿñíî, ÷òî äîáàâëåíèå â íåãî óêàçàòåëåé íà ôóíêöèè áóäåò î÷åíü çàòðóäíèòåëüíî – ïðîñòî èç-çà òîãî, ÷òî êàæäûé ÿçûê ïî-ðàçíîìó ðåàëèçóåò ýòó âîçìîæíîñòü. Èç-çà ýòîãî âûáîð áûë ñäåëàí â ïîëüçó äðóãîãî ðåøåíèÿ – îáðàòíîé êîììóíèêàöèè.

Îáùèå âîïðîñû ïî ïðîåêòó

 ÷åì öåëü ïðîåêòà ALGLIB?

Ñîçäàòü óäîáíóþ â èñïîëüçîâàíèè ìíîãîÿçûêîâóþ êîëëåêöèþ àëãîðèòìîâ äëÿ ðåøåíèÿ ïðîáëåì â îáëàñòè ÷èñëåííîãî àíàëèçà (â îñíîâíîì) è íåêîòîðûõ äðóãèõ çàäà÷.

×åì ïðîåêò ALGLIB îòëè÷àåòñÿ îò äðóãèõ àíàëîãè÷íûõ ïðîåêòîâ?

Ïàêåò ALGLIB:

Òåïåðü î òîì, ÷åì ALGLIB íå ÿâëÿåòñÿ è íå ñòàðàåòñÿ áûòü. ALGLIB:

Êòî àâòîðû ïðîåêòà?

Ïåðâàÿ âåðñèÿ áèáëèîòåêè àëãîðèòìîâ áûëà ñîçäàíà Âëàäèìèðîì Áûñòðèöêèì, è íà ïðîòÿæåíèè íåñêîëüêèõ ëåò îí â îäèíî÷êó ðàçâèâàë ñàéò. Âïîñëåäñòâèè îí óòðàòèë èíòåðåñ ê ñàéòó, è åãî ðàçâèòèåì ïî îáùåìó ñîãëàñèþ çàíÿëñÿ ÿ - Ñåðãåé Áî÷êàíîâ.

Êàêîå îòíîøåíèå ïðîåêò èìååò ê ñàéòàì alglib.chat.ru è alglib.dore.ru?

Ýòî çåðêàëà ðàííèõ âåðñèé ïðîåêòà, êîòîðûå ñåé÷àñ çàêðûòû.

Êàêîå îòíîøåíèå ïðîåêò èìååò ê ïðîåêòó MANUAL.RU?

Ýòîò ïðîåêò ïîìîã áèáëèîòåêå àëãîðèòìîâ íà îäíîì èç êëþ÷åâûõ ýòàïîâ ðàçâèòèÿ, ïðåäîñòàâèâ êà÷åñòâåííûé áåñïëàòíûé õîñòèíã è, ÷òî áîëåå öåííî, PHP-êîä äëÿ íîâîãî äâèæêà ñàéòà, à òàêæå ïîìîùü ïî ðÿäó äðóãèõ âîïðîñîâ.

×òî òàêîå "àëãîðèòìè÷åñêèé Ïàñêàëü" (AlgoPascal)?

AlgoPascal - ýòî ðàçðàáîòàííûé ñïåöèàëüíî äëÿ äàííîãî ïðîåêòà ÿçûê ïðîãðàììèðîâàíèÿ. Ïðîãðàììû íà ýòîì ÿçûêå îáðàáàòûâàþòñÿ ïðîãðàììîé-òðàíñëÿòîðîì, è çàòåì íà èõ îñíîâå ñòðîÿòñÿ èñõîäíèêè íà òðåáóåìîì ïîñåòèòåëþ ÿçûêå ïðîãðàììèðîâàíèÿ. Áîëåå ïîäðîáíîì îá ýòîì ìîæíî óçíàòü â ðàçäåëå "Î ñàéòå".

×òî òàêîå "ðåäàêòîð áëîê-ñõåì"?

Ýòî ïðîãðàììà, êîòîðàÿ ñëóæèò äëÿ ïðîñìîòðà è ðåäàêòèðîâàíèÿ áëîê-ñõåì. Ïåðâîíà÷àëüíî âñå àëãîðèòìû íà ñàéòå õðàíèëèñü â âèäå áëîê-ñõåì, íî çàòåì â êà÷åñòâå îñíîâíîãî ñïîñîáà ïðåäñòàâëåíèÿ áûë âûáðàí AlgoPascal, íà êîòîðûé áûëè ïåðåâåäåíû áëîê-ñõåìû. Òåì íå ìåíåå, ñòàðûå áëîê-ñõåìû îñòàëèñü íà ðóññêîé âåðñèè ñàéòà, õîòÿ èõ ïîääåðæêà áûëà ïðåêðàùåíà, äà è ñàì ðåäàêòîð ìîæåò îêàçàòüñÿ ïîëåçíûì ïîñåòèòåëÿì. Áîëåå ïîäðîáíîì îá ýòîì ìîæíî óçíàòü â ðàçäåëå "Î ñàéòå" è íà ñòðàíè÷êå ðåäàêòîðà áëîê-ñõåì.

À ãäå àëãîðèòìû äëÿ øèôðîâàíèÿ, ðèñîâàíèÿ ãðàôèêîâ, êàðòèíîê â OpenGL è ò.ä.?

Êàê óæå ãîâîðèëîñü, öåëü áèáëèîòåêè àëãîðèòìîâ - ñîçäàòü ìíîãîÿçûêîâóþ áèáëèîòåêó àëãîðèòìîâ â îáëàñòè ÷èñëåííîãî àíàëèçà. Çàäà÷è âðîäå óêàçàííûõ â îãëàâëåíèè ïîä ýòó êëàññèôèêàöèþ íå ïîïàäàþò. Äëÿ íåêîòîðûõ çàäà÷ äåëàåòñÿ èñêëþ÷åíèå, íî â öåëîì ó ïðîåêòà ÿðêî âûðàæåííàÿ ñïåöèàëèçàöèÿ.